Files
orquestra/scripts/commit_feature.sh
rikrdo 634525fa21 feat: Orquestra - sequential orchestration runtime
- Context isolation: fresh Pi process per stage (run_stage.py)
- Gate enforcement: blocks close without approved gates
- Auto commit/push on feature close (close_feature.py)
- Write restrictions: only allowed directories (ALLOWED_WRITE_DIRS)
- Pi extension: orquestra-status with /orquestra-stage command
- Documentation: context-handoff.md, updated README
- Scripts: agent_status.py, verify.sh, install.sh updated
2026-08-17 07:39:03 +02:00

59 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Commit and optionally push a completed feature
# Usage: ./scripts/commit_feature.sh <feature_id>
set -euo pipefail
FEATURE_ID="${1:-}"
if [ -z "$FEATURE_ID" ]; then
echo "[FAIL] Usage: $0 <feature_id>" >&2
exit 1
fi
# Check if git repo
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
echo "[SKIP] Not a git repository, skipping commit"
exit 0
fi
# Stage all changes (excluding node_modules, dist, .next, etc.)
git add -A
# Check if there are changes to commit
if git diff --cached --quiet; then
echo "[SKIP] No changes to commit for $FEATURE_ID"
exit 0
fi
# Create commit message
COMMIT_MSG="feat($FEATURE_ID): completed feature"
# Check if there's a description in the feature
if [ -f "work/current.md" ]; then
# Extract first line of description if available
DESC=$(grep -m1 "^## Description" work/current.md -A1 2>/dev/null | tail -1 | sed 's/^[[:space:]]*//' || true)
if [ -n "$DESC" ]; then
COMMIT_MSG="$COMMIT_MSG
$DESC"
fi
fi
# Commit
git commit -m "$COMMIT_MSG"
echo "[OK] Committed $FEATURE_ID"
# Check if remote exists and push
if git remote get-url origin >/dev/null 2>&1; then
BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo "[INFO] Pushing to origin/$BRANCH..."
if git push origin "$BRANCH"; then
echo "[OK] Pushed to origin/$BRANCH"
else
echo "[WARN] Push failed (you can push manually later)"
fi
else
echo "[SKIP] No remote 'origin' configured, skipping push"
fi