mirror of
https://https.git.savannah.gnu.org/git/findutils.git
synced 2026-01-26 15:39:06 +00:00
180 lines
3.7 KiB
Bash
180 lines
3.7 KiB
Bash
#! /bin/sh
|
|
|
|
# fetch-po-files -- fetches the .po files from the Translation Project website
|
|
# Copyright (C) 2005 Free Software Foundation, Inc.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2, or (at your option)
|
|
# any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
|
# USA.
|
|
#
|
|
# Written by James Youngman.
|
|
|
|
URLBASE="http://www.iro.umontreal.ca/translation/maint"
|
|
|
|
|
|
if [ $# -ne 2 ]; then
|
|
echo "You need to specify the package name and a destination directory on the command line." >&2
|
|
exit 1
|
|
fi
|
|
|
|
|
|
|
|
PACKAGE="$1"
|
|
DESTDIR="$2"
|
|
shift
|
|
|
|
debug () {
|
|
: nothing
|
|
}
|
|
|
|
info () {
|
|
echo "$@"
|
|
}
|
|
|
|
|
|
v_update_needed() {
|
|
debug "update_required: Checking $@"
|
|
vnew=$1
|
|
vexisting=$2
|
|
|
|
major_new=$(echo $vnew | cut -s -d. -f1)
|
|
major_existing=$(echo $vexisting | cut -s -d. -f1)
|
|
if [ -z "$major_new" ]; then
|
|
debug "New version number empty, update not needed"
|
|
false
|
|
elif [ -z "$major_existing" ]; then
|
|
debug "Existing version number empty, update is needed"
|
|
true
|
|
elif [ $major_new -gt $major_existing ]; then
|
|
debug "$vnew > $vexisting, update needed"
|
|
true
|
|
elif [ $major_new -lt $major_existing ]; then
|
|
debug "$vnew < $vexisting, update NOT needed"
|
|
true
|
|
else
|
|
v_update_needed \
|
|
$(echo $vnew | cut -s -d. -f2-) \
|
|
$(echo $vexisting | cut -s -d. -f2-)
|
|
fi
|
|
}
|
|
|
|
d_update_needed() {
|
|
# Determine if an update is neeededon the basis of the version numbers.
|
|
cat "$@" |
|
|
tr -d '"' |
|
|
grep "^PO-Revision-Date: " |
|
|
sed -e 's/PO-Revision-Date: //' -e 's/\\n$//' |
|
|
LANG=C sort -c >/dev/null
|
|
}
|
|
|
|
|
|
|
|
getversion() {
|
|
grep Project-Id-Version: < "$1" |
|
|
tr -d '"' |
|
|
sed -e 's/^.*'$PACKAGE' //' -e 's/\\n$//'
|
|
}
|
|
|
|
|
|
check_versions() {
|
|
if vnew=$(getversion "$1"); then
|
|
if vexisting=$(getversion "$2"); then
|
|
if v_update_needed "$vnew" "$vexisting"; then
|
|
true
|
|
else
|
|
d_update_needed "$2" "$1" && \
|
|
info "Timestamp fields indicate $1 is newer than $2"
|
|
fi
|
|
else
|
|
false
|
|
fi
|
|
else
|
|
false
|
|
fi
|
|
}
|
|
|
|
|
|
update_required() {
|
|
new="$1"
|
|
existing="$2"
|
|
# ls -ltrd "$new" "$existing"
|
|
|
|
if ! [ -e "$existing" ] ; then
|
|
debug "$existing does not exist, using $new"
|
|
true
|
|
elif cmp $new $existing >/dev/null 2>&1; then
|
|
info "$new and $existing are identical"
|
|
false
|
|
elif check_versions "$new" "$existing"; then
|
|
info "Fetched file has newer version number or date stamp"
|
|
true
|
|
else
|
|
false
|
|
fi
|
|
}
|
|
|
|
|
|
possible_update() {
|
|
|
|
debug "Possible update of $3/$1"
|
|
|
|
new="$2/$1"
|
|
existing="$3/$1"
|
|
|
|
if update_required $new $existing; then
|
|
info "Updating $1..."
|
|
rm -f $existing
|
|
mv $new $existing
|
|
else
|
|
rm -f $new
|
|
fi
|
|
}
|
|
|
|
|
|
|
|
main () {
|
|
potfile=$DESTDIR/$PACKAGE.pot
|
|
if [ -f $potfile ] ; then
|
|
echo "OK".
|
|
else
|
|
echo "$potfile is not present. Did you specify the right command line?" >&2
|
|
exit 1
|
|
fi
|
|
tmpdir=`mktemp -d`
|
|
|
|
|
|
# set -x
|
|
printf "Fetching .po files..."
|
|
wget --quiet --recursive --directory-prefix="$tmpdir" --level=1 --accept "*.po" --no-directories "$URLBASE"/"$PACKAGE"
|
|
echo done
|
|
# cp /tmp/po-updates/$PACKAGE/*.po "$tmpdir"
|
|
# touch "$tmpdir"/*.po
|
|
|
|
for f in $(cd $tmpdir && ls *.po ); do
|
|
possible_update "$f" "$tmpdir" "$DESTDIR"
|
|
done
|
|
cd /
|
|
rm -rf "$tmpdir"
|
|
}
|
|
|
|
|
|
# getversion gl.po
|
|
# update_needed 4.1.5 4.1.5
|
|
# update_needed 4.1.15 4.1.5
|
|
# update_needed 5.0 4.1.5
|
|
# update_needed 4.2.6 5.0
|
|
# exit 0
|
|
|
|
main "$@"
|