diff --git a/install.sh b/install.sh index 8805bbe..9257ffa 100755 --- a/install.sh +++ b/install.sh @@ -1,25 +1,42 @@ #!/bin/bash # shellcheck disable=SC1090 # dynamically sourced file -sequencer_gitUrl="https://winklerfamilie.eu/git/efelon/shell_sequencer.git" -defaultDir="/opt/sequencer" -defaultUserSeqs="/opt/seqs" +readonly sequencerGitUrl="https://winklerfamilie.eu/git/efelon/shell_sequencer.git" +defaultBranch="master" +readonly defaultDir="/opt/sequencer" +readonly defaultUserSeqs="/opt/seqs" +readonly sequencerBin="/usr/local/bin/sequencer.sh" sequencerDir= # Get script working directory -WDIR="$(cd "$(dirname -- "${BASH_SOURCE[0]}")" >>/dev/null 2>&1 && pwd)" +workDir="$(cd "$(dirname -- "${BASH_SOURCE[0]}")" >>/dev/null 2>&1 && pwd)" + +for _ in "$@"; do + case "${1:-}" in + --) + shift && break ;; + -b|--branch) # Clone a different branch than master + shift + defaultBranch="${1:-}" + shift ;; + esac +done sequencerDir="${1:-}" -# Installation directory was not set by argument -d +# Installation directory was not set by argument $1 if [ -z "${sequencerDir}" ]; then [ -w "$(dirname -- "${defaultDir}")" ] && sequencerDir="${defaultDir}" # Fallback to working directory - [ -z "${sequencerDir}" ] && sequencerDir="${WDIR}/sequencer" + [ -z "${sequencerDir}" ] && sequencerDir="${workDir}/sequencer" fi # Check if already installed if [ -d "${sequencerDir}" ]; then + if [[ $(readlink -- "${sequencerBin}") != ${sequencerDir}/sequencer.sh ]] && [[ -e "${sequencerDir}/sequencer.sh" ]] ; then + echo " [i] Repairing legacy symlink" + ln -fsT "${sequencerDir}/sequencer.sh" "${sequencerBin}" + fi echo " [e] Sequencer seems to be already installed at:" echo " ${sequencerDir}" exit 1 @@ -32,11 +49,11 @@ fi # Install git if neccessary if ! which git >>/dev/null 2>&1; then echo " [w] Git not found and will be installed" - + if ! apt update; then echo " [w] Cannot update apt repositories" fi - + if ! apt install git -y; then echo " [e] Cannot install git via apt" exit 3 @@ -44,9 +61,9 @@ if ! which git >>/dev/null 2>&1; then fi # Clone sequncer to target directory -if ! git clone "${sequencer_gitUrl}" "$sequencerDir"; then - echo " [E] Error cloning git repository:" - echo " ${sequencer_gitUrl}" +if ! git clone --branch "${defaultBranch}" "${sequencerGitUrl}" "$sequencerDir"; then + echo " [e] Error cloning git repository:" + echo " ${sequencerGitUrl}" exit 4 fi @@ -62,5 +79,5 @@ if [ "${SEQUENCER_USER_SEQS}" != "${sequencerDir}/seqs" ]; then ln -sT "${sequencerDir}/seqs" "${SEQUENCER_USER_SEQS}" fi -echo " [I] Successfully installed shell sequencer" +echo " [i] Successfully installed shell sequencer" echo " to: ${sequencerDir}"