Initial checkin
This commit is contained in:
77
scripts/common.sh
Normal file
77
scripts/common.sh
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/bin/bash
|
||||
# Common functions and variables for all scripts
|
||||
|
||||
# Get repository root
|
||||
get_repo_root() {
|
||||
git rev-parse --show-toplevel
|
||||
}
|
||||
|
||||
# Get current branch
|
||||
get_current_branch() {
|
||||
git rev-parse --abbrev-ref HEAD
|
||||
}
|
||||
|
||||
# Check if current branch is a feature branch
|
||||
# Returns 0 if valid, 1 if not
|
||||
check_feature_branch() {
|
||||
local branch="$1"
|
||||
if [[ ! "$branch" =~ ^[0-9]{3}- ]]; then
|
||||
echo "ERROR: Not on a feature branch. Current branch: $branch"
|
||||
echo "Feature branches should be named like: 001-feature-name"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
# Get feature directory path
|
||||
get_feature_dir() {
|
||||
local repo_root="$1"
|
||||
local branch="$2"
|
||||
echo "$repo_root/specs/$branch"
|
||||
}
|
||||
|
||||
# Get all standard paths for a feature
|
||||
# Usage: eval $(get_feature_paths)
|
||||
# Sets: REPO_ROOT, CURRENT_BRANCH, FEATURE_DIR, FEATURE_SPEC, IMPL_PLAN, TASKS
|
||||
get_feature_paths() {
|
||||
local repo_root=$(get_repo_root)
|
||||
local current_branch=$(get_current_branch)
|
||||
local feature_dir=$(get_feature_dir "$repo_root" "$current_branch")
|
||||
|
||||
echo "REPO_ROOT='$repo_root'"
|
||||
echo "CURRENT_BRANCH='$current_branch'"
|
||||
echo "FEATURE_DIR='$feature_dir'"
|
||||
echo "FEATURE_SPEC='$feature_dir/spec.md'"
|
||||
echo "IMPL_PLAN='$feature_dir/plan.md'"
|
||||
echo "TASKS='$feature_dir/tasks.md'"
|
||||
echo "RESEARCH='$feature_dir/research.md'"
|
||||
echo "DATA_MODEL='$feature_dir/data-model.md'"
|
||||
echo "QUICKSTART='$feature_dir/quickstart.md'"
|
||||
echo "CONTRACTS_DIR='$feature_dir/contracts'"
|
||||
}
|
||||
|
||||
# Check if a file exists and report
|
||||
check_file() {
|
||||
local file="$1"
|
||||
local description="$2"
|
||||
if [[ -f "$file" ]]; then
|
||||
echo " ✓ $description"
|
||||
return 0
|
||||
else
|
||||
echo " ✗ $description"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if a directory exists and has files
|
||||
check_dir() {
|
||||
local dir="$1"
|
||||
local description="$2"
|
||||
if [[ -d "$dir" ]] && [[ -n "$(ls -A "$dir" 2>/dev/null)" ]]; then
|
||||
echo " ✓ $description"
|
||||
return 0
|
||||
else
|
||||
echo " ✗ $description"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user