2026-03-16 13:37:51 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
cd "$SCRIPT_DIR"
|
|
|
|
|
|
2026-03-16 23:28:57 +00:00
|
|
|
# 检查 uv
|
2026-03-16 13:37:51 +00:00
|
|
|
if ! command -v uv &> /dev/null; then
|
2026-03-16 23:28:57 +00:00
|
|
|
echo "❌ uv not found. Install: curl -LsSf https://astral.sh/uv/install.sh | sh" >&2
|
2026-03-16 13:37:51 +00:00
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2026-03-16 23:28:57 +00:00
|
|
|
# 子命令
|
|
|
|
|
case "${1:-}" in
|
|
|
|
|
sync|install)
|
|
|
|
|
echo "📦 Syncing dependencies..."
|
|
|
|
|
uv sync
|
|
|
|
|
exit $?
|
|
|
|
|
;;
|
|
|
|
|
add)
|
|
|
|
|
shift
|
|
|
|
|
echo "📦 Adding package: $@"
|
|
|
|
|
uv add "$@"
|
|
|
|
|
exit $?
|
|
|
|
|
;;
|
|
|
|
|
run)
|
|
|
|
|
shift
|
|
|
|
|
SCRIPT_NAME="$1"
|
|
|
|
|
shift
|
|
|
|
|
if [ -z "$SCRIPT_NAME" ]; then
|
|
|
|
|
echo "Usage: ./run.sh run <script> [args...]"
|
|
|
|
|
ls scripts/*.py | xargs -n1 basename | sed 's/\.py$//' | sed 's/^/ /'
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
uv run python "scripts/${SCRIPT_NAME}.py" "$@"
|
|
|
|
|
exit $?
|
|
|
|
|
;;
|
|
|
|
|
"")
|
|
|
|
|
echo "Excel Toolkit - uv managed"
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Usage:"
|
|
|
|
|
echo " ./run.sh sync # Install/sync dependencies"
|
|
|
|
|
echo " ./run.sh add <package> # Add a new dependency"
|
|
|
|
|
echo " ./run.sh run <script> # Run a script with uv"
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Scripts:"
|
|
|
|
|
ls scripts/*.py 2>/dev/null | xargs -n1 basename | sed 's/\.py$//' | sed 's/^/ /'
|
|
|
|
|
exit 0
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
# 兼容模式:直接当脚本名
|
|
|
|
|
SCRIPT_NAME="$1"
|
|
|
|
|
shift
|
|
|
|
|
SCRIPT_PATH="scripts/${SCRIPT_NAME}.py"
|
|
|
|
|
if [ ! -f "$SCRIPT_PATH" ]; then
|
|
|
|
|
echo "❌ Script not found: $SCRIPT_PATH" >&2
|
|
|
|
|
echo "Try: ./run.sh run <script>"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
uv run python "$SCRIPT_PATH" "$@"
|
|
|
|
|
exit $?
|
|
|
|
|
;;
|
|
|
|
|
esac
|