2011-06-16 14:45:15 +00:00
|
|
|
#!/bin/sh
|
|
|
|
# A script to check whether there have been any string changes.
|
2011-06-16 15:32:23 +00:00
|
|
|
# If it finds some, it commits the new po files and then updates
|
|
|
|
# the stats.
|
2011-06-16 14:45:15 +00:00
|
|
|
|
2011-06-16 15:32:23 +00:00
|
|
|
# The script expects an environment variable FARM that will provide
|
|
|
|
# it with the location of the LyX www tree.
|
2011-06-16 14:45:15 +00:00
|
|
|
|
2011-06-16 15:11:02 +00:00
|
|
|
DEBUG="";
|
2011-06-20 14:43:34 +00:00
|
|
|
COMMIT="";
|
2011-06-16 15:11:02 +00:00
|
|
|
|
2011-06-20 14:43:34 +00:00
|
|
|
while getopts ":cdh" options $ARGS; do
|
2011-06-16 15:11:02 +00:00
|
|
|
case $options in
|
2011-06-20 14:43:34 +00:00
|
|
|
c) COMMIT="TRUE";;
|
2011-06-16 15:11:02 +00:00
|
|
|
d) DEBUG="echo";;
|
2011-10-25 19:09:19 +00:00
|
|
|
h) echo "update-po.sh [-c] [-d]";
|
|
|
|
echo "-c: Commit any changes we find.";
|
|
|
|
echo "-d: Debugging mode.";
|
2011-06-16 15:32:23 +00:00
|
|
|
echo "You must also point the FARM variable to LyX's www tree.";
|
|
|
|
exit 0;;
|
2011-06-16 15:11:02 +00:00
|
|
|
esac
|
|
|
|
done
|
2011-06-16 14:45:15 +00:00
|
|
|
|
|
|
|
if [ -z "$FARM" ]; then
|
|
|
|
echo "You must set the FARM variable to run this script, e.g.:";
|
|
|
|
echo "# FARM=/cvs/lyx-www/ bash check-po.sh";
|
|
|
|
exit 1;
|
|
|
|
fi
|
|
|
|
|
|
|
|
FARM=${FARM%/};
|
|
|
|
FARM="$FARM/farm/cookbook/LyX";
|
|
|
|
# Sanity check
|
|
|
|
if [ ! -f "$FARM/i18n.php" ]; then
|
|
|
|
echo "$FARM does not look like LyX's www tree!";
|
|
|
|
exit 1;
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Get us to the root of the tree we are in.
|
2011-06-20 14:43:34 +00:00
|
|
|
MYDIR=${0%update-po.sh};
|
2011-06-16 14:45:15 +00:00
|
|
|
if [ -n "$MYDIR" ]; then
|
2011-06-20 14:43:34 +00:00
|
|
|
if ! cd $MYDIR; then
|
|
|
|
echo "Couldn't cd to $MYDIR!";
|
|
|
|
exit 1;
|
|
|
|
fi
|
2011-06-16 14:45:15 +00:00
|
|
|
fi
|
|
|
|
cd ../../;
|
|
|
|
LYXROOT=$(pwd);
|
|
|
|
|
|
|
|
# Are we in trunk or branch?
|
|
|
|
TRUNK="TRUE";
|
|
|
|
if ls status.* 2>/dev/null | grep -q status; then
|
|
|
|
TRUNK="";
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Git or SVN?
|
|
|
|
VCS="";
|
|
|
|
if svn log >/dev/null 2>&1; then
|
|
|
|
VCS="svn";
|
2011-06-16 15:11:02 +00:00
|
|
|
elif git diff >/dev/null 2>&1; then
|
2011-06-16 14:45:15 +00:00
|
|
|
VCS="git";
|
2011-06-20 14:46:30 +00:00
|
|
|
# We need to make sure that we have a tree without any unpushed
|
|
|
|
# commits. Otherwise git svn dcommit would commit more than we
|
|
|
|
# want.
|
|
|
|
if git status | grep -Pq 'Your branch is (?:ahead|behind)'; then
|
|
|
|
echo "Your git tree is not clean. Please correct the situation and re-run.";
|
|
|
|
echo;
|
|
|
|
git status;
|
|
|
|
exit 10;
|
|
|
|
fi
|
2011-06-16 14:45:15 +00:00
|
|
|
fi
|
|
|
|
|
2011-06-16 15:11:02 +00:00
|
|
|
if [ -z "$VCS" ]; then
|
2011-06-16 14:45:15 +00:00
|
|
|
echo "Unable to determine version control system!";
|
|
|
|
exit 1;
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Sanity check
|
|
|
|
if ! cd po/; then
|
|
|
|
echo "Cannot cd to po/ directory!";
|
|
|
|
pwd
|
|
|
|
exit 1;
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo Remerging...
|
|
|
|
make update-po >/dev/null 2>&1;
|
|
|
|
echo
|
|
|
|
|
|
|
|
if [ -n "$TRUNK" ]; then
|
|
|
|
I18NFILE=i18n_trunk.inc;
|
|
|
|
else
|
|
|
|
I18NFILE=i18n.inc;
|
|
|
|
fi
|
|
|
|
|
2011-06-16 15:18:08 +00:00
|
|
|
# make sure things are clean
|
|
|
|
rm -f i18n.inc;
|
|
|
|
svn revert $FARM/$I18NFILE;
|
|
|
|
|
|
|
|
echo Running make i18n.inc...
|
|
|
|
make i18n.inc >/dev/null 2>&1;
|
|
|
|
if [ -n "$TRUNK" ]; then
|
2011-06-16 15:32:23 +00:00
|
|
|
mv -f i18n.inc i18n_trunk.inc
|
2011-06-16 15:18:08 +00:00
|
|
|
fi
|
|
|
|
|
2011-06-16 15:11:02 +00:00
|
|
|
if diff -w -q $I18NFILE $FARM/$I18NFILE >/dev/null 2>&1; then
|
2011-06-16 14:45:15 +00:00
|
|
|
echo No string differences found.
|
2011-06-16 15:32:23 +00:00
|
|
|
# So we will revert the changes to po files, which are probably
|
|
|
|
# just dates and such.
|
2011-06-16 14:45:15 +00:00
|
|
|
if [ "$VCS" = "svn" ]; then
|
2011-06-16 15:11:02 +00:00
|
|
|
svn revert *.po;
|
2011-06-16 14:45:15 +00:00
|
|
|
else
|
2011-06-16 15:32:23 +00:00
|
|
|
git checkout *.po;
|
2011-06-16 14:45:15 +00:00
|
|
|
fi
|
|
|
|
exit 0;
|
|
|
|
fi
|
|
|
|
|
2011-06-16 15:32:23 +00:00
|
|
|
# So there are differences.
|
2011-06-20 14:43:34 +00:00
|
|
|
|
|
|
|
if [ -z "$COMMIT" ]; then
|
|
|
|
echo "Differences found!";
|
|
|
|
diff -w $I18NFILE $FARM/$I18NFILE | less;
|
|
|
|
if [ "$VCS" = "svn" ]; then
|
|
|
|
svn revert *.po;
|
|
|
|
else
|
|
|
|
git checkout *.po;
|
|
|
|
fi
|
|
|
|
exit 0;
|
|
|
|
fi
|
|
|
|
|
2011-06-16 14:45:15 +00:00
|
|
|
if [ "$VCS" = "svn" ]; then
|
|
|
|
$DEBUG svn ci *.po;
|
|
|
|
else
|
|
|
|
$DEBUG git commit *.po -m "Remerge strings.";
|
2011-06-20 14:46:30 +00:00
|
|
|
$DEBUG git svn dcommit;
|
2011-06-16 14:45:15 +00:00
|
|
|
fi
|
|
|
|
|
2011-06-16 15:32:23 +00:00
|
|
|
echo
|
|
|
|
|
2011-06-16 14:45:15 +00:00
|
|
|
if ! cd $FARM; then
|
|
|
|
echo "Unable to cd to $FARM!";
|
|
|
|
exit 1;
|
|
|
|
fi
|
2011-06-16 15:32:23 +00:00
|
|
|
|
2011-06-16 14:45:15 +00:00
|
|
|
echo Updating the www-user tree...
|
2011-06-16 15:11:02 +00:00
|
|
|
# note that we're assuming this one is svn.
|
|
|
|
svn up;
|
2011-06-16 14:45:15 +00:00
|
|
|
|
2011-06-16 15:11:02 +00:00
|
|
|
echo Moving $I18NFILE...;
|
|
|
|
mv $LYXROOT/po/$I18NFILE .;
|
2011-06-16 14:45:15 +00:00
|
|
|
|
|
|
|
echo Committing...;
|
2011-06-16 15:11:02 +00:00
|
|
|
$DEBUG svn commit -m "* $I18NFILE: update stats" $I18NFILE;
|
2011-06-16 14:45:15 +00:00
|
|
|
|
2011-06-16 15:32:23 +00:00
|
|
|
if [ -n "$NOTSAFE" ]; then
|
|
|
|
echo
|
|
|
|
echo "Your LyX tree was not clean.";
|
|
|
|
echo "Your will need to push changes to po files manually."
|
|
|
|
fi
|