Adds with script
This commit is contained in:
parent
744039f96d
commit
86d72f9efb
1 changed files with 67 additions and 0 deletions
67
bin/.bin/with
Executable file
67
bin/.bin/with
Executable file
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Originally borrowed from here: https://github.com/tomnomnom/with/blob/master/with
|
||||||
|
# As such credit should go to tomnomnom
|
||||||
|
|
||||||
|
# with tool
|
||||||
|
# usage: with <program>
|
||||||
|
# opens an interactive shell instance that automatically prefixes all subsequent commands with program name
|
||||||
|
|
||||||
|
pmpt="$*>"
|
||||||
|
|
||||||
|
prefix=$*
|
||||||
|
|
||||||
|
which $1 2>&1 > /dev/null
|
||||||
|
program_installed=$?
|
||||||
|
if [ ! $program_installed -eq 0 ]; then
|
||||||
|
echo "error: Program" $1 "is not installed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
stop=false
|
||||||
|
while [ true ]; do
|
||||||
|
while IFS="" read -r -e -d $'\n' -p "$pmpt " options; do
|
||||||
|
history -s "$options"
|
||||||
|
|
||||||
|
curr_command="$(echo $options | { read first rest ; echo $first ; })"
|
||||||
|
|
||||||
|
if [ -z "$curr_command" ]; then
|
||||||
|
# null case
|
||||||
|
eval "${prefix}"
|
||||||
|
else
|
||||||
|
# remove with
|
||||||
|
if [ $curr_command == - ]; then
|
||||||
|
prefix=$( echo $prefix | awk '{$NF="";sub(/[ \t]+$/,"")}1' )
|
||||||
|
pmpt="$prefix>"
|
||||||
|
# nesting withs
|
||||||
|
elif [[ $curr_command == +* ]]; then
|
||||||
|
parsed=${options#"+"}
|
||||||
|
prefix=$( echo "$prefix" "$parsed" )
|
||||||
|
pmpt="$prefix>"
|
||||||
|
# process shell commands
|
||||||
|
elif [[ $curr_command == :* ]]; then
|
||||||
|
parsed=${options#":"}
|
||||||
|
if [ "$parsed" = "q" ]; then
|
||||||
|
# terminate out of while loop instead of exiting so we can do some safe exiting
|
||||||
|
stop=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
eval "$parsed"
|
||||||
|
else
|
||||||
|
eval "$prefix $options"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# see if there are any commands left
|
||||||
|
if [ -z "$prefix" ]; then
|
||||||
|
echo "No program. Returning to shell."
|
||||||
|
# null case
|
||||||
|
stop=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ stop=true ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
Loading…
Add table
Add a link
Reference in a new issue