zpkg/src/main.sh
2020-05-26 11:20:51 +02:00

131 lines
2.4 KiB
Bash

#!/bin/sh
case "$1" in
list) awk '{print $1}' "$PKG_PATH/installed" 2>/dev/null | sort ;;
list-all) awk '{print $1}' "$PKG_PATH/pkglist" 2>/dev/null | sort ;;
update-database) fetch_pkglist $sudo ;;
fetch)
if [ -z "$2" ]
then
echo "No package specified" >&2
else
shift 1
for I in $*
do
fetch_package "$I"
done
fi
;;
show)
if [ -z "$2" ]
then
echo "No package specified" >&2
else
shift 1
for I in $*
do
if is_installed "$I"
then
view_package "$I"
else
wget "$HTTP_ADDRESS/$1.tar.xz" -q -O - 2>/dev/null | view_package_file - || { echo "Could not fetch package '$I'" >&2 ; return 1 ; }
fi
done
fi
;;
deps)
if [ -z "$2" ]
then
echo "No package specified" >&2
else
shift 1
resolve_deps $* || exit $?
fi
;;
info)
if [ -z "$2" ]
then
echo "No package specified" >&2
else
shift 1
for N
do
package_info $N || exit $?
done
fi
;;
install)
fetch_pkglist $sudo || exit $?
if [ -z "$2" ]
then
echo "No package specified" >&2
else
shift 1
pkglist=$(LOG=true resolve_packages $*) || exit $?
pkglist=$(INCLUDE_PACKAGES=true resolve_deps $* | tr '\n' ' ')
echo "Installing packages: $pkglist"
for I in $pkglist
do
is_installed $I && remove_package $I $sudo
install_package $I $sudo
done
fi
;;
remove)
if [ -z "$2" ]
then
echo "No package specified" >&2
else
shift 1
for I in $*
do
remove_package "$I" $sudo
done
fi
;;
update)
fetch_pkglist $sudo || exit 1
r_pkg=$(removed_packages)
o_pkg=$(outdated_packages)
if [ -n "$r_pkg" ]
then
echo "Removing packages: "$r_pkg
for I in $r_pkg
do
remove_package $I $sudo
done
fi
if [ -n "$o_pkg" ]
then
echo "Updating packages: "$o_pkg
for I in $o_pkg
do
remove_package $I $sudo
install_package $I $sudo
done
fi
;;
list-outdated)
tmpdir="/tmp/zpkg_$(random_string 5)"
virtual_config_path "$tmpdir" || exit $?
fetch_pkglist > /dev/null || exit $?
outdated_packages
rm -rd "$tmpdir"
;;
list-removed)
tmpdir="/tmp/zpkg_$(random_string 5)"
virtual_config_path "$tmpdir" || exit $?
fetch_pkglist > /dev/null || exit $?
removed_packages
rm -rd "$tmpdir"
;;
deploy)
shift 1
for I in $*
do
deploy_folder "$I" || exit 1
done
update_remote_database
;;
*) usage && exit 1 ;;
esac