#!/usr/bin/env bash

set -u

selected=""

function package_manage () {
	while true; do

	clear
    echo " ┌──────────────────────┐"
    echo " │ [Package Management] │"
    echo " ├──────────────────────┴───────────────────────────┐"
    echo " │  1 - Update All Packages   2 - Search Package    │"
    echo " │  3 - Install Package       4 - Remove Package    │"
    echo " │  5 - Show Package Details  6 - Clean Caches      │"
    echo " │  7 - Remove orphaned packages                    │"
    echo " │                            0 - Cancel            │"
    echo " └──────────────────────────────────────────────────┘"

    echo -n " [select] > "
	read -n1 selected
	echo ""

	if [[ ${selected} == "0" ]]; then
		return
	fi

	if [[ ${selected} != "1" ]] && [[ ${selected} != "6" ]]; then
		local package_name
    	echo -n " [Package name?] > "
		read package_name
		if [[ ${package_name} == "0" ]]; then
			return
		fi
	fi


	echo ""
	case ${selected} in
		0) return                           ;;
		1) sudo pacman -Syu                 ;;
		2)      pacman -Ss ${package_name}  ;;
		3) sudo pacman -S ${package_name}   ;;
		4) sudo pacman -Rns ${package_name} ;;
		5)      pacman -Qi ${package_name}  ;;
		6) sudo pacman -Scc                 ;;
		7) sudo pacman -Rns $(pacman -Qtdq) ;;
	esac
	echo " Completed!!"
	echo " Press any key to continue..."
	read -n1 selected

	done
}

function time_settings () {
	while true; do

	clear
    echo " ┌─────────────────┐"
    echo " │ [Time Settings] │"
    echo " ├─────────────────┴──────────────────────────────────┐"
    echo " │ 1 - Change Time Zone        2 - Sync Time with NTP │"
    echo " │ 3 - Write to Hardware Clock 4 - Enable auto sync   │"
    echo " │                                                    │"
    echo " │                             0 - Cancel             │"
    echo " └────────────────────────────────────────────────────┘"

    echo -n " [select] > "
	read -n1 selected

	echo ""
	case ${selected} in
		0) return                          ;;
		1) tzselect                        ;;
		2) sudo ntpdate -B pool.ntp.org    ;;
		3) sudo hwclock --systohc --local  ;;
		4) sudo timedatectl set-ntp true   ;;
	esac
	echo ""

	done
}

function system_info () {
	while true; do
	clear
    echo " ┌──────────────────────┐ "
    echo " │  [Show System Info]  │"
    echo " ├──────────────────────┴───────────────────────────┐"
    echo " │  1 - System Version      2 - IP Address          │"
    echo " │  3 - Kernel Messages     4 - Block Devices       │"
    echo " │  5 - PCI Devices                                 │"
    echo " │                                                  │"
    echo " │                          0 - Cancel              │"
    echo " └──────────────────────────────────────────────────┘"

    echo -n " [select] > "
    	read -n1 selected

	echo ""
	case ${selected} in
		0) return                   ;;
		1) unifetch                 ;;
		2) ip address show | tee $HOME/ip-address-show-$(date +%Y%m%d-%H%M%S).log     ;;
		3) sudo dmesg | tee $HOME/dmesg-$(date +%Y%m%d-%H%M%S).log  ;;
		4) lsblk -a | tee $HOME/lsblk-$(date +%Y%m%d-%H%M%S).log    ;;
		5) lspci | tee $HOME/lspci-$(date +%Y%m%d-%H%M%S).log       ;;
	esac


	if [[ ${selected} == "2" ]]; then
		echo -e "\n Outputted to log file.\n Please check /home/$(whoami)/ip-address-show-$(date +%Y%m%d-%H%M%S).log"
	fi

	if [[ ${selected} == "3" ]]; then
		echo -e "\n Outputted to log file.\n Please check /home/$(whoami)/dmesg-$(date +%Y%m%d-%H%M%S).log"
	fi


	if [[ ${selected} == "4" ]]; then
		echo -e "\n Outputted to log file.\n Please check /home/$(whoami)/lsblk-$(date +%Y%m%d-%H%M%S).log"
	fi


	if [[ ${selected} == "5" ]]; then
		echo -e "\n Outputted to log file.\n Please check /home/$(whoami)/lxpci-$(date +%Y%m%d-%H%M%S).log"
	fi

	echo -e "\n Press any key to continue..."
	read -n1 selected

	done
}

function main () {
	clear
    echo " ┌────────────────────────────┐"
    echo " │ [Welcome to system menu!!] │"
    echo " ├────────────────────────────┴─────────────────────┐"
    echo " │ 1 - Display         2 - Network                  │"
    echo " │ 3 - Sound           4 - Package Management       │"
    echo " │ 5 - Time settings   6 - System Information       │"
    echo " │                                                  │"
    echo " │                     0 - Exit                     │"
    echo " └──────────────────────────────────────────────────┘"

    echo -n " [select] > "
	read -n1 selected

	echo ""
	case ${selected} in
		0) clear && exit 0  ;;
		1) arandr           ;;
		2) nmtui            ;;
		3) alsamixer        ;;
		4) package_manage   ;;
		5) time_settings    ;;
		6) system_info      ;;
	esac
	echo ""
}

while true; do
	main
done
