X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=charsel;h=5ee8b80da8e0cf683a20cf04c60077c33068aa87;hb=964160e6b899f5074aec9a23faaf176df38bbbbd;hp=17b3266bc8d3961f810ec8d95490a881bde1e2f2;hpb=cd756876f0f5cb07e3d11a379833b2e59e449802;p=charsel.git diff --git a/charsel b/charsel index 17b3266..5ee8b80 100755 --- a/charsel +++ b/charsel @@ -1,56 +1,125 @@ #!/usr/bin/env bash +####################################################################### + +# (C) Copyright Armaan Bhojwani, 2020 + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +######################################################################## + # Merge both global and local charfiles -CHARDIR=~/.cache/charsel +CHARDIR=$HOME/.cache/charsel if [[ ! -d $CHARDIR ]] then mkdir $CHARDIR/ -elif [[! "$(ls -A $CHARDIR)"]] +elif [[ ! "$(ls -A $CHARDIR)" ]] +then + cp -rf /usr/share/charsel/- $CHARDIR/ + cp -rf $HOME/.local/share/charsel/- $CHARDIR/ +fi + +# Check for xclip +if [[ ! -f "$(which xclip)" ]] then - cp -rf /usr/share/charsel/* $CHARDIR/ - cp -rf ~/.local/share/charsel/* $CHARDIR/ + echo "Please install xclip." + exit 1 fi # Check for user inputs -if [ $1 = "list" ] +if [[ $1 == "list" \ + || $1 == "-l" \ + || $1 == "--list" ]] then - echo "The following charfiles are installed" + echo "The following charfiles are installed:" ls $CHARDIR/charfiles - exit -elif [[ $1 = "help" || $1 = "-h" || $1 = "--help" || $# -ne 1 ]] + exit 0 +elif [[ $1 == "help" \ + || $1 == "-h" \ + || $1 == "--help" \ + || $# -ne 1 ]] then cat /usr/share/doc/charsel/README.md - exit -else - -# Clear screen -clear + exit 0 +fi # Define charfile path CHARFILE=$CHARDIR/charfiles/$1 -# Define length of shortcut -LENGTH=$(cat $CHARFILE | cut -f 1 -d ',' -s | wc -L | cut -b 1) +# Check if given charfile exists +if [[ ! -f $CHARFILE ]] +then + echo "Please enter a valid charfile." + charsel list + exit 1 +fi + +# Define length of shortcode +LENGTH=$(cat $CHARFILE \ + | cut -f 1 -d ',' -s \ + | wc -L \ + | cut -b 1) + +clear # Main program -while : +while true do - # Put charfile into table, showing only the shortcuts below the divider in the charfile - cat $CHARFILE | grep -A 100 - | tail -n +2 | column -t --output-separator ' | ' --separator ',' + # Format output + echo "*---------*---------------*" + echo "| CHARSEL |" $1 + echo "*---------*---------------*" + echo "" + + cat $CHARFILE \ + | sed -e '/^[ \t]*#/d' \ + | grep -A 100 - \ + | tail -n +2 \ + | column -t -N input,output --output-separator ' | ' --separator ',' + + echo "" + echo "*-------------------------*" + echo "| previous shorcode:" $INPUT + echo "| previous output: " $OUTPUT + echo "*-------------------------*" + + # User input + read -p "| input shortcode: " -N $LENGTH INPUT - # Automatically enter input - read -N $LENGTH INPUT - # This can definately be simplifed, but it works fine - LINENUMBER=$(cut -f 1 -d ',' -s $CHARFILE | grep -n $INPUT | cut -d : -f 1) - OUTPUT=$(cut -f 2 -d ',' -s $CHARFILE | head -$LINENUMBER | tail +$LINENUMBER) + # Finds line number of shortcode + LINENUMBER=$(cut -f 1 -d ',' -s $CHARFILE \ + | grep -wn $INPUT \ + | cut -d : -f 1) - # Clear screen - clear + # Outputs charachter 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 -done + echo $OUTPUT \ + | xclip -selection clipboard -fi + clear + +done