Skip to content

Instantly share code, notes, and snippets.

@r0bertz
Created April 17, 2011 05:44
Show Gist options
  • Save r0bertz/923784 to your computer and use it in GitHub Desktop.
Save r0bertz/923784 to your computer and use it in GitHub Desktop.
use to set version/date of the translated doc to english doc's version/date, xmllint it and copy to cvs work dir
#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by git-commit with no arguments. The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, make this file executable.
GENTOODIR="/home/zhangle/gentoo/xml/htdocs"
WORKDIR="/home/zhangle/workarea/xml/htdocs"
getver() {
grep -o 'Header.*v 1.[0-9]\+' $1 | sed 's/^.*v \(.*\)/\1/'
}
getversion() {
grep -o '<version>.*</version>' $1 | sed 's/<version>\(.*\)<\/version>/\1/'
}
setver() {
local ver=$(getver $2)
sed -i -e "s/\(English CVS version: \).*\( -->\)/\1$ver\2/" $1
}
setversion() {
local version=$(getversion $2)
sed -i -e "s/\(<version>\).*\(<\/version>\)/\1$version\2/" $1
}
setdate() {
sed -i -e "s/\(<date>\).*\(<\/date>\)/\1$(date +%Y-%m-%d)\2/" $1
}
if ! which xmllint >/dev/null 2>&1
then
echo -e "please install libxml2 first";
exit 1;
fi
for i in $(git diff --cached | grep '^+++.*\.xml$' | sed -e 's/^+++ b\///')
do
filename="$(git rev-parse --show-cdup)$i"
if egrep '(^[/]?dyn/|/news/[^/]*.xml)' <<< $filename >/dev/null 2>&1
then
continue;
fi
echo -e -n "\033[32msetting version and date for\033[0m $i"
en_fullpath=$GENTOODIR/${i/zh_cn/en}
setver $filename $en_fullpath
setversion $filename $en_fullpath
setdate $filename
git add $filename
echo -e " \033[32mdone\033[0m"
echo -e -n "\033[32mvalidating\033[0m $i"
if ! xmllint -valid -noout $filename >/dev/null 2>&1
then
echo -e " \033[31mfailed\033[0m"
echo -e "\033[32mplease run this:\033[0m"
echo -e " xmllint -valid -noout $filename"
exit 1;
fi
echo -e " \033[32mdone\033[0m"
DESTDIR=$WORKDIR/$(dirname $i)
echo -e -n "\033[32mcopying to\033[0m $DESTDIR"
[[ -d $DESTDIR ]] || mkdir -p $DESTDIR
cp $filename $DESTDIR/$(basename $i)
echo -e " \033[32mdone\033[0m"
done
exit 0;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment