httpup/httpup-repgen

85 lines
1.7 KiB
Plaintext
Raw Normal View History

2005-11-09 21:44:34 +00:00
#!/bin/sh
# httpup-repgen - One way sync from an http server to a local directory
#
# Copyright 2003-2005 (c) Johannes Winkelmann, # jw@tks6.net
#
# - Filtering code adapted from Per Liden's pkgmk
# - optimized and made portable (sh-compliant) by Han Boetes
# The repo file is place on the server. httpup downloads it,
# makes the update and afterwards moves it to the REPOCURRENTFILE
# which keeps track of the files which have been checked out. The
# REPOCURRENTFILE contains only file names
REPOFILE=REPO
REPOCURRENTFILE=REPO.CURRENT
VERSION=0.8
info()
{
echo $*
}
debug()
{
return # echo $*
}
printUsage()
{
cat << EOF
httpup-repgen $VERSION
Copyright (c) 2003 Johannes Winkelmann
Usage:
httpup-repgen [directory]
EOF
exit -1
}
generateRepoFile()
{
dir=${1:-.}
if [ ! -d $dir ]; then
echo "Can't generate repository for '$dir': No such directory"
exit -2
fi
echo "Generating repository for directory '$dir'"
OLDPWD=$PWD
cd $dir
rm -f $REPOFILE || exit -3
IGNORE_FILE=.httpup-repgen-ignore
if [ -r $HOME/$IGNORE_FILE ]; then
FILTER="grep -E -v -f $HOME/$IGNORE_FILE"
else
FILTER="cat"
fi
if [ -r $IGNORE_FILE ]; then
FILTER_LOCAL="grep -E -v -f $IGNORE_FILE"
else
FILTER_LOCAL="cat"
fi
FILTER_OWN="grep -E -v ($REPOFILE|$REPOCURRENTFILE|$IGNORE_FILE)"
2005-11-09 21:44:34 +00:00
find . -type d ! -name . -printf "%P\n"|$FILTER|$FILTER_LOCAL|$FILTER_OWN|\
awk '{print "d:"$1}' > $REPOFILE
files="$(find . -type f -printf "%P\n"|$FILTER|$FILTER_LOCAL|$FILTER_OWN)"
if [ -n "$files" ]; then
echo $files|xargs md5sum|awk '{print "f:"$1":"$2}' >> $REPOFILE
fi
cd $OLDPWD
}
case $1 in
-*)
printUsage
;;
*)
generateRepoFile $1
;;
esac