runon/install

104 lines
2.6 KiB
Plaintext
Raw Normal View History

2021-04-30 20:03:24 +02:00
#!/usr/bin/bash
local_bin_dir=~/local/bin
local_config_dir=~/.config/runon
2022-08-09 18:37:57 +02:00
system_bin_dir=/usr/local/bin
system_config_dir=/etc/runon
2021-04-30 20:03:24 +02:00
op=install
bin_dir=$local_bin_dir
config_dir=$local_config_dir
function usage
{
echo "$0 [local|system] [-u|--uninstall] [<dest>]"
echo
echo " local install for local user, by default"
echo " system install for all users"
echo " dev install in dev mode (create links to source)"
echo " -u, --uninstall local or system uninstall"
echo " <dest> destination dir for binary"
echo
echo "default local paths:"
echo " binary: $local_bin_dir"
echo " config: $local_config_dir"
echo
echo "default system paths:"
echo " binary: $system_bin_dir"
echo " config: $system_config_dir"
echo
}
function do_exec
{
echo "$@"
"$@"
}
while [ $# -gt 0 ]; do
case $1 in
local)
bin_dir=$local_bin_dir
config_dir=$local_config_dir
;;
system)
bin_dir=$system_bin_dir
config_dir=$system_config_dir
;;
dev)
bin_dir=$local_bin_dir
config_dir=$local_config_dir
op=installdev
;;
-u)
op=uninstall
;;
--uninstall)
op=uninstall
;;
-h*)
usage
exit 0
;;
*) bin_dir=$1
;;
esac
shift
done
bin_dir=$(realpath $bin_dir)
config_dir=$(realpath $config_dir)
if [[ ":$PATH:" != *":$bin_dir:"* ]]; then
echo "WARNING: $bin_dir is not in your PATH, runon will not be automatically found."
echo
fi
2021-04-30 20:03:24 +02:00
set -e
if [ "$op" = "install" ]; then
do_exec install -d $bin_dir
do_exec install -d $config_dir
#rm -f $bin_dir/runon
#rm -f $config_dir/runon
do_exec install runon $bin_dir
do_exec install runon.conf $config_dir
elif [ "$op" = "installdev" ]; then
do_exec install -d $bin_dir
do_exec install -d $config_dir
do_exec ln -s -f $(realpath runon) $bin_dir/
do_exec ln -s -f $(realpath runon.conf) $config_dir/
elif [ "$op" = "uninstall" ]; then
# find all symlinks targetting to runon, and remove them
find $bin_dir -type l | while read l; do
if [ "$(readlink $l)" = "runon" ]; then
do_exec rm $l
fi
done
2021-04-30 20:03:24 +02:00
do_exec rm -f $bin_dir/runon
do_exec rm -f $config_dir/runon.conf
test -d $bin_dir && do_exec rmdir --parents --ignore-fail-on-non-empty $bin_dir 2> /dev/null
test -d $config_dir && do_exec rmdir --parents --ignore-fail-on-non-empty $config_dir 2> /dev/null
fi