########################################################################
+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
--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
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
cp -rf /usr/share/charsel/* $CHARDIR
fi
+# Look for arguments
+while getopts ":lhdv" arg
+do
+ case ${arg} in
+ h)
+ usage
+ exit 0
+ ;;
+ l)
+ list
+ exit 0
+ ;;
+ d)
+ readme
+ exit 0
+ ;;
+ v)
+ echo "charsel" $VERSION
+ 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 ]]
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 \
# 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