2025-09-12 10:27:43 -07:00
|
|
|
#!/usr/bin/env bash
|
2025-09-20 12:14:42 -07:00
|
|
|
|
2025-09-12 10:27:43 -07:00
|
|
|
set -e
|
2025-09-20 12:14:42 -07:00
|
|
|
|
|
|
|
|
# Parse command line arguments
|
2025-09-12 10:27:43 -07:00
|
|
|
JSON_MODE=false
|
2025-09-20 12:14:42 -07:00
|
|
|
ARGS=()
|
|
|
|
|
|
|
|
|
|
for arg in "$@"; do
|
|
|
|
|
case "$arg" in
|
2026-07-10 12:47:36 -04:00
|
|
|
--json)
|
|
|
|
|
JSON_MODE=true
|
2025-09-20 12:14:42 -07:00
|
|
|
;;
|
2026-07-10 12:47:36 -04:00
|
|
|
--help|-h)
|
2025-09-20 12:14:42 -07:00
|
|
|
echo "Usage: $0 [--json]"
|
|
|
|
|
echo " --json Output results in JSON format"
|
|
|
|
|
echo " --help Show this help message"
|
2026-07-10 12:47:36 -04:00
|
|
|
exit 0
|
2025-09-20 12:14:42 -07:00
|
|
|
;;
|
2026-07-10 12:47:36 -04:00
|
|
|
*)
|
|
|
|
|
ARGS+=("$arg")
|
2025-09-20 12:14:42 -07:00
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Get script directory and load common functions
|
2025-10-25 11:34:26 +02:00
|
|
|
SCRIPT_DIR="$(CDPATH="" cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
2025-09-12 10:27:43 -07:00
|
|
|
source "$SCRIPT_DIR/common.sh"
|
2025-09-20 12:14:42 -07:00
|
|
|
|
|
|
|
|
# Get all paths and variables from common functions
|
2026-03-13 16:47:17 +01:00
|
|
|
_paths_output=$(get_feature_paths) || { echo "ERROR: Failed to resolve feature paths" >&2; exit 1; }
|
|
|
|
|
eval "$_paths_output"
|
|
|
|
|
unset _paths_output
|
2025-09-20 12:14:42 -07:00
|
|
|
|
|
|
|
|
# Ensure the feature directory exists
|
2025-09-12 10:27:43 -07:00
|
|
|
mkdir -p "$FEATURE_DIR"
|
2025-09-20 12:14:42 -07:00
|
|
|
|
2026-05-27 07:17:34 -05:00
|
|
|
# Copy plan template if plan doesn't already exist
|
|
|
|
|
if [[ -f "$IMPL_PLAN" ]]; then
|
|
|
|
|
if $JSON_MODE; then
|
|
|
|
|
echo "Plan already exists at $IMPL_PLAN, skipping template copy" >&2
|
|
|
|
|
else
|
|
|
|
|
echo "Plan already exists at $IMPL_PLAN, skipping template copy"
|
|
|
|
|
fi
|
2025-09-12 10:27:43 -07:00
|
|
|
else
|
2026-08-10 10:22:31 -05:00
|
|
|
if resolve_template_content "plan-template" "$REPO_ROOT" > "$IMPL_PLAN"; then
|
2026-05-27 07:17:34 -05:00
|
|
|
if $JSON_MODE; then
|
|
|
|
|
echo "Copied plan template to $IMPL_PLAN" >&2
|
|
|
|
|
else
|
|
|
|
|
echo "Copied plan template to $IMPL_PLAN"
|
|
|
|
|
fi
|
|
|
|
|
else
|
2026-08-10 10:22:31 -05:00
|
|
|
resolve_status=$?
|
|
|
|
|
rm -f "$IMPL_PLAN"
|
|
|
|
|
if [ "$resolve_status" -ne 1 ]; then
|
|
|
|
|
exit "$resolve_status"
|
|
|
|
|
fi
|
2026-05-27 07:17:34 -05:00
|
|
|
if $JSON_MODE; then
|
|
|
|
|
echo "Warning: Plan template not found" >&2
|
|
|
|
|
else
|
|
|
|
|
echo "Warning: Plan template not found"
|
|
|
|
|
fi
|
|
|
|
|
touch "$IMPL_PLAN"
|
|
|
|
|
fi
|
2025-09-20 12:14:42 -07:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Output results
|
|
|
|
|
if $JSON_MODE; then
|
2026-03-13 16:47:17 +01:00
|
|
|
if has_jq; then
|
|
|
|
|
jq -cn \
|
|
|
|
|
--arg feature_spec "$FEATURE_SPEC" \
|
|
|
|
|
--arg impl_plan "$IMPL_PLAN" \
|
|
|
|
|
--arg specs_dir "$FEATURE_DIR" \
|
|
|
|
|
--arg branch "$CURRENT_BRANCH" \
|
2026-06-09 06:13:07 -05:00
|
|
|
'{FEATURE_SPEC:$feature_spec,IMPL_PLAN:$impl_plan,SPECS_DIR:$specs_dir,BRANCH:$branch}'
|
2026-03-13 16:47:17 +01:00
|
|
|
else
|
2026-06-09 06:13:07 -05:00
|
|
|
printf '{"FEATURE_SPEC":"%s","IMPL_PLAN":"%s","SPECS_DIR":"%s","BRANCH":"%s"}\n' \
|
|
|
|
|
"$(json_escape "$FEATURE_SPEC")" "$(json_escape "$IMPL_PLAN")" "$(json_escape "$FEATURE_DIR")" "$(json_escape "$CURRENT_BRANCH")"
|
2026-03-13 16:47:17 +01:00
|
|
|
fi
|
2025-09-20 12:14:42 -07:00
|
|
|
else
|
|
|
|
|
echo "FEATURE_SPEC: $FEATURE_SPEC"
|
2026-07-10 12:47:36 -04:00
|
|
|
echo "IMPL_PLAN: $IMPL_PLAN"
|
2025-09-20 12:14:42 -07:00
|
|
|
echo "SPECS_DIR: $FEATURE_DIR"
|
|
|
|
|
echo "BRANCH: $CURRENT_BRANCH"
|
2025-09-12 10:27:43 -07:00
|
|
|
fi
|