diff --git a/start.bat b/start.bat new file mode 100644 index 0000000..03e13bb --- /dev/null +++ b/start.bat @@ -0,0 +1,71 @@ +@echo off +chcp 65001 >nul +setlocal enabledelayedexpansion +title SenSu Server + +cd /d "%~dp0" + +echo 🐱 SenSu 依赖检测... +echo. + +set PASS=0 +set FAIL=0 + +:: ── Python ── +python --version >nul 2>&1 +if %errorlevel% equ 0 ( + echo [OK] Python + set /a PASS+=1 +) else ( + echo [FAIL] Python 未安装 + set /a FAIL+=1 +) + +:: ── Python 依赖 ── +python -c "import aiohttp" >nul 2>&1 +if %errorlevel% equ 0 (echo [OK] aiohttp& set /a PASS+=1) else (echo [FAIL] aiohttp 缺失& set /a FAIL+=1) + +python -c "import yaml" >nul 2>&1 +if %errorlevel% equ 0 (echo [OK] PyYAML& set /a PASS+=1) else (echo [FAIL] PyYAML 缺失& set /a FAIL+=1) + +python -c "import textual" >nul 2>&1 +if %errorlevel% equ 0 (echo [OK] Textual& set /a PASS+=1) else (echo [FAIL] Textual 缺失& set /a FAIL+=1) + +python -c "import watchdog" >nul 2>&1 +if %errorlevel% equ 0 (echo [OK] watchdog& set /a PASS+=1) else (echo [FAIL] watchdog 缺失& set /a FAIL+=1) + +python -c "import psutil" >nul 2>&1 +if %errorlevel% equ 0 (echo [OK] psutil& set /a PASS+=1) else (echo [FAIL] psutil 缺失& set /a FAIL+=1) + +python -c "import rich" >nul 2>&1 +if %errorlevel% equ 0 (echo [OK] rich& set /a PASS+=1) else (echo [FAIL] rich 缺失& set /a FAIL+=1) + +:: ── 配置文件 ── +if exist "config\framework\base_config.yaml" ( + echo [OK] base_config.yaml + set /a PASS+=1 +) else if exist "config\framework\base_config.yaml.example" ( + copy "config\framework\base_config.yaml.example" "config\framework\base_config.yaml" >nul + echo [OK] 从模板创建 base_config.yaml + set /a PASS+=1 +) else ( + echo [FAIL] 配置文件缺失 + set /a FAIL+=1 +) + +echo. +if %FAIL% gtr 0 ( + echo [FAIL] %FAIL% 项缺失,请先安装: pip install -r requirements.txt + pause + exit /b 1 +) + +echo [OK] 所有依赖就绪 (%PASS% 项) +echo. +echo 🚀 启动 SenSu (无头模式)... +echo Web 面板: http://0.0.0.0:4200/SenSu +echo. + +python main.py --headless + +pause diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..dfa6be4 --- /dev/null +++ b/start.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# SenSu 无头启动脚本 (Linux/macOS/Termux) +# 自动检测依赖完整性后启动 + +set -e +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +cd "$SCRIPT_DIR" + +# ── 颜色 ── +RED='\033[31m'; GREEN='\033[32m'; YELLOW='\033[33m'; NC='\033[0m' +pass=0; fail=0 +check() { + if command -v "$1" &>/dev/null || python3 -c "$2" 2>/dev/null; then + echo -e " ${GREEN}✓${NC} $3" + pass=$((pass+1)) + else + echo -e " ${RED}✗${NC} $3 ${YELLOW}(缺失)${NC}" + fail=$((fail+1)) + fi +} + +echo "🐱 SenSu 依赖检测..." +echo "" + +# ── 系统依赖 ── +check "python3" "" "Python 3.11+" +python3 -c "import sys; assert sys.version_info >= (3,11)" 2>/dev/null || { + echo -e " ${YELLOW}⚠ Python 版本过低,需要 3.11+${NC}" + fail=$((fail+1)) +} + +# ── Python 核心依赖 ── +check "" "import aiohttp" "aiohttp (Web 服务)" +check "" "import yaml" "PyYAML (配置文件)" +check "" "import textual" "Textual (TUI)" +check "" "import watchdog" "watchdog (热重载)" +check "" "import psutil" "psutil (系统监控)" +check "" "import rich" "rich (终端美化)" + +# ── 配置文件 ── +if [ -f "config/framework/base_config.yaml" ]; then + echo -e " ${GREEN}✓${NC} base_config.yaml" + pass=$((pass+1)) +elif [ -f "config/framework/base_config.yaml.example" ]; then + cp config/framework/base_config.yaml.example config/framework/base_config.yaml + echo -e " ${GREEN}✓${NC} 从模板创建 base_config.yaml" + pass=$((pass+1)) +else + echo -e " ${RED}✗${NC} 配置文件缺失 (无模板可用)" + fail=$((fail+1)) +fi + +echo "" +if [ "$fail" -gt 0 ]; then + echo -e "${RED}❌ $fail 项缺失,请先安装: pip install -r requirements.txt${NC}" + exit 1 +fi + +echo -e "${GREEN}✅ 所有依赖就绪 ($pass 项)${NC}" +echo "" +echo "🚀 启动 SenSu (无头模式)..." +echo " Web 面板: http://0.0.0.0:4200/SenSu" +echo "" + +python3 main.py --headless