refactor: extract interactive menus into dedicated index scripts
- move apps menu from inline lxs.sh function to apps/index.sh - add tools/index.sh as entry point for tools menu - rename system-tools.sh to system-infos.sh - simplify help text to point users to the interactive menu - update README directory tree to reflect new structure
This commit is contained in:
Executable
+83
@@ -0,0 +1,83 @@
|
||||
#!/bin/bash
|
||||
|
||||
# LXS - Tools index
|
||||
# Description: Interactive menu listing the scripts in tools/
|
||||
# Author: LXS
|
||||
# Date: 2025
|
||||
|
||||
# Load LXS common library (colors, separator, run_spinner, loggers)
|
||||
LXS_RAW_BASE="${LXS_RAW_BASE:-https://git.hyko.cx/hykocx/lxs/raw/branch/main}"
|
||||
_lib=$(curl -fsSL "${LXS_RAW_BASE}/lib/common.sh") || { echo "Failed to fetch lib/common.sh" >&2; exit 1; }
|
||||
eval "$_lib"
|
||||
unset _lib
|
||||
|
||||
# Run a sibling tool script. Prefers a file next to this script (installed
|
||||
# layout); falls back to downloading from LXS_RAW_BASE.
|
||||
run_sibling() {
|
||||
local script_path=$1
|
||||
shift
|
||||
local script_name self_dir resolved src="${BASH_SOURCE[0]}"
|
||||
script_name=$(basename "$script_path")
|
||||
|
||||
if [ -n "$src" ]; then
|
||||
resolved=$(readlink -f "$src" 2>/dev/null) \
|
||||
|| resolved=$(realpath "$src" 2>/dev/null) \
|
||||
|| resolved="$src"
|
||||
self_dir=$(dirname "$resolved")
|
||||
fi
|
||||
|
||||
# self_dir points at tools/; the install layout puts siblings here too.
|
||||
if [ -n "$self_dir" ] && [ -f "${self_dir}/${script_name}" ]; then
|
||||
chmod +x "${self_dir}/${script_name}" 2>/dev/null || true
|
||||
"${self_dir}/${script_name}" "$@"
|
||||
return $?
|
||||
fi
|
||||
|
||||
local temp_file exit_code
|
||||
temp_file=$(mktemp "/tmp/lxs.${script_name%.*}.XXXXXX.sh")
|
||||
echo -e "${PURPLE}[*] Downloading ${BOLD}${script_name}${NC}${PURPLE}...${NC}"
|
||||
if curl -fsSL -H "Cache-Control: no-cache" -o "${temp_file}" "${LXS_RAW_BASE}/${script_path}"; then
|
||||
echo -e "${GREEN}[✓] Downloaded${NC}"
|
||||
chmod +x "${temp_file}"
|
||||
"${temp_file}" "$@"
|
||||
exit_code=$?
|
||||
rm -f "${temp_file}"
|
||||
return $exit_code
|
||||
else
|
||||
echo -e "${RED}[✗] Failed to download ${script_path}${NC}"
|
||||
rm -f "${temp_file}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
menu_tools() {
|
||||
while true; do
|
||||
clear
|
||||
echo -e "${WHITE}╔═══════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${WHITE}║ TOOLS ║${NC}"
|
||||
echo -e "${WHITE}╚═══════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo -e " ${CYAN}[1]${NC} System Infos"
|
||||
echo -e " ${PURPLE}[2]${NC} Server Benchmark"
|
||||
echo -e " ${YELLOW}[3]${NC} Harden Server"
|
||||
echo -e " ${RED}[0]${NC} Back"
|
||||
echo ""
|
||||
echo -e -n "${BOLD}Choice [0-3]: ${NC}"
|
||||
read -r choice
|
||||
|
||||
case $choice in
|
||||
1) run_sibling "tools/system-infos.sh" ;;
|
||||
2) run_sibling "tools/server-benchmark.sh" ;;
|
||||
3) run_sibling "tools/harden.sh" ;;
|
||||
0) return ;;
|
||||
*) echo -e "${RED}[✗] Invalid option. Please select 0-3.${NC}"; sleep 1; continue ;;
|
||||
esac
|
||||
|
||||
if [ "$choice" != "0" ]; then
|
||||
echo ""
|
||||
read -r -p "Press Enter to continue..."
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
menu_tools
|
||||
+8
-54
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# LXS - System Tools
|
||||
# LXS - System Infos
|
||||
# Description: Essential system monitoring and diagnostic tools
|
||||
# Author: LXS
|
||||
# Date: 2025
|
||||
@@ -10,52 +10,14 @@ LXS_RAW_BASE="${LXS_RAW_BASE:-https://git.hyko.cx/hykocx/lxs/raw/branch/main}"
|
||||
_lib=$(curl -fsSL "${LXS_RAW_BASE}/lib/common.sh") || { echo "Failed to fetch lib/common.sh" >&2; exit 1; }
|
||||
eval "$_lib"
|
||||
unset _lib
|
||||
export LXS_LOG_FILE="/tmp/lxs_system_tools.log"
|
||||
export LXS_LOG_FILE="/tmp/lxs_system_infos.log"
|
||||
|
||||
# Run a sibling tool script. Prefers a file next to this script (installed
|
||||
# layout); falls back to downloading from LXS_RAW_BASE.
|
||||
run_sibling() {
|
||||
local script_path=$1
|
||||
shift
|
||||
local script_name self_dir resolved src="${BASH_SOURCE[0]}"
|
||||
script_name=$(basename "$script_path")
|
||||
|
||||
if [ -n "$src" ]; then
|
||||
resolved=$(readlink -f "$src" 2>/dev/null) \
|
||||
|| resolved=$(realpath "$src" 2>/dev/null) \
|
||||
|| resolved="$src"
|
||||
self_dir=$(dirname "$resolved")
|
||||
fi
|
||||
|
||||
if [ -n "$self_dir" ] && [ -f "${self_dir}/${script_name}" ]; then
|
||||
chmod +x "${self_dir}/${script_name}" 2>/dev/null || true
|
||||
"${self_dir}/${script_name}" "$@"
|
||||
return $?
|
||||
fi
|
||||
|
||||
local temp_file exit_code
|
||||
temp_file=$(mktemp "/tmp/lxs.${script_name%.*}.XXXXXX.sh")
|
||||
echo -e "${PURPLE}[*] Downloading ${BOLD}${script_name}${NC}${PURPLE}...${NC}"
|
||||
if curl -fsSL -H "Cache-Control: no-cache" -o "${temp_file}" "${LXS_RAW_BASE}/${script_path}"; then
|
||||
echo -e "${GREEN}[✓] Downloaded${NC}"
|
||||
chmod +x "${temp_file}"
|
||||
"${temp_file}" "$@"
|
||||
exit_code=$?
|
||||
rm -f "${temp_file}"
|
||||
return $exit_code
|
||||
else
|
||||
echo -e "${RED}[✗] Failed to download ${script_path}${NC}"
|
||||
rm -f "${temp_file}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Menu: System Tools
|
||||
menu_system_tools() {
|
||||
# Menu: System Infos
|
||||
menu_system_infos() {
|
||||
while true; do
|
||||
clear
|
||||
echo -e "${WHITE}╔═══════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${WHITE}║ SYSTEM TOOLS ║${NC}"
|
||||
echo -e "${WHITE}║ SYSTEM INFOS ║${NC}"
|
||||
echo -e "${WHITE}╚═══════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo -e " ${CYAN}[1]${NC} View system informations"
|
||||
@@ -66,11 +28,9 @@ menu_system_tools() {
|
||||
echo -e " ${CYAN}[6]${NC} View system logs (last 50 lines)"
|
||||
echo -e " ${CYAN}[7]${NC} Show top resource-consuming processes"
|
||||
echo -e " ${CYAN}[8]${NC} Check disk health (SMART)"
|
||||
echo -e " ${PURPLE}[9]${NC} Server Benchmark"
|
||||
echo -e " ${YELLOW}[10]${NC} Harden Server"
|
||||
echo -e " ${RED}[0]${NC} Exit"
|
||||
echo ""
|
||||
echo -e -n "${BOLD}Choice [0-10]: ${NC}"
|
||||
echo -e -n "${BOLD}Choice [0-8]: ${NC}"
|
||||
read -r choice
|
||||
|
||||
echo ""
|
||||
@@ -306,17 +266,11 @@ menu_system_tools() {
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
9)
|
||||
run_sibling "tools/server-benchmark.sh"
|
||||
;;
|
||||
10)
|
||||
run_sibling "tools/harden.sh"
|
||||
;;
|
||||
0)
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}[✗] Invalid option. Please select 0-10.${NC}"
|
||||
echo -e "${RED}[✗] Invalid option. Please select 0-8.${NC}"
|
||||
sleep 2
|
||||
continue
|
||||
;;
|
||||
@@ -329,5 +283,5 @@ menu_system_tools() {
|
||||
done
|
||||
}
|
||||
|
||||
menu_system_tools
|
||||
menu_system_infos
|
||||
|
||||
|
||||
Reference in New Issue
Block a user