overwrite=0
syncopts=''
installall=0
+mergefiles=0
# zpm-install [-SCn] [ -d localdb ] [ -f pkgfile ] [ -R installroot ] pkgstr ...
-while getopts f:d:R:nSCvAOa opt; do
+while getopts f:d:R:nSCvAOaF opt; do
case $opt in
f) pkgfile="$OPTARG" ;;
+ F) mergefiles=1 ;;
d) localdb="$OPTARG" ;;
R) rootdir="$OPTARG" ;;
S) runscripts=0 ;;
if [ $? -ne 0 ]; then
die "pre-install script for $pkgid failed"
fi
+ else
+ if zpm script -f $pkgfile -Fql -p pre-install $pkgid; then
+ zpm note -e -p $pkgid -m 'pre-install script not run'
+ fi
fi
# remove the package if it exists. can't be in an installed
if [ $verbose -gt 0 ]; then
echo merging $pkgid
fi
- zpm merge -u -F -f $pkgfile -s installing $pkgid
+ if [ $mergefiles -eq 1 ]; then
+ zpm merge -u -F -f $pkgfile -s installing $pkgid
+ else
+ zpm merge -u -f $pkgfile -s installing $pkgid
+ fi
if [ $? -ne 0 ]; then
die "merging $pkgid failed"
fi
syncopts="$syncopts -v"
fi
+if [ "$pkgfile" != "$ZPMDB" ]; then
+ syncopts="$syncopts -f $pkgfile"
+fi
+
zpm syncfs $syncopts
syncrv=$?
-for pkgid in $pkglist; do
- zpm pkg $pkgid status=dryrun
-done
+if [ $dryrun -gt 0 ]; then
+ for pkgid in $pkglist; do
+ zpm pkg $pkgid status=dryrun
+ done
+fi
if [ $syncrv -ne 0 ]; then
zpm pkg $pkgid status=failed
current=$(zpm list -s installed "$package")
if [ $runscripts -gt 0 ]; then
- zpm script -f $pkgfile -p post-install $pkgid $current
+ zpm script -p post-install $pkgid $current
+ else
+ if zpm script -Fql -p post-install $pkgid; then
+ zpm note -e -p $pkgid -m 'post-install script not run'
+ fi
fi
if [ -n "$current" ]; then
# TODO skip configure if not on a terminal, regardless of settings
# TODO will need force option
if [ $runconfigure -gt 0 ]; then
- zpm script -f $pkgfile -p configure $pkgid
+ zpm script -p configure $pkgid
+ else
+ if zpm script -Fql -p configure $pkgid; then
+ zpm note -e -p $pkgid -m 'configure script not run'
+ fi
fi
+
done