X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=charsel;h=077b10f87f8e11bf2c0e29cbdc1b528b31fe9528;hb=b53b2bac1b5e1dbd648d2225355ea4d70857f0e5;hp=3961cf2f38bd47bd8b9aa3e0f2938fa8591ea270;hpb=a0ab9edae51a8ef6e0334691a7b905dbbac87835;p=charsel.git diff --git a/charsel b/charsel index 3961cf2..077b10f 100755 --- a/charsel +++ b/charsel @@ -1,28 +1,81 @@ -#!/usr/bin/env sh +#!/usr/bin/env bash # Merge both global and local charfiles -mkdir ~/.cache/charsel/ & -cp /usr/share/charsel/* ~/.cache/charsel/ -cp ~/.local/share/charsel/* ~/.cache/charsel/ CHARDIR=~/.cache/charsel -# clear screen +if [[ ! -d $CHARDIR ]] +then + mkdir $CHARDIR/ +elif [[ ! "$(ls -A $CHARDIR)" ]] +then + cp -rf /usr/share/charsel/- $CHARDIR/ + cp -rf $HOME/.local/share/charsel/- $CHARDIR/ +fi + +# Check for user inputs +if [[ $1 == "list" \ + || $1 == "-l" \ + || $1 == "--list" ]] +then + echo "The following charfiles are installed" + ls $CHARDIR/charfiles + exit 0 +elif [[ $1 == "help" \ + || $1 == "-h" \ + || $1 == "--help" \ + || $# -ne 1 ]] +then + cat /usr/share/doc/charsel/README.md + exit 0 +fi + +# Define charfile path +CHARFILE=$CHARDIR/charfiles/$1 + +if [[ ! -f $CHARFILE ]] +then + echo "Please enter a valid charfile. You can list installed charfiles with \`charsel list\`" + exit 1 +fi + +# Define length of shortcut +LENGTH=$(cat $CHARFILE \ + | cut -f 1 -d ',' -s \ + | wc -L \ + | cut -b 1) + +# Clear screen clear +# Main program while : do + # Format charfile into table, showing only the shortcuts below the divider in the charfile + cat $CHARFILE \ + | grep -A 100 - \ + | tail -n +2 \ + | column -t -N input,output --output-separator ' | ' --separator ',' + + echo "*-------------------------*" + echo "| previous shorcode:" $INPUT + echo "| previous output: " $OUTPUT + echo "*-------------------------*" - # Put charfile into table - column -t $CHARDIR/$1 -N SHORT,CHAR -R SHORT,CHAR --output-separator ' | ' - read INPUT - - # Navigate to the right characther - OUTPUT=$(grep $INPUT $CHARDIR/$1 | cut -c 3) + # User input + read -p "| input shortcode: " -N $LENGTH INPUT + + # This can definately be simplifed, but it works fine + LINENUMBER=$(cut -f 1 -d ',' -s $CHARFILE \ + | grep -wn $INPUT \ + | cut -d : -f 1) + OUTPUT=$(cut -f 2 -d ',' -s $CHARFILE \ + | head -$LINENUMBER \ + | tail +$LINENUMBER) + + # Copy output to clipboard + echo $OUTPUT | xclip -selection clipboard # Clear screen clear - # Print output, and copy to clipboard - echo $OUTPUT - echo $OUTPUT | xclip -selection clipboard done