diff --git a/cheat/cheat b/cheat/cheat index 6259686..10d8cd9 100755 --- a/cheat/cheat +++ b/cheat/cheat @@ -12,26 +12,25 @@ boundry="" ## This function determines which http get tool the system has installed and returns an error if there isnt one getConfiguredClient() { - if command -v curl &>/dev/null ; then + if command -v curl &>/dev/null; then configuredClient="curl" - elif command -v wget &>/dev/null ; then + elif command -v wget &>/dev/null; then configuredClient="wget" - elif command -v fetch &>/dev/null ; then + elif command -v fetch &>/dev/null; then configuredClient="fetch" else echo "Error: This tool reqires either curl, wget, or fetch to be installed." return 1 fi - } ## Allows to call the users configured client without if statements everywhere httpGet() { case "$configuredClient" in - curl) curl -A curl -s "$@";; - wget) wget -qO- "$@";; - fetch) fetch -o "...";; + curl) curl -A curl -s "$@" ;; + wget) wget -qO- "$@" ;; + fetch) fetch -o "..." ;; esac } @@ -51,10 +50,10 @@ update() nameOfInstallFile="install.sh" # change this if the installer file has a different name be sure to include file extension if there is one latestVersion=$(httpGet https://api.github.com/repos/$githubUserName/$repositoryName/tags | grep -Eo '"name":.*?[^\\]",'| head -1 | grep -Eo "[0-9.]+" ) #always grabs the tag without the v option - if [[ $currentVersion == "" || $repositoryName == "" || $githubUserName == "" || $nameOfInstallFile == "" ]];then + if [[ $currentVersion == "" || $repositoryName == "" || $githubUserName == "" || $nameOfInstallFile == "" ]]; then echo "Error: update utility has not been configured correctly." >&2 exit 1 - elif [[ $latestVersion == "" ]];then + elif [[ $latestVersion == "" ]]; then echo "Error: no active internet connection" >&2 exit 1 else @@ -62,11 +61,11 @@ update() echo "Version $latestVersion available" echo -n "Do you wish to update $repositoryName [Y/n]: " read -r answer - if [[ "$answer" == "Y" || "$answer" == "y" ]] ;then - cd ~ || { echo 'Update Failed' ; exit 1 ; } - if [[ -d ~/$repositoryName ]]; then rm -r -f $repositoryName || { echo "Permissions Error: try running the update as sudo"; exit 1; } ; fi + if [[ "$answer" == [Yy] ]]; then + cd ~ || { echo 'Update Failed'; exit 1; } + if [[ -d ~/$repositoryName ]]; then rm -r -f $repositoryName || { echo "Permissions Error: try running the update as sudo"; exit 1; } ; fi git clone "https://github.com/$githubUserName/$repositoryName" || { echo "Couldn't download latest version" ; exit 1; } - cd $repositoryName || { echo 'Update Failed' ; exit 1 ;} + cd $repositoryName || { echo 'Update Failed'; exit 1; } git checkout "v$latestVersion" 2> /dev/null || git checkout "$latestVersion" 2> /dev/null || echo "Couldn't git checkout to stable release, updating to latest commit." chmod a+x install.sh #this might be necessary in your case but wasnt in mine. ./$nameOfInstallFile "update" || exit 1 @@ -84,33 +83,35 @@ update() usage() { - echo "Cheat" - echo "Description: Cheatsheets for quick information about multiple programming languages along with terminal commands" - echo "Usage: cheat [flags] [command] or cheat [flags] [programming language] [subject]" - echo " -s Does a search for last argument rather than looking for exact match" - echo " -i Case insensitive search" - echo " -b Word boundaries in search" - echo " -r Recursive search" - echo " -u Update Bash-Snippet Tools" - echo " -h Show the help" - echo " -v Get the tool version" - echo "Special Pages:" - echo " hello Describes building the hello world program written in the language" - echo " list This lists all cheatsheets related to previous arg if none it lists all cheatsheets" - echo " learn Shows a learn-x-in-minutes language cheat sheet perfect for getting started with the language" - echo " 1line A collection of one-liners in this language" - echo " weirdness A collection of examples of weird things in this language" - echo "Examples:" - echo " cheat rust hello" - echo " cheat -r -b -i go" - echo " cheat julia Functions" - echo " cheat -i go operators" +cat <&2 - exit 1 - ;; - h) - usage - exit 0 - ;; - v) - echo "Version $currentVersion" - exit 0 - ;; - u) - update - exit 0 - ;; - i) - insensitive="i" - search="1" - ;; - b) - boundry="b" - search="1" - ;; - r) - recursive="r" - search="1" - ;; - s) - search="1" - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - exit 1 - ;; + case "$opt" in + \?) echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + h) usage + exit 0 + ;; + v) echo "Version $currentVersion" + exit 0 + ;; + u) update + exit 0 + ;; + i) insensitive="i" + search="1" + ;; + b) boundry="b" + search="1" + ;; + r) recursive="r" + search="1" + ;; + s) search="1" + ;; + :) echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; esac done ### This functions sets arg 1 and arg 2 to be unqique items after the options -for arg -do - if [[ $arg != "-r" && $arg != "-s" && $arg != "-b" && $arg != "-i" ]];then - if [ -z ${arg1+x} ];then +for arg; do + if [[ $arg != "-r" && $arg != "-s" && $arg != "-b" && $arg != "-i" ]]; then + if [ -z ${arg1+x} ]; then arg1=$arg fi - if [ ! -z ${arg1+x} ];then + if [ ! -z ${arg1+x} ]; then arg2=$arg fi fi @@ -214,14 +205,14 @@ checkSpecialPage $arg2 2 if [[ $# == 0 ]]; then usage exit 0 -elif [[ $1 == "update" ]];then +elif [[ $1 == "update" ]]; then update exit 0 -elif [[ $1 == "help" || $1 == ":help" ]];then ## shows the help and prevents the user from seeing cheat.sh/:help +elif [[ $1 == "help" || $1 == ":help" ]]; then ## shows the help and prevents the user from seeing cheat.sh/:help usage exit 0 else - if [[ $arg1 != $arg2 ]];then ## if they equal each other that means there was no arg 2 supplied + if [[ $arg1 != $arg2 ]]; then ## if they equal each other that means there was no arg 2 supplied getCheatSheet $arg1 $arg2 exit 0 else @@ -229,5 +220,4 @@ else exit 0 fi exit 0 - fi