40 lines
942 B
Bash
40 lines
942 B
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Excel Toolkit 统一入口脚本
|
||
|
|
# 自动使用 uv run 执行,确保虚拟环境隔离
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
cd "$SCRIPT_DIR"
|
||
|
|
|
||
|
|
# 检测 uv 是否可用
|
||
|
|
if ! command -v uv &> /dev/null; then
|
||
|
|
echo "❌ uv not found. Install with: curl -LsSf https://astral.sh/uv/install.sh | sh" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 确保依赖已同步
|
||
|
|
if [ ! -d ".venv" ]; then
|
||
|
|
echo "📦 Syncing dependencies..."
|
||
|
|
uv sync
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 执行脚本
|
||
|
|
SCRIPT_NAME="$1"
|
||
|
|
shift
|
||
|
|
|
||
|
|
if [ -z "$SCRIPT_NAME" ]; then
|
||
|
|
echo "Usage: ./run.sh <script_name> [args...]"
|
||
|
|
echo ""
|
||
|
|
echo "Available scripts:"
|
||
|
|
ls scripts/*.py 2>/dev/null | xargs -n1 basename | sed 's/\.py$//' | sed 's/^/ /'
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
SCRIPT_PATH="scripts/${SCRIPT_NAME}.py"
|
||
|
|
if [ ! -f "$SCRIPT_PATH" ]; then
|
||
|
|
echo "❌ Script not found: $SCRIPT_PATH" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "🚀 Running: $SCRIPT_PATH $@"
|
||
|
|
uv run python "$SCRIPT_PATH" "$@"
|