Blame autobuild/update-languages.sh

c70f84
#!/bin/bash
c70f84
c70f84
set -e
c70f84
c70f84
update_linguas() {
c70f84
    local DIR="$1"
c70f84
    local LINGUAS_FILE="$DIR/LINGUAS"
c70f84
    echo "update $LINGUAS_FILE"
c70f84
    ls -1 "$DIR"/*.po | while read FILE; do
c70f84
        basename -s .po "$FILE";
c70f84
    done > "$LINGUAS_FILE"
c70f84
}
c70f84
c70f84
firstword() {
c70f84
    echo "$1"
c70f84
}
c70f84
c70f84
read_linguas() {
c70f84
    local FILE="$1"
c70f84
    echo " - read $FILE"
c70f84
    while read LINE; do
c70f84
        local CODE="$(firstword $LINE)"
c70f84
        if [ ! -z "$CODE" ]; then
c70f84
            CODE_MAP[$CODE]="$CODE"
c70f84
            NAME_MAP[$CODE]=""
c70f84
            COMMENT_MAP[$CODE]=" <------- TODO: Set language name and remove this comment"
c70f84
        else
c70f84
            echo "$LINE" >> "$TMPFILE"
c70f84
        fi
c70f84
    done < "$FILE"
c70f84
}
c70f84
c70f84
update_languages_inc() {
c70f84
    local LANGUAGES_FILE="synfig-studio/src/languages.inc.c"
c70f84
    echo "update LANGUAGES_FILE"
c70f84
c70f84
    local TMPFILE="$LANGUAGES_FILE.process"
c70f84
    rm -f "$TMPFILE"
c70f84
c70f84
    declare -A CODE_MAP
c70f84
    declare -A NAME_MAP
c70f84
    declare -A COMMENT_MAP
c70f84
c70f84
    read_linguas "synfig-core/po/LINGUAS"
c70f84
    read_linguas "synfig-studio/po/LINGUAS"
c70f84
c70f84
    echo " - read $LANGUAGES_FILE"
c70f84
    while read LINE; do
c70f84
        local COMMENT="$(echo "$LINE" | sed "s|//|#|" | cut -d \# -f 2- -s)"
c70f84
        local SUBLINE="$(echo "$LINE" | sed "s|//|#|" | cut -d \# -f 1)"
c70f84
        local CODE="$(echo "$SUBLINE" | cut -d \" -f 2)"
c70f84
        local NAME="$(echo "$SUBLINE" | cut -d \" -f 4)"
c70f84
        if [ ! -z "$CODE" ] || [ ! -z "$NAME" ]; then
c70f84
            CODE_MAP[$CODE]="$CODE"
c70f84
            NAME_MAP[$CODE]="$NAME"
c70f84
            COMMENT_MAP[$CODE]="$COMMENT"
c70f84
        else
luz.paz 99f3ef
            # write all unknown rows to beginning of file
c70f84
            echo "$LINE" >> "$TMPFILE"
c70f84
        fi
c70f84
    done < "$LANGUAGES_FILE"
c70f84
luz.paz 99f3ef
    # fit the columns to make beautifulest table in the world
c70f84
    local CODE_LEN=0
c70f84
    local NAME_LEN=0
c70f84
    for i in ${!CODE_MAP[@]}; do
c70f84
        if [ ${#CODE_MAP[$i]} -gt $CODE_LEN ]; then
c70f84
            CODE_LEN=${#CODE_MAP[$i]}
c70f84
        fi
c70f84
        if [ ${#NAME_MAP[$i]} -gt $NAME_LEN ]; then
c70f84
            NAME_LEN=${#NAME_MAP[$i]}
c70f84
        fi
c70f84
    done
Androbin 234172
    CODE_LEN=$((CODE_LEN+3))
Androbin 234172
    NAME_LEN=$((NAME_LEN+3))
c70f84
c70f84
    # sort
c70f84
    SORTED=$(for i in ${!CODE_MAP[@]}; do echo $i; done | sort | while read l; do echo -n "$l "; done)
c70f84
c70f84
    # write languages
c70f84
    NEW_LANGS=
c70f84
    for i in $SORTED; do
c70f84
        CODE=${CODE_MAP[$i]}
c70f84
        NAME=${NAME_MAP[$i]}
c70f84
        COMMENT=${COMMENT_MAP[$i]}
c70f84
        if [ ! -z "$COMMENT" ]; then
c70f84
            COMMENT=" // $COMMENT"
c70f84
        fi
c70f84
        if [ -z "$NAME" ]; then
c70f84
            NEW_LANGS="$NEW_LANGS $CODE"
c70f84
        fi
c70f84
        printf "{ %-${CODE_LEN}s %-${NAME_LEN}s },%s\\n" "\"$CODE\"," "\"$NAME\"," "$COMMENT" >> "$TMPFILE"
c70f84
    done
c70f84
c70f84
    # update file
c70f84
    mv $TMPFILE $LANGUAGES_FILE
c70f84
c70f84
    if [ ! -z "$NEW_LANGS" ]; then
c70f84
        echo ""
c70f84
        echo "please, enter names for following languages:$NEW_LANGS"
c70f84
        echo ""
c70f84
        echo "see file $LANGUAGES_FILE"
c70f84
        echo ""
c70f84
    fi
c70f84
}
c70f84
c70f84
c70f84
cd "$(cd `dirname "$0"`; pwd)/.."
c70f84
c70f84
update_linguas "synfig-core/po"
c70f84
update_linguas "synfig-studio/po"
c70f84
update_languages_inc
c70f84
echo "done"