Co-authored-by: Jason Woltje <jason@diversecanvas.com> Co-committed-by: Jason Woltje <jason@diversecanvas.com>
124 lines
3.3 KiB
Bash
Executable File
124 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# init-repo-labels.sh - Create standard labels and initial milestone for a repository
|
|
# Usage: init-repo-labels.sh [--skip-milestone]
|
|
#
|
|
# Works with both Gitea (tea) and GitHub (gh).
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
GIT_SCRIPT_DIR="$HOME/.config/mosaic/tools/git"
|
|
source "$GIT_SCRIPT_DIR/detect-platform.sh"
|
|
|
|
SKIP_MILESTONE=false
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--skip-milestone)
|
|
SKIP_MILESTONE=true
|
|
shift
|
|
;;
|
|
-h|--help)
|
|
echo "Usage: $(basename "$0") [--skip-milestone]"
|
|
echo ""
|
|
echo "Create standard labels and initial milestone for the current repository."
|
|
echo ""
|
|
echo "Options:"
|
|
echo " --skip-milestone Skip creating the 0.0.1 pre-MVP milestone"
|
|
echo " -h, --help Show this help"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
PLATFORM=$(detect_platform)
|
|
OWNER=$(get_repo_owner)
|
|
REPO=$(get_repo_name)
|
|
|
|
echo "Platform: $PLATFORM"
|
|
echo "Repository: $OWNER/$REPO"
|
|
echo ""
|
|
|
|
# Standard labels with colors
|
|
# Format: "name|color|description"
|
|
LABELS=(
|
|
"epic|3E4B9E|Large feature spanning multiple issues"
|
|
"feature|0E8A16|New functionality"
|
|
"bug|D73A4A|Defect fix"
|
|
"task|0075CA|General work item"
|
|
"documentation|0075CA|Documentation updates"
|
|
"security|B60205|Security-related"
|
|
"breaking|D93F0B|Breaking change"
|
|
)
|
|
|
|
create_label_github() {
|
|
local name="$1" color="$2" description="$3"
|
|
|
|
# Check if label already exists
|
|
if gh label list --repo "$OWNER/$REPO" --json name -q ".[].name" 2>/dev/null | grep -qx "$name"; then
|
|
echo " [skip] '$name' already exists"
|
|
return 0
|
|
fi
|
|
|
|
gh label create "$name" \
|
|
--repo "$OWNER/$REPO" \
|
|
--color "$color" \
|
|
--description "$description" 2>/dev/null && \
|
|
echo " [created] '$name'" || \
|
|
echo " [error] Failed to create '$name'"
|
|
}
|
|
|
|
create_label_gitea() {
|
|
local name="$1" color="$2" description="$3"
|
|
|
|
# Check if label already exists
|
|
if tea labels list 2>/dev/null | grep -q "$name"; then
|
|
echo " [skip] '$name' already exists"
|
|
return 0
|
|
fi
|
|
|
|
tea labels create --name "$name" --color "#$color" --description "$description" 2>/dev/null && \
|
|
echo " [created] '$name'" || \
|
|
echo " [error] Failed to create '$name'"
|
|
}
|
|
|
|
echo "Creating labels..."
|
|
|
|
for label_def in "${LABELS[@]}"; do
|
|
IFS='|' read -r name color description <<< "$label_def"
|
|
|
|
case "$PLATFORM" in
|
|
github)
|
|
create_label_github "$name" "$color" "$description"
|
|
;;
|
|
gitea)
|
|
create_label_gitea "$name" "$color" "$description"
|
|
;;
|
|
*)
|
|
echo "Error: Unsupported platform '$PLATFORM'" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo ""
|
|
|
|
# Create initial pre-MVP milestone
|
|
if [[ "$SKIP_MILESTONE" != true ]]; then
|
|
echo "Creating initial pre-MVP milestone..."
|
|
|
|
"$GIT_SCRIPT_DIR/milestone-create.sh" -t "0.0.1" -d "Pre-MVP - Foundation Sprint" 2>/dev/null && \
|
|
echo " [created] Milestone '0.0.1 - Pre-MVP'" || \
|
|
echo " [skip] Milestone may already exist or creation failed"
|
|
|
|
echo " [note] Reserve 0.1.0 for MVP release milestone"
|
|
|
|
echo ""
|
|
fi
|
|
|
|
echo "Label initialization complete."
|