]> git.armaanb.net Git - charsel.git/commitdiff
added ';' as an exit
authorArmaan Bhojwani <3fb650a9-b47e-4604-a282-1dd91953b2ee@anonaddy.me>
Sun, 18 Oct 2020 03:32:05 +0000 (23:32 -0400)
committerArmaan Bhojwani <3fb650a9-b47e-4604-a282-1dd91953b2ee@anonaddy.me>
Sun, 18 Oct 2020 03:32:05 +0000 (23:32 -0400)
README.md
charsel

index 9df7c548e892bf83d38a57c5cf7959002a90ec64..0126f3d5e2a03cbaf4a466e0cd9e10f27e91048c 100644 (file)
--- 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 56e1fdf244dfd622206370bb0b014baccb10fe8c..c274ef84a53beee3aedad859a1093c6ad23c19ee 100755 (executable)
--- 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