1
1
Fork 0
mirror of https://github.com/azur1s/bobbylisp.git synced 2024-10-16 02:37:40 -05:00

feat: (almost) working install script

This commit is contained in:
Natapat Samutpong 2022-01-26 21:41:02 +07:00
parent b78cb3b9a4
commit 32f5f422d3

View file

@ -1,29 +1,37 @@
#!/bin/bash
tput sc
# --- Initialization ---
set +x
path=$(pwd)
tput smcup # Switch to alternate screen so we preserve the terminal history
tput civis
function clear_print() {
tput rc
trap clean_up INT
clean_up() {
tput rmcup
tput cnorm
echo "${1:-Goodbye! o/}"
exit 0
}
function print_menu() {
# --- Displaying ---
print_menu() {
local function_arguments=($@)
local selected_item="$1"
local menu_items=(${function_arguments[@]:1})
local menu_size="${#menu_items[@]}"
for (( i = 0; i < $menu_size; ++i ))
do
for (( i = 0; i < $menu_size; ++i )) do
if [ "$i" = "$selected_item" ]
then
echo "* ${menu_items[i]}"
else
echo " ${menu_items[i]}"
then echo -e "\033[2K\e[1m>\e[0m \e[1;33m${menu_items[i]}\e[0m"
else echo -e "\033[2K ${menu_items[i]}"
fi
done
}
function run_menu() {
run_menu() {
local function_arguments=($@)
local selected_item="$1"
@ -31,13 +39,12 @@ function run_menu() {
local menu_size="${#menu_items[@]}"
local menu_limit=$((menu_size - 1))
clear_print
clear
print_menu "$selected_item" "${menu_items[@]}"
while read -rsn1 input
do
case "$input"
in
case "$input" in
$'\x1B')
read -rsn1 -t 0.1 input
if [ "$input" = "[" ]
@ -49,44 +56,84 @@ function run_menu() {
if [ "$selected_item" -ge 1 ]
then
selected_item=$((selected_item - 1))
clear_print
clear
print_menu "$selected_item" "${menu_items[@]}"
fi
;;
fi;;
B) # Arrow down
if [ "$selected_item" -lt "$menu_limit" ]
then
selected_item=$((selected_item + 1))
clear_print
clear
print_menu "$selected_item" "${menu_items[@]}"
fi
;;
fi;;
esac
fi
read -rsn5 -t 0.1 # stdin flush
;;
# stdin flush
read -rsn5 -t 0.1;;
"") # Enter
return "$selected_item"
;;
return "$selected_item";;
esac
done
}
selected_item=0
menu_items=("Install" "Uninstall" "Exit")
# --- Installation ---
run_menu "$selected_item" "${menu_items[@]}"
menu_result="$?"
install() {
local selected_install_item=0
local install_opts=("Download" "Compile" "Compile(Debug)" "Exit")
run_menu "$selected_install_item" "${install_opts[@]}"
local install_chosen="$?"
case "$menu_result"
in
0)
echo "Install selected"
;;
case "$install_chosen" in
0) echo "There is no release yet, please hold tight!";;
1)
echo "Uninstall selected"
;;
echo "Setting up folders..."
mkdir -p ~/.cache/
rm -rf ~/.cache/bobbylisp/
echo "Cloning repository..."
cd ~/.cache/
git clone https://github.com/azur1s/bobbylisp
cd ~/.cache/bobbylisp/
echo "Compiling..."
cargo build --release
mv ~/.cache/bobbylisp/target/release/blspc ~/bin/blspc
clean_up "Done! Thanks a lot for trying out Bobbylisp!";;
2)
echo "Goodbye"
;;
echo "Setting up folders..."
mkdir -p ~/.cache/
rm -rf ~/.cache/bobbylisp/
echo "Cloning repository..."
cd ~/.cache/
git clone https://github.com/azur1s/bobbylisp
cd ~/.cache/bobbylisp/
echo "Compiling..."
cargo build
mv ~/.cache/bobbylisp/target/debug/blspc ~/bin/blspc
clean_up "Done! Thanks a lot for trying out Bobbylisp!";;
3) clean_up;;
esac
}
uninstall() {
echo "Uninstalling blspc..."
rm ~/bin/blspc -f
rm /usr/bin/blspc -f
sleep 1s
echo "Uninstalling trolley..."
rm ~/bin/trolley -f
rm /usr/bin/trolley -f
sleep 1s
clean_up "Sad to see you go! Goodbye! o/"
}
selected_item=0
menu_opts=("Install" "Uninstall" "Exit")
run_menu "$selected_item" "${menu_opts[@]}"
menu_chosen="$?"
case "$menu_chosen" in
0) install;;
1) uninstall;;
2) clean_up;;
esac