diff --git a/scripts/inject-path.sh b/scripts/inject-path.sh new file mode 100755 index 00000000..4ca72c2f --- /dev/null +++ b/scripts/inject-path.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# Modifies (or cleans) local bin/* files to point to the local development +# modules by injecting a corresponding `sys.path`. + +case "$1" in + inject) + inject_path="${2:-$PWD}" + echo "inject import path '$inject_path' in bin file sources" + sed -i "s#^import sys\$#import sys; sys.path.append(\"$PWD\")#" bin/input-remapper* + ;; + clean) + echo "remove extra import path in bin file sources" + sed -i "s#^import sys; sys\\.path\\.append.*#import sys#" bin/input-remapper* + ;; + *) echo "usage inject|clean [PATH]"; exit 1;; +esac + +echo "injection result:" +grep --color -E 'import sys$|import sys;.*' bin/* +echo "injection finished" diff --git a/scripts/local-install.sh b/scripts/local-install.sh new file mode 100755 index 00000000..804489b2 --- /dev/null +++ b/scripts/local-install.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# Allows to install the app and services so that they use the local development +# modules. Includes support for modules installed in the USER's virtual env. + +if test -n "$VIRTUAL_ENV"; then + echo "running in virtual env '$VIRTUAL_ENV'" + site_packages="$(find "$VIRTUAL_ENV" -name site-packages)" + echo "temporarily ingesting site-packages path '$site_packages' into binaries" + scripts/inject-path.sh inject "$site_packages" +fi + +echo "stopping service" +sudo systemctl stop input-remapper.service +sudo systemctl disable input-remapper.service + +echo "installing local package" +sudo pip install -q . + +if test -n "$VIRTUAL_ENV"; then + echo "removing temporary site-packages path from binaries" + scripts/inject-path.sh clean +fi + +echo "updating applications database" +sudo update-desktop-database /usr/share/applications + +echo "starting service" +sudo systemctl enable input-remapper.service +sudo systemctl start input-remapper.service +input-remapper-control --command autoload +sudo systemctl status input-remapper.service | cat diff --git a/scripts/system-uninstall.sh b/scripts/system-uninstall.sh new file mode 100755 index 00000000..12c6be29 --- /dev/null +++ b/scripts/system-uninstall.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +echo "disabling service" +sudo systemctl stop input-remapper.service 2> /dev/null +sudo systemctl disable input-remapper.service 2> /dev/null + +echo "uninstalling package" +pip uninstall -q -y input-remapper 2> /dev/null +sudo pip uninstall -q -y input-remapper 2> /dev/null + +echo "cleaning up binaries" +sudo rm -rf /usr/bin/input-remapper-gtk +sudo rm -rf /usr/bin/input-remapper-service +sudo rm -rf /usr/bin/input-remapper-reader-service +sudo rm -rf /usr/bin/input-remapper-control + +echo "cleaning up share" +sudo rm -rf /usr/share/input-remapper +sudo rm -rf /usr/share/applications/input-remapper-gtk.desktop +sudo rm -rf /usr/lib/systemd/system/input-remapper.service + +echo "cleaning up config and startup files" +sudo rm -rf /etc/dbus-1/system.d/inputremapper.Control.conf +sudo rm -rf /etc/xdg/autostart/input-remapper-autoload.desktop +sudo rm -rf /usr/lib/udev/rules.d/99-input-remapper.rules + +echo "checking for remaining files" +files="$(( + find /usr -name 'input*remapper' + find /etc -name 'input*remapper' + find $HOME/.local -name 'input*remapper' +) 2> /dev/null)" + +if test -n "$files"; then + echo -e "files remaining:\n$files" + echo "uninstall incomplete" + exit 1 +fi + +echo "uninstall finished"