165 lines
4.1 KiB
Bash
165 lines
4.1 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Functions to fetch languages.
|
|
#
|
|
|
|
LANGPACKSFOLDER='../../moodle-langpacks' # Langpacks will be downloaded here.
|
|
BUCKET='moodle-lang-prod'
|
|
MOODLEORG_URL='https://download.moodle.org/download.php/direct/langpack'
|
|
DEFAULT_LASTVERSION='4.2' # Update it every version.
|
|
|
|
# Checks if AWS is available and configured.
|
|
function check_aws {
|
|
if [ ! -z $AWS_SERVICE ]; then
|
|
return
|
|
fi
|
|
|
|
export AWS_SERVICE=1
|
|
|
|
aws --version &> /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
export AWS_SERVICE=0
|
|
echo 'AWS not installed. Check https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html for more info.'
|
|
return
|
|
fi
|
|
|
|
# In order to login to AWS, use credentials file or AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY vars.
|
|
if [ ! -f ~/.aws/credentials ] && ([ -z "$AWS_ACCESS_KEY_ID" ] || [ -z "$AWS_SECRET_ACCESS_KEY" ]); then
|
|
export AWS_SERVICE=0
|
|
echo 'AWS Cannot authenticate. Use aws configure or set the proper env vars.'
|
|
return
|
|
fi
|
|
}
|
|
|
|
function list_aws_files {
|
|
local folder="$1"
|
|
check_aws
|
|
|
|
if [ $AWS_SERVICE -eq 1 ]; then
|
|
export AWS_FOLDERS=`aws s3 ls s3://$BUCKET/$1`
|
|
else
|
|
export AWS_FOLDERS=[]
|
|
fi
|
|
}
|
|
|
|
# Get last version of Moodle to fetch latest languages.
|
|
function get_lang_version {
|
|
if [ ! -z "${LANGVERSION}" ]; then
|
|
return
|
|
fi
|
|
|
|
APP_VERSION=`jq -r '.versionname' ../moodle.config.json| cut -d. -f1-2`
|
|
if [ ! -z $APP_VERSION ]; then
|
|
export LANGVERSION=$APP_VERSION
|
|
echo "Using app version $LANGVERSION"
|
|
return
|
|
fi
|
|
|
|
list_aws_files ''
|
|
LANGVERSION=''
|
|
for folder in $AWS_FOLDERS; do
|
|
if [ $folder != 'PRE' ]; then
|
|
LANGVERSION=${folder/\//}
|
|
fi
|
|
done
|
|
|
|
if [ ! -z "${LANGVERSION}" ]; then
|
|
echo "Using last version $LANGVERSION detected"
|
|
return
|
|
fi
|
|
|
|
LANGVERSION=$DEFAULT_LASTVERSION
|
|
echo "Using default version $LANGVERSION"
|
|
}
|
|
|
|
# Create langfolder
|
|
function create_langfolder {
|
|
if [ ! -d $LANGPACKSFOLDER ]; then
|
|
mkdir $LANGPACKSFOLDER
|
|
fi
|
|
}
|
|
|
|
# Get language list from the installed ones (will not discover new translations).
|
|
function get_language_folders {
|
|
list_aws_files "$LANGVERSION/"
|
|
|
|
langs=""
|
|
for file in $AWS_FOLDERS; do
|
|
if [[ "$file" == *.zip ]]; then
|
|
file=${file/\.zip/}
|
|
langs+="$file "
|
|
fi
|
|
done
|
|
|
|
if [ -z "${langs}" ]; then
|
|
# Get language list from the installed ones (will not discover new translations).
|
|
echo "Fallback language list will only get current installation languages"
|
|
langs=`jq -r '.languages | keys[]' ../moodle.config.json`
|
|
fi
|
|
}
|
|
|
|
# Entry function to get a language file.
|
|
function get_language {
|
|
lang=$1
|
|
lang=${lang/-/_}
|
|
|
|
get_lang_version
|
|
|
|
create_langfolder
|
|
|
|
echo "Getting $lang language"
|
|
|
|
pushd $LANGPACKSFOLDER > /dev/null
|
|
|
|
curl -s $MOODLEORG_URL/$LANGVERSION/$lang.zip --output $lang.zip > /dev/null
|
|
size=$(du -k "$lang.zip" | cut -f 1)
|
|
if [ ! -n $lang.zip ] || [ $size -le 1 ]; then
|
|
echo "Wrong language name or corrupt file for $lang"
|
|
rm $lang.zip
|
|
|
|
popd > /dev/null
|
|
return
|
|
fi
|
|
|
|
rm -R $lang > /dev/null 2>&1> /dev/null
|
|
unzip -o -u $lang.zip > /dev/null
|
|
|
|
# This is the AWS version to get the language but right now it's slower.
|
|
# aws s3 cp s3://$BUCKET/$LANGVERSION/$lang.zip . > /dev/null
|
|
|
|
rm $lang.zip
|
|
popd > /dev/null
|
|
}
|
|
|
|
# Entry function to get all language files.
|
|
function get_languages {
|
|
suffix=$1
|
|
if [ -z $suffix ]; then
|
|
suffix=''
|
|
fi
|
|
|
|
get_lang_version
|
|
|
|
if [ -d $LANGPACKSFOLDER ]; then
|
|
lastupdate=`date -r $LANGPACKSFOLDER +%s`
|
|
currenttime=`date +%s`
|
|
ellapsedtime=$((currenttime - lastupdate))
|
|
if [ $ellapsedtime -lt 3600 ]; then
|
|
echo 'Recently updated, skip update languages'
|
|
return
|
|
fi
|
|
else
|
|
create_langfolder
|
|
fi
|
|
|
|
get_language_folders
|
|
|
|
for lang in $langs; do
|
|
get_language "$lang"
|
|
|
|
if [ ! -z $suffix ]; then
|
|
get_language "$lang$suffix"
|
|
fi
|
|
done
|
|
}
|