#!/bin/bash --posix set -e DIRECTORY="/usr/local/share/nano" usage() { printf "%s\n" "Usage: bash Install-Nano.bash -d --directory | -d Explanation: The directory to install the nano syntax highlighting files to Default: /usr/local/share/nano/ Example: --syntax-directory ~/.nano/ Requires two things: - Directory names \"Nano-Syntax-Highlighting\" that contains .nanorc files - File \".nanorc\" that contains configuration settings for nano" } error() { printf "\n%s\n" "$1" >&2 exit 1 } confirmation() { while true; do read -p "${1}" -n 1 -r choice case "$choice" in y|Y ) return 1;; n|N ) return 0;; * ) echo -e "\nInput must be either y, Y, n, or N";; esac done } while :; do case $1 in -h | -\? | --help) usage # Display a usage synopsis. exit ;; --) # End of all options. shift break ;; -d | --directory) shift DIRECTORY="${1}" ;; -?*) printf 'Unknown option: %s\n' "$1" >&2 usage error ;; *) # Default case: No more options, so break out of the loop. break ;; esac shift done [[ "${DIRECTORY}" == "" ]] && error "A directory was not provided!" [[ ! -d "${DIRECTORY}" ]] && error "The directory \"${DIRECTORY}\" does not exist" [[ $(! test -w "${DIRECTORY}") ]] && error "You lack permissions to write to \"${DIRECTORY}\"" [[ $(confirmation "Copying *.nanorc files to ${DIRECTORY}, continue (y/N)? ") ]] && exit 1 [[ $(nano -V | head -n 1 | grep 5.) == "" ]] && error "Nano version is not 5.X, consult nano -V and update nano." echo "Copying syntax files to ${DIRECTORY}" cp -R "Nano-Syntax-Highlighting/" "${DIRECTORY}" NANORC_CONTENT="$(cat ./.nanorc)" cat << EOF > ~/.nanorc ${NANORC_CONTENT} include ${DIRECTORY}/*.nanorc" EOF echo "Successfully installed custom nanorc, see ~/.nanorc"