101 lines
2.9 KiB
Bash
Executable File
101 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Jibo Auto-Mod Tool - Linux/macOS Launcher
|
|
# This script checks dependencies and runs the auto-mod tool
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
echo ""
|
|
echo "============================================================"
|
|
echo " JIBO AUTO-MOD TOOL - Linux Launcher"
|
|
echo "============================================================"
|
|
echo ""
|
|
|
|
# Check for Python 3
|
|
if ! command -v python3 &> /dev/null; then
|
|
echo "[ERROR] Python 3 not found!"
|
|
echo " Install with: sudo apt install python3"
|
|
exit 1
|
|
fi
|
|
|
|
PYVER=$(python3 --version)
|
|
echo "[INFO] Found $PYVER"
|
|
|
|
# Check if running as root
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "[INFO] Not running as root. sudo will be used when needed."
|
|
# Check if we can sudo
|
|
if ! sudo -v &> /dev/null; then
|
|
echo "[WARNING] Cannot use sudo. USB operations may fail."
|
|
fi
|
|
fi
|
|
|
|
# Check for required tools
|
|
check_tool() {
|
|
if ! command -v "$1" &> /dev/null; then
|
|
echo "[WARNING] $1 not found. Install: $2"
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
MISSING=0
|
|
check_tool "lsusb" "sudo apt install usbutils" || MISSING=1
|
|
check_tool "make" "sudo apt install build-essential" || MISSING=1
|
|
check_tool "gcc" "sudo apt install build-essential" || MISSING=1
|
|
check_tool "arm-none-eabi-gcc" "sudo apt install gcc-arm-none-eabi" || MISSING=1
|
|
|
|
if [ $MISSING -eq 1 ]; then
|
|
echo ""
|
|
echo "[WARNING] Some dependencies are missing. The tool will try to continue"
|
|
echo " but some features may not work."
|
|
echo ""
|
|
fi
|
|
|
|
# Run the tool
|
|
echo "[INFO] Starting Jibo Auto-Mod Tool..."
|
|
echo ""
|
|
|
|
LAUNCH_MODE="cli"
|
|
|
|
if [[ -t 0 ]]; then
|
|
echo "Choose installer mode:"
|
|
echo " 1) CLI installer (recommended)"
|
|
echo " 2) GUI installer (experimental - still in progress)"
|
|
echo ""
|
|
echo "[RECOMMENDED] CLI mode is currently the most reliable."
|
|
echo "[WARNING] GUI mode is still being worked on."
|
|
echo ""
|
|
read -r -p "Select [1/2] (default: 1): " choice
|
|
case "${choice:-1}" in
|
|
2) LAUNCH_MODE="gui" ;;
|
|
*) LAUNCH_MODE="cli" ;;
|
|
esac
|
|
else
|
|
echo "[INFO] Non-interactive shell detected; defaulting to CLI installer."
|
|
fi
|
|
|
|
if [[ "$LAUNCH_MODE" == "gui" ]]; then
|
|
echo ""
|
|
echo "[WARNING] Launching experimental GUI installer..."
|
|
|
|
# Use (or create) a local venv so PySide6 installs cleanly.
|
|
VENV_PY="$SCRIPT_DIR/.venv/bin/python"
|
|
if [[ ! -x "$VENV_PY" ]]; then
|
|
echo "[INFO] Creating virtual environment in .venv ..."
|
|
python3 -m venv "$SCRIPT_DIR/.venv"
|
|
fi
|
|
|
|
echo "[INFO] Installing GUI dependencies (PySide6 + paramiko)..."
|
|
"$VENV_PY" -m pip install --upgrade pip >/dev/null
|
|
"$VENV_PY" -m pip install -r "$SCRIPT_DIR/JiboTools/JiboTools/requirements.txt"
|
|
|
|
echo "[INFO] Starting Jibo Tools GUI..."
|
|
exec "$VENV_PY" "$SCRIPT_DIR/JiboTools/JiboTools/main_panel.py" "$@"
|
|
fi
|
|
|
|
echo "[INFO] Starting CLI installer..."
|
|
python3 jibo_automod.py "$@"
|