collabora-online/scripts/extract_translator.sh

133 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
#
# author {
# name "kuesji koesnu"
# email "kuesji@koesnu.com"
# website "kuesji.koesnu.com"
# }
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
SINCE=$(date +%s --date="-1 month")
TEXT='Translated using Weblate'
INPUT_FILE=""
CSV_FILE=""
OUTPUT_FILE=""
set -ef
print_help(){
usage='
options
--full generate translator list from beginning ( only last month generated without this )
-i file give input file for previous contributors
-o file give output file for latest contributors list including previous
--csv file give input from csv file
'
echo "$usage"
}
find_hashs(){
# if since is greater than 0 take last month's authors else full
if [ "$SINCE" -gt 0 ]
then
git log --since="$SINCE" --pretty=format:"%h %s" --grep="$TEXT" | cut -d ' ' -f1
else
git log --pretty=format:"%h %s" --grep="$TEXT" | cut -d ' ' -f1
fi
}
collect_authors(){
for hash in $(find_hashs)
do
info=$(git show "$hash" --pretty=format:'%an' | head -n 1)
echo $info
done
}
# show help if no argument passed
if [ $# -lt 1 ]
then
print_help
exit 1
fi
# parsing arguments
while [ $# -gt 1 ];
do
case "$1" in
'--full')
shift; SINCE="0";
;;
'-i')
shift; INPUT_FILE="$1"; shift;
;;
'-o')
shift; OUTPUT_FILE="$1"; shift;
;;
'--csv')
shift; CSV_FILE="$1"; shift;
;;
*)
shift;
;;
esac
done
# we need an output list
if [ -z "$OUTPUT_FILE" ]
then
echo 'error: please give output file with "-o filename" format' >&2
exit 1
fi
# read input list if given
if [ ! -z "$INPUT_FILE" ] && [ -f "$INPUT_FILE" ]
then
cat "$INPUT_FILE" > 'tmp.txt'
fi
# load csv if csv file given
if [ ! -z "$CSV_FILE" ] && [ -f "$CSV_FILE" ]
then
# backup and switch delimiter to comma
OLDIFS="$IFS"
IFS=','
for author in $( cat "$CSV_FILE" )
do
# first remove leading spaces, second sed trim trailing space
echo "$author" | sed 's,^ *,,g' | sed 's, *$,,g' >> 'tmp.txt'
done
# restore old delimitier
IFS="$OLDIFS"
fi
# generate latest list and combine
collect_authors >> 'tmp.txt'
# read all, sort all, make unique and write to output file
cat 'tmp.txt' | sort | uniq > "$OUTPUT_FILE"
if [ ! -z "$CSV_FILE" ]
then
# put a comma on end of every line
sed -e 's/$/, /g' "$OUTPUT_FILE" > 'tmp.txt'
# delete newline characters
cat tmp.txt | tr -d '\n' > "$OUTPUT_FILE"
fi
# thanks for service tmp.txt, but we dont need you anymore
rm 'tmp.txt'
# vim:set shiftwidth=4 softtabstop=4 expandtab: