########################################################################
+VERSION=2.0.1
+
# Define argument functions
function usage() {
echo "Usage: /usr/bin/charsel [OPTION]... [CHARFILE]...
-h show this message
-l show installed charfiles
-d show readme
+ -v print version
+ -c check charfile validity
--all include hidden shortcodes
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
cat /usr/share/doc/charsel/README.md
}
-function invalid_charfile() {
+function missing_charfile() {
echo "The selected charfile is missing or invalid"
list
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
-fi
-
# Merge global and local charfiles
if [[ -d $CHARDIR ]]
then
fi
# Check if charfile exists
+CHARFILE="$CHARDIR/charfiles/$2"
+function existence() {
+ if [[ ! -f $CHARFILE ]]
+ then
+ missing_charfile
+ fi
+}
+
+# VERY basic syntax check
+function validity() {
+ if [[ $(grep , $CHARFILE && grep - $CHARFILE) ]]
+ then
+ echo "valid charfile"
+ else
+ existence
+ echo "invalid charfile"
+ exit 2
+ fi
+}
+
+# Look for arguments
+while getopts ":lchdv" arg
+do
+ case ${arg} in
+ h)
+ usage
+ exit 0
+ ;;
+ l)
+ list
+ exit 0
+ ;;
+ d)
+ readme
+ exit 0
+ ;;
+ v)
+ echo "charsel" $VERSION
+ exit 0
+ ;;
+ c)
+ validity
+ exit 0
+ ;;
+ ?)
+ echo "Invalid option"
+ usage
+ exit 3
+ ;;
+ :)
+ break
+ ;;
+ esac
+done
+shift $((OPTIND-1))
+
+# Redefine charfile and check file validity
CHARFILE="$CHARDIR/charfiles/$1"
-if [[ ! -f $CHARFILE ]]
+existence
+validity
+
+# Dependency check
+if [[ -x xclip ]]
then
- invalid_charfile
+ echo "Please install xclip."
+ exit 4
fi
# Define length of shortcode
# User input
read -p "| input shortcode: " -N $LENGTH INPUT
- # This can definately be simplifed, but it works fine
- # Finds line number of shortcode
- LINENUMBER=$(cut -f 1 -d ',' -s $CHARFILE | grep -wn $INPUT | cut -d : -f 1)
-
- # Outputs character selected above
- OUTPUT=$(cut -f 2 -d ',' -s $CHARFILE | head -$LINENUMBER | tail +$LINENUMBER)
-
- # Check to see if the shortcode actually exists
- if [[ $(cut -f 1 -d ',' -s $CHARFILE | grep -wnc $INPUT) == "0" ]]
+ if [[ $INPUT == ";"* ]] # Semicolon exits
+ then
+ clear
+ exit 0
+ elif [[ $INPUT == " "* ]] # Spaces dont count
then
OUTPUT=""
- fi
+ clear
+ else
+ # Finds line number of shortcode
+ LINENUMBER=$(cut -f 1 -d ',' -s $CHARFILE | grep -wn $INPUT | cut -d : -f 1)
+
+ # Outputs character selected above
+ OUTPUT=$(cut -f 2 -d ',' -s $CHARFILE | head -$LINENUMBER | tail +$LINENUMBER)
- # Copy output to clipboard
- echo $OUTPUT | xclip -selection clipboard
+ # Check to see if the shortcode actually exists
+ if [[ $(cut -f 1 -d ',' -s $CHARFILE | grep -wnc $INPUT) == "0" ]]
+ then
+ OUTPUT=""
+ fi
- clear
+ # Copy output to clipboard
+ echo $OUTPUT | xclip -selection clipboard
+
+ clear
+ fi
done