forked from heavy-duty/ceremony
feat: retire the six GitHub default labels at bootstrap
LABELS.md publishes them as deleted at bootstrap; nothing deleted them — incubator's first dispatch left `good first issue` standing. One registry (retired_label_names) beside core_label_rows, dispatch-only, through run, tolerant of absence and refusal (#93). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
b45202f6f4
commit
27aa03464c
1 changed files with 30 additions and 1 deletions
|
|
@ -402,8 +402,22 @@ epic|5319E7|Organizes other issues via a dependency-ordered task list — builde
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
retired_label_names() { # the GitHub defaults LABELS.md retires — a `question` is a discussion
|
||||||
|
# One registry, kept beside core_label_rows() for the same reason those rows
|
||||||
|
# are not in labels.conf: a rule that must hold in every governed repo
|
||||||
|
# cannot live in a per-repo file. The six names match LABELS.md exactly.
|
||||||
|
cat <<'EOF'
|
||||||
|
duplicate
|
||||||
|
invalid
|
||||||
|
question
|
||||||
|
wontfix
|
||||||
|
help wanted
|
||||||
|
good first issue
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
bootstrap_labels() { # dispatch-only: ~20 upserts is too chatty for every cron tick
|
bootstrap_labels() { # dispatch-only: ~20 upserts is too chatty for every cron tick
|
||||||
local rows
|
local rows name
|
||||||
rows="$(core_label_rows)"
|
rows="$(core_label_rows)"
|
||||||
if [ -f "$LABELS_CONF" ]; then
|
if [ -f "$LABELS_CONF" ]; then
|
||||||
rows="$rows
|
rows="$rows
|
||||||
|
|
@ -413,6 +427,21 @@ $(configured_label_rows "$LABELS_CONF")"
|
||||||
[ -n "$name" ] || continue
|
[ -n "$name" ] || continue
|
||||||
run gh label create "$name" -R "$REPO" --color "$color" --description "$desc" --force
|
run gh label create "$name" -R "$REPO" --color "$color" --description "$desc" --force
|
||||||
done <<<"$rows"
|
done <<<"$rows"
|
||||||
|
|
||||||
|
# LABELS.md publishes the defaults as deleted at bootstrap; until #93
|
||||||
|
# nothing deleted them — incubator's first dispatch ran green and left
|
||||||
|
# `good first issue` standing. Deletion is dispatch-only like the upserts,
|
||||||
|
# and never fatal: `gh label delete` exits non-zero on a label that is
|
||||||
|
# already gone, the NORMAL case from the second dispatch on, and under
|
||||||
|
# set -e an unguarded call aborts the whole run (#91's shape). A 403
|
||||||
|
# refusal gets the same tolerance — the bot bootstrap already 403s on
|
||||||
|
# blocker:drill-pending, and a token that cannot delete must still get
|
||||||
|
# the taxonomy it can create. Either way: log the name, keep going.
|
||||||
|
while IFS= read -r name; do
|
||||||
|
[ -n "$name" ] || continue
|
||||||
|
run gh label delete "$name" -R "$REPO" --yes \
|
||||||
|
|| log "retire: '$name' not deleted (already absent, or refused) — continuing"
|
||||||
|
done <<<"$(retired_label_names)"
|
||||||
}
|
}
|
||||||
|
|
||||||
has_label() { grep -qxF "$1" <<<"$LABELS"; }
|
has_label() { grep -qxF "$1" <<<"$LABELS"; }
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue