From 3e106001edd6f5c6c0f231a15b43a32cd7276301 Mon Sep 17 00:00:00 2001 From: qinglong Date: Sat, 13 Jun 2026 20:55:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=97=A0=E5=A4=B4=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=20start.sh=20/=20start.bat=20(=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E6=A3=80=E6=B5=8B=20+=20=E9=85=8D=E7=BD=AE=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=A4=8D=E5=88=B6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- start.bat | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ start.sh | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 start.bat create mode 100755 start.sh 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