From b1e333869fe2ad2558e6cb1eb0e94d8655cdadf9 Mon Sep 17 00:00:00 2001 From: Armaan Bhojwani <3fb650a9-b47e-4604-a282-1dd91953b2ee@anonaddy.me> Date: Sat, 17 Oct 2020 23:32:05 -0400 Subject: [PATCH] added ';' as an exit --- README.md | 4 +-- charsel | 79 +++++++++++++++++++++++++++++++++---------------------- 2 files changed, 50 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 9df7c54..0126f3d 100644 --- a/README.md +++ b/README.md @@ -17,14 +17,14 @@ It uses a plain-text file known as a "charfile" to define easy to reach shortcut ## Usage For argument usage, use `charsel -h` -Once you have started the program, simply type the shortcut listed on the left side of the table to copy the character on the right side of the table to your clipboard. Shortcodes the same length as the longest one will automatically be entered. To quit, use ^C +Once you have started the program, simply type the shortcut listed on the left side of the table to copy the character on the right side of the table to your clipboard. Shortcodes the same length as the longest one will automatically be entered. To quit, use ^C, or type ';' as a shortcode Some of the default charfiles have hidden shortcuts for capital letters that are not shown on the table. Simply type a capital version of the shortcut key to access the capital version of the special character. ## Creating a charfile Make a new file in the `~/.local/share/charsel/charfiles/` or `/usr/share/charsel/charfiles/` directories with the name that you would like to use to call the charfile in the command. -Fill it in, using the provided examples as a template. Hidden shortcuts go above the '-', lines can be commented out using a '#' at the start of the line +Fill it in, using the provided examples as a template. Hidden shortcuts go above the '-', lines can be commented out using a '#' at the start of the line. ';' cannot be used as a shortcode, as that is used to quit the program ## License Charfile is GNU GPLv3 licensed, see COPYING for more information diff --git a/charsel b/charsel index 56e1fdf..c274ef8 100755 --- a/charsel +++ b/charsel @@ -30,8 +30,10 @@ A simple terminal character selector Exit status: 0 okay, - 1 invalid charfile - 2 usage error/invalid option" + 1 charfile does not exist, + 2 charfile syntax error, + 3 usage error/invalid option, + 4 other error" } CHARDIR=$HOME/.cache/charsel @@ -50,39 +52,11 @@ function invalid_charfile() { exit 1 } -# Look for arguments -while getopts ":lhd" arg -do - case ${arg} in - h) - usage - exit 0 - ;; - l) - list - exit 0 - ;; - d) - readme - exit 0 - ;; - ?) - echo "Invalid option" - usage - exit 2 - ;; - :) - break - ;; - esac -done -shift $((OPTIND-1)) - # Check if Xclip is installed if [[ -x xclip ]] then echo "Please install xclip." - exit 1 + exit 4 fi # Merge global and local charfiles @@ -111,6 +85,34 @@ then cp -rf /usr/share/charsel/* $CHARDIR fi +# Look for arguments +while getopts ":lhd" arg +do + case ${arg} in + h) + usage + exit 0 + ;; + l) + list + exit 0 + ;; + d) + readme + exit 0 + ;; + ?) + echo "Invalid option" + usage + exit 3 + ;; + :) + break + ;; + esac +done +shift $((OPTIND-1)) + # Check if charfile exists CHARFILE="$CHARDIR/charfiles/$1" if [[ ! -f $CHARFILE ]] @@ -118,6 +120,15 @@ then invalid_charfile fi +# VERY basic syntax validation +if [[ $(grep , $CHARFILE && grep - $CHARFILE) ]] +then + echo "valid charfile" +else + echo "invalid charfile" + exit 2 +fi + # Define length of shortcode LENGTH=$(cat $CHARFILE \ | cut -f 1 -d ',' -s \ @@ -166,6 +177,12 @@ do OUTPUT="" fi + if [[ $INPUT == ";"* ]] + then + clear + exit 0 + fi + # Copy output to clipboard echo $OUTPUT | xclip -selection clipboard -- 2.39.2