#!/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 <https://www.gnu.org/licenses/>.
+
+########################################################################
+
# Merge both global and local charfiles
-CHARDIR=~/.cache/charsel
+CHARDIR=$HOME/.cache/charsel
if [[ ! -d $CHARDIR ]]
then
cp -rf $HOME/.local/share/charsel/- $CHARDIR/
fi
+# Check for xclip
+if [[ ! -f "$(which xclip)" ]]
+then
+ echo "Please install xclip."
+ exit 1
+fi
+
# Check for user inputs
if [[ $1 == "list" \
|| $1 == "-l" \
|| $1 == "--list" ]]
then
- echo "The following charfiles are installed"
+ echo "The following charfiles are installed:"
ls $CHARDIR/charfiles
exit 0
elif [[ $1 == "help" \
# Define charfile path
CHARFILE=$CHARDIR/charfiles/$1
+# Check if given charfile exists
if [[ ! -f $CHARFILE ]]
then
- echo "Please enter a valid charfile. You can list installed charfiles with \`charsel list\`"
+ echo "Please enter a valid charfile."
+ charsel list
exit 1
fi
-# Define length of shortcut
+# Define length of shortcode
LENGTH=$(cat $CHARFILE \
| cut -f 1 -d ',' -s \
| wc -L \
| cut -b 1)
-# Clear screen
clear
# Main program
-while :
+while true
do
- # Format charfile into table, showing only the shortcuts below the divider in the charfile
+ # 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
# 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 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
+ echo $OUTPUT \
+ | xclip -selection clipboard
- # Clear screen
clear
done