X-Git-Url: https://git.armaanb.net/?p=charsel.git;a=blobdiff_plain;f=charsel;h=6e687e681f7c54bfe9d6915e34b6f4f456249765;hp=c274ef84a53beee3aedad859a1093c6ad23c19ee;hb=5a438f89bca0f0d143ece98d3aa149d97a354702;hpb=b1e333869fe2ad2558e6cb1eb0e94d8655cdadf9 diff --git a/charsel b/charsel index c274ef8..6e687e6 100755 --- a/charsel +++ b/charsel @@ -19,6 +19,8 @@ ######################################################################## +VERSION=2.0.1 + # Define argument functions function usage() { echo "Usage: /usr/bin/charsel [OPTION]... [CHARFILE]... @@ -26,6 +28,8 @@ A simple terminal character selector -h show this message -l show installed charfiles -d show readme + -v print version + -c check charfile validity --all include hidden shortcodes Exit status: @@ -46,19 +50,12 @@ function readme() { cat /usr/share/doc/charsel/README.md } -function invalid_charfile() { +function missing_charfile() { echo "The selected charfile is missing or invalid" list exit 1 } -# Check if Xclip is installed -if [[ -x xclip ]] -then - echo "Please install xclip." - exit 4 -fi - # Merge global and local charfiles if [[ -d $CHARDIR ]] then @@ -85,8 +82,29 @@ then cp -rf /usr/share/charsel/* $CHARDIR 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 ":lhd" arg +while getopts ":lchdv" arg do case ${arg} in h) @@ -101,6 +119,14 @@ do readme exit 0 ;; + v) + echo "charsel" $VERSION + exit 0 + ;; + c) + validity + exit 0 + ;; ?) echo "Invalid option" usage @@ -113,20 +139,16 @@ do done shift $((OPTIND-1)) -# Check if charfile exists +# Redefine charfile and check file validity CHARFILE="$CHARDIR/charfiles/$1" -if [[ ! -f $CHARFILE ]] -then - invalid_charfile -fi +existence +validity -# VERY basic syntax validation -if [[ $(grep , $CHARFILE && grep - $CHARFILE) ]] +# Dependency check +if [[ -x xclip ]] then - echo "valid charfile" -else - echo "invalid charfile" - exit 2 + echo "Please install xclip." + exit 4 fi # Define length of shortcode @@ -164,27 +186,30 @@ do # 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" ]] - then - OUTPUT="" - fi - - if [[ $INPUT == ";"* ]] + if [[ $INPUT == ";"* ]] # Semicolon exits then clear exit 0 - fi + elif [[ $INPUT == " "* ]] # Spaces dont count + then + OUTPUT="" + 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) + + # Check to see if the shortcode actually exists + if [[ $(cut -f 1 -d ',' -s $CHARFILE | grep -wnc $INPUT) == "0" ]] + then + OUTPUT="" + fi - # Copy output to clipboard - echo $OUTPUT | xclip -selection clipboard + # Copy output to clipboard + echo $OUTPUT | xclip -selection clipboard - clear + clear + fi done