# no id impossible
die() {
- echo $* 1>&2
- exit 1
+ echo "$@" 1>&2
+ exit 255
}
# basic cleanup on a path
isconfig=0
addcontent=1
complete=0
+noclear=0
# option for "multipackage" just to let the system know that's what you meant
# option to take filenames from stdin
# parse package, version, release from file if not given
# -m set mode
# -H set hash, will be overridden for regular files unless -N is set
# -F set filetype, regular, symlink, directory
-while getopts :f:vr:l:P:S:cu:g:NCm:M:T:H:F: opt; do
+while getopts :f:vr:l:P:S:cu:g:NCm:M:T:H:F:z opt; do
case $opt in
N) addcontent=0 ;;
f) pkgfile="$OPTARG" ;;
H) clhash="$OPTARG" ;;
v) verbose=$((verbose + 1)) ;;
C) complete=1 ;;
- *) echo 'unknown option' $OPTARG; exit 1 ;;
+ z) noclear=1 ;;
+ *) echo 'unknown option' $OPTARG; exit 255 ;;
esac
done
shift $((OPTIND - 1))
# check for package file
if [ ! -f "$pkgfile" ]; then
- echo $pkgfile does not exist
- exit 1
+ die $pkgfile does not exist
fi
set -e
pkgrel=$(zpm quote "$release")
#strip=$(cleanpath "$strip")
-for path in $*; do
+for path in "$@"; do
#echo adding $path
if [ $verbose -gt 1 ]; then
- printf "adding %s\n" $path
+ printf "adding %s\n" "$path"
fi
# only stat the file for items not set on the command line
- mode=${clmode:-$(zpm stat -l -f '%a' $path)}
- username=${cluser:-$(zpm stat -l -f '%U' $path)}
- groupname=${clgroup:-$(zpm stat -l -f '%G' $path)}
- mtime=${clmtime:-$(zpm stat -l -f '%y' $path)}
+ mode=${clmode:-$(zpm stat -l -f '%a' "$path")}
+ username=${cluser:-$(zpm stat -l -f '%U' "$path")}
+ groupname=${clgroup:-$(zpm stat -l -f '%G' "$path")}
+ mtime=${clmtime:-$(zpm stat -l -f '%y' "$path")}
filetype=${cltype:-$(zpm stat -l -f '%t' "$path")}
rpath="$path"
commit;
EOS
+if [ $? -ne 0 ]; then
+ die zpm-add shell failed
+fi
+
#printf "%s %s%s\n" $path $rpath ${target:+" -> $target"}
if [ $verbose -gt 1 ]; then
- printf "%s%s %s:%s %s\n" $filetype $mode $username $groupname $path
+ printf "%s%s %s:%s %s\n" $filetype $mode $username $groupname "$path"
elif [ $verbose -gt 0 ]; then
- printf "%s\n" $path
+ printf "%s\n" "$path"
fi
done
if [ $complete -eq 1 ]; then
zpm pkg -f $pkgfile $pkgid build_time=$(date +'%s')
zpm packagehash -f $pkgfile -s -q $pkgid
-else
+elif [ $noclear -eq 0 ]; then
zpm pkg -f $pkgfile $pkgid hash=
+ rv=$?
+ if [ $rv -ne 0 ]; then
+ die clearing packagehash failed
+ fi
fi
+exit 0