Автоматизация сборки документации для Mercurial
Поделюсь маленьким скриптом для автоматизации сборки документации doxygen’ом.
Вот он (скачать):
#!/bin/sh
# $1 - path to working directory
# $2 - out dir
WD=$1
OUT=$2
LOG=$3
# check in
[[ -z $WD || -z $OUT ]] && return 2
# $1 — link addr
# $2 — link name
upln() {
[[ -L "$2" ]] && rm -f "$2"
ln -s "$1" "$2"
}
# == Main ==
cd $WD || exit 1
# pulling up
hg pull -u || exit 1
# get revision & tag
Rev="$(hg identify -n):$(hg identify -i)"
Tag="$(hg identify -t)"
# There is no doxygen config
[[ -f $PWD/Doxyfile ]] || (
echo "No Doxyfile";
exit 0
)
# prepare Doxyfile
Doxyfile=`mktemp ./Doxyfile-tmp.XXXX`
DoxOut=$PWD/doc/doxygen
sed "s/^\(PROJECT_NUMBER.*=.*\)/\1 rev. $Rev/" $PWD/Doxyfile > $Doxyfile
# Clean prevoius build
[[ -d $DoxOut ]] && (
rm -rf $DoxOut
)
# build
doxygen $Doxyfile || (
rm -f $Doxyfile;
exit 3
)
# rm temp Doxyfile
rm -f $Doxyfile
# try to compile pdf doc
[[ -d $DoxOut/latex ]] && (
# make -C $DoxOut/latex
# mv $DoxOut/latex/refman.pdf $DoxOut
# # LaTeX sources not needed
rm -rf $DoxOut/latex
)
[[ -f $LOG ]] && (
local rt="$Rev"
[[ -n $Tag ]] && rt="$rt ($Tag)"
echo "`date`: Create documentation" \
" for $WD rev. $rt" >> $LOG
)
# copy work
mkdir "$OUT/$Rev" || exit 4
cp -R $PWD/doc/doxygen/* "$OUT/$Rev" || exit 4
# create tag symlink
[[ -n $Tag ]] && (
upln "$OUT/$Rev" "$OUT/$Tag"
)
# TODO: Clean old
exit 0
Порядок действий
- Скачать скрипт
chmod +x hgupdox.sh- Сделать клон вашего основного репозитария:
hg clone /path/to/project /path/to/doxygen/.sources/project - Создать каталог, в который будет помещен результат:
mkdir /path/to/doxygen/project - Проверьте права и пользователя на рабочую копию и выходной каталог чтобы скрипт мог в них писать
- Добавить в .hg/hgrc вашего основного репозитария
[hooks]
changegroup = changegroup.hgupdox = /path/to/hgupdox.sh “/path/to/doxygen/.sources/project” “/path/to/doxygen/project” “/path/to/logs/hgupdox.log” & Где /path/to/logs/hgupdox.log — не обязательный лог работы
Ограничения
Doxygen должен выдавать результат в ./doc/doxygen рабочего клона.
У меня работает на сервере, результат можно посмотреть здесь: http://media.vehq.ru/doxygen/
UPD 22.09.2009: Обновил скрипт