From 97cf440ce55d6f56d852d9d3afaceceddccff77e Mon Sep 17 00:00:00 2001 From: Gilles Grandou Date: Mon, 4 Dec 2023 22:23:28 +0100 Subject: [PATCH] new install/uninstall scripts * new uninstall script * system install no longer supported * local install using local virtualenv and symbolic links in ~/.local/bin * --dev switch to allow developper mode with symlinks to git --- install | 134 +++++++++---------------------- runon.conf => runon.default.conf | 0 runon/runon.py | 1 - uninstall | 25 ++++++ 4 files changed, 61 insertions(+), 99 deletions(-) rename runon.conf => runon.default.conf (100%) create mode 100755 uninstall diff --git a/install b/install index 0adb642..d042ae0 100755 --- a/install +++ b/install @@ -1,103 +1,41 @@ -#!/usr/bin/bash +#!/bin/bash -local_bin_dir=~/local/bin -local_config_dir=~/.config/runon -system_bin_dir=/usr/local/bin -system_config_dir=/etc/runon +srcdir=$(dirname $(readlink -f $0)) +venvdir=~/.local/lib/runon +bindir=~/.local/bin +configdir=~/.config/runon -op=install -bin_dir=$local_bin_dir -config_dir=$local_config_dir - -function usage -{ - echo "$0 [local|system] [-u|--uninstall] []" - 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 " 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 +if [ "$1" == "--dev" ]; then + editable=--editable + devmode=1 fi -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 - - 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 +if [ ! -d $venvdir/bin/activate ]; then + echo "create virtualenv $venvdir..." + python3 -m venv $venvdir +fi +source $venvdir/bin/activate + +echo "populate $venvdir..." +python3 -m pip install --upgrade pip +python3 -m pip install wheel +python3 -m pip install $editable $srcdir + +echo "create links in $bindir..." +mkdir -p $bindir +ln -sf $venvdir/bin/runon $bindir/ + +echo "install base config in $configdir..." +mkdir -p $configdir +if [ -n "$devmode" ]; then + ln -s $srcdir/runon.default.conf $configdir/ +else + cp -p $srcdir/runon.default.conf $configdir/ +fi + +echo "done." + +if [[ ":$PATH:" != *":$(readlink -f $bindir):"* ]]; then + echo "" + echo "WARNING: $bindir is not in your PATH" fi diff --git a/runon.conf b/runon.default.conf similarity index 100% rename from runon.conf rename to runon.default.conf diff --git a/runon/runon.py b/runon/runon.py index 76d73f6..bc575c8 100755 --- a/runon/runon.py +++ b/runon/runon.py @@ -23,7 +23,6 @@ def read_ini(user_confname, osname=''): '.runon.conf', os.path.join(xdg.BaseDirectory.xdg_config_home, 'runon', 'runon.conf'), os.path.join(xdg.BaseDirectory.xdg_config_home, 'runon', 'runon.default.conf'), - '/etc/runon/runon.conf', ] defaults = { 'osname': osname, diff --git a/uninstall b/uninstall new file mode 100755 index 0000000..f38fcff --- /dev/null +++ b/uninstall @@ -0,0 +1,25 @@ +#!/bin/bash + +srcdir=$(dirname $(readlink -f $0)) +venvdir=~/.local/lib/runon +bindir=~/.local/bin +configdir=~/.config/runon + +if [ -e $venvdir/bin/runon ]; then + echo "remove links from $bindir" + find -L $bindir -samefile $bindir/runon -exec rm -v {} \; + find -L $bindir -samefile $venvdir/bin/runon -exec rm -v {} \; +fi + +if [ -d $venvdir ]; then + echo "remove virtualenv $venvdir" + rm -rf $venvdir +fi + +if [ -e $configdir ]; then + echo "remove configs" + rm -vf $configdir/runon.default.conf + rmdir -v $configdir || true +fi + +echo "done."