PRbL/demo.sh
2023-05-09 12:06:56 -07:00

139 lines
No EOL
3.2 KiB
Bash
Executable file

#!/bin/bash
# Initial Vars
VERSION=1.2.1
scriptname="${BASH_SOURCE[0]##*/}"
rundir="${BASH_SOURCE[0]%/*}"
runuser="$(whoami)"
if [ ! -z $prbl_functions ] ; then
source $prbl_functions
else
if [ -f ${rundir}/functions ] ; then
source ${rundir}/functions
else
source <(curl -ks 'https://raw.githubusercontent.com/pyr0ball/PRbL/master/functions')
fi
fi
# Title
clear
boxborder \
"Pyr0ball's Bash Functions Library Demo v${VERSION}" \
"functions v${functionsrev}"
#boxborder
# Colorized output
boxborder \
"${lyl}Text Formatting${dfl}" \
$(boxseparator) \
"${red}Red Text Sample${dfl}" \
"${lrd}Light Red Text${dfl}" \
"${ong}Orange Text Sample${dfl}" \
"${ylw}Yellow Text Sample${dfl}" \
"${lyl}Light Yellow Text${dfl}" \
"${grn}Green Text Sample${dfl}" \
"${cyn}Cyan Text Sample${dfl}" \
"${lbl}Light Blue Text${dfl}" \
"${blu}Blue Text Sample${dfl}" \
"${pur}Purple Text Sample${dfl}" \
"${mag}Magenta Text Sample${dfl}" \
"${gry}Grey Text Sample${dfl}" \
$(boxseparator) \
"${bld}Bold Text Sample${dfl}" \
"${dim}Dim Text Sample${dfl}" \
"${unl}Underline Text${dfl}" \
"${inv}Inverted Text Sample${dfl}" \
"Default Text Sample" \
$(boxseparator) \
"${lyl}Combined Text Formatting${dfl}" \
"${red}${bld}Red + Bold Text${dfl}" \
"${red}${dim}Red + Dim Text${dfl}" \
"${red}${unl}Red + Underline${dfl}" \
"${red}${inv}Red + Inverted${dfl}"
# boxborder
# demo different box border types
echo ""
boxborder "${lyl}Bounding Boxes${dfl}"
box-double
boxborder "Double Line"
box-heavy
boxborder "Heavy"
box-light
boxborder "Light"
box-rounded
boxborder "Rounded"
box-singlechar
boxborder "Single Character"
box-norm
boxborder "Normal"
# Demo formatting transformations
# Center justified text:
center "${lyl}Center-Justified Text${dfl}"
# Spanner text
spanner "Spanner text" "end of line"
# Demo interactive menus
boxborder \
"${lyl}Keyboard Interactive Menus${dfl}"\
$(boxseparator) \
"Use Up/Down arrow keys, or [j|k] to navigate" \
"For Multiselect, use space bar to invert selection" \
"and 'Enter' to Confirm"
#boxborder
# Example for select_option
echo "Select one option using up/down keys and enter to confirm:"
echo
options=("one" "two" "three")
select_option "${options[@]}"
choice=$?
echo "Choosen index = $choice"
echo " value = ${options[$choice]}"
# Examples for select_opt
case `select_opt "Yes" "No" "Cancel"` in
0) echo "selected Yes";;
1) echo "selected No";;
2) echo "selected Cancel";;
esac
options=("Yes" "No" "${array[@]}") # join arrays to add some variable array
case `select_opt "${options[@]}"` in
0) echo "selected Yes";;
1) echo "selected No";;
*) echo "selected ${options[$?]}";;
esac
# Example for above multiselect functions
boxborder \
"Use arrow keys to select a line, spacebar to toggle" \
"Then 'enter' to confirm choices"
my_options=( "Option 1" "Option 2" "Option 3" )
preselection=( "true" "true" "false" )
multiselect result my_options preselection
idx=0
for option in "${my_options[@]}"; do
echo -e "$option\t=> ${result[idx]}"
((idx++))
done
# Spinner
for i in {1..19} ; do
boxborder "spinner$i demo"
set_spinner spinner$i
spin "sleep 3"
done