#!/usr/bin/env bash set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT" ask() { local prompt="$1"; local def="${2:-}"; local val if [ -n "$def" ]; then read -r -p "$prompt [$def]: " val || true echo "${val:-$def}" else read -r -p "$prompt: " val || true echo "$val" fi } echo "=== ARNES start wizard ===" echo "Mode: clone arnes-fork, put your app folder inside, run this wizard." PROJECT_NAME="$(ask 'Project name' 'my-project')" PROJECT_DESC="$(ask 'Project description' 'Project using ARNES template')" APP_DIR="$(ask 'App directory (relative)' 'app')" STACK_CHOICE="$(ask 'Stack preset (1=default Flask+MariaDB+Skeleton, 2=custom)' '1')" if [ "$STACK_CHOICE" = "2" ]; then BACKEND="$(ask 'Backend stack' 'python/flask')" DB="$(ask 'Database' 'mariadb')" CSSFW="$(ask 'CSS framework' 'skeleton')" else BACKEND="python/flask" DB="mariadb" CSSFW="skeleton" fi TEST_CMD="$(ask 'Test command' 'make test')" LINT_CMD="$(ask 'Lint command (optional)' '')" MODEL_MODE="$(ask 'Model mode (lean/balanced/power)' 'lean')" ADD_BOOTSTRAP="$(ask 'Create bootstrap ticket F-001 now? (y/n)' 'y')" mkdir -p "$APP_DIR" if [ "$CSSFW" = "skeleton" ]; then mkdir -p "$APP_DIR/static/css" "$APP_DIR/static/images" cp -n defaults/flask-skeleton/static/css/normalize.css "$APP_DIR/static/css/normalize.css" || true cp -n defaults/flask-skeleton/static/css/skeleton.css "$APP_DIR/static/css/skeleton.css" || true cp -n defaults/flask-skeleton/static/images/favicon.png "$APP_DIR/static/images/favicon.png" || true fi cat > harness/project.config.json < scripts/verify.local.sh <<'SH' #!/usr/bin/env bash set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT" if [ ! -f "harness/project.config.json" ]; then echo "[LOCAL] missing harness/project.config.json" exit 1 fi APP_DIR=$(python3 - <<'PY' import json from pathlib import Path cfg=json.loads(Path('harness/project.config.json').read_text()) print(cfg.get('app_dir','app')) PY ) TEST_CMD=$(python3 - <<'PY' import json from pathlib import Path cfg=json.loads(Path('harness/project.config.json').read_text()) print(cfg.get('commands',{}).get('test','')) PY ) LINT_CMD=$(python3 - <<'PY' import json from pathlib import Path cfg=json.loads(Path('harness/project.config.json').read_text()) print(cfg.get('commands',{}).get('lint','')) PY ) if [ ! -d "$APP_DIR" ]; then echo "[LOCAL] app dir not found: $APP_DIR" exit 1 fi echo "[LOCAL] app dir OK: $APP_DIR" if [ -n "$LINT_CMD" ]; then echo "[LOCAL] lint: $LINT_CMD" bash -lc "$LINT_CMD" fi if [ -n "$TEST_CMD" ]; then echo "[LOCAL] test: $TEST_CMD" bash -lc "$TEST_CMD" fi echo "[LOCAL] OK" SH chmod +x scripts/verify.local.sh python3 - < work/current.md </dev/null || true echo "" echo "Done. Project configured." echo "- Config: harness/project.config.json" echo "- Local checks: scripts/verify.local.sh" echo "- Ticket tool: python3 scripts/new_ticket.py" echo "- Verify: ./scripts/verify.sh" echo "- Runtime: python3 scripts/agent_status.py show"