#!/bin/bash set -e function install { # prefer running as root local dir="$(dirname "$0")" local program="comfortable-swipe" local program_exe="/usr/local/bin/$program" local compile_command="$dir/cpp.compile.sh" local compile_target="$dir/comfortable-swipe.cpp" local conf_path="/usr/local/share/$program/$program.conf" local dconf_path="$dir/defaults.conf" local old_conf_path="${XDG_CONFIG_HOME:-$HOME/.config}/$program.conf" if [ -x "$(command -v "$program_exe")" ]; then # stop any running $program if it exists "$program_exe" stop > /dev/null fi #copy config file abort () { exec echo "Installation aborted" } sudo mkdir -p "$(dirname $conf_path)" || abort # check if "-y" or "--yes" is passed as an argument YES=false while test $# -gt 0 do case "$1" in -y) YES=true ;; --yes) YES=true ;; esac shift done sudo chown $USER "$(dirname $conf_path)" if [ ! -f "$conf_path" ]; then if [ ! -f "$old_conf_path" ]; then # old config file not found, create from scratch cat "$dconf_path" > "$conf_path" || abort else # old config file found, move to the new path cat "$old_conf_path" > "$conf_path" || abort echo "Configuration copied from $old_conf_path to $conf_path" fi else # config file found, ask user if overwrite echo "Old conf file found in $conf_path" if [ "$YES" == false ]; then read -r -p "Keep the old conf file? (default: yes) [Y/n] " response response="${response,,}" # tolower if [[ "$response" =~ ^(no|n)$ ]]; then read -r -p "Conf file will be overwritten. Are you sure? [Y/n] " response response="${response,,}" if [[ "$response" =~ ^(yes|y)$ ]]; then cat "$dconf_path" > "$conf_path" || abort else abort fi fi fi fi echo "Installing to $program_exe ..." # remove existing $program if [ -x "$(command -v "$program_exe")" ]; then sudo rm -f "$(which "$program")" fi # compile library sudo "$compile_command" "$compile_target" -o "$program_exe" || abort # add permissions to input group (defer) # GROUP=$(ls -l /dev/input/event* | awk '{print $4}' | head --line=1) || abort # turn on autostart by default local autostart_status="$("$program_exe" autostart)" if [[ "$autostart_status" == *off* ]]; then autostart_status="$("$program_exe" autostart)" fi echo "Successfully installed $program $(cat $dir/VERSION | tr -d '[:space:]')" echo "" echo "$autostart_status" echo "Edit configuration file: gedit \$($program config)" echo "" echo "Try running: $program start" } install unset -f install