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:
parent
b78cb3b9a4
commit
32f5f422d3
123
install.sh
123
install.sh
|
@ -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
|
||||
}
|
||||
|
||||
# --- Installation ---
|
||||
|
||||
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 "$install_chosen" in
|
||||
0) echo "There is no release yet, please hold tight!";;
|
||||
1)
|
||||
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 "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_items=("Install" "Uninstall" "Exit")
|
||||
menu_opts=("Install" "Uninstall" "Exit")
|
||||
|
||||
run_menu "$selected_item" "${menu_items[@]}"
|
||||
menu_result="$?"
|
||||
run_menu "$selected_item" "${menu_opts[@]}"
|
||||
menu_chosen="$?"
|
||||
|
||||
case "$menu_result"
|
||||
in
|
||||
0)
|
||||
echo "Install selected"
|
||||
;;
|
||||
1)
|
||||
echo "Uninstall selected"
|
||||
;;
|
||||
2)
|
||||
echo "Goodbye"
|
||||
;;
|
||||
case "$menu_chosen" in
|
||||
0) install;;
|
||||
1) uninstall;;
|
||||
2) clean_up;;
|
||||
esac
|
Loading…
Reference in a new issue