@ -20,8 +20,8 @@ normalize_label() {
}
if [ [ ! -f " ${ SERVERLIST } " ] ] ; then
echo " ERROR: ${ SERVERLIST } not found. Run from the repository root. "
exit 1
echo " ERROR: ${ SERVERLIST } not found. Run from the repository root. "
exit 1
fi
declare -A EXISTING_COLORS = ( )
@ -31,20 +31,20 @@ declare -A EXISTING_NAMES=()
# Fetch all existing game label metadata once (up to 1000) and cache locally.
echo "Fetching existing labels..."
while IFS = $'\t' read -r NAME COLOR DESCRIPTION; do
[ [ -n " ${ NAME } " ] ] || continue
EXISTING_COLORS[ " ${ NAME } " ] = " ${ COLOR } "
EXISTING_DESCRIPTIONS[ " ${ NAME } " ] = " ${ DESCRIPTION } "
EXISTING_NAMES[ " $( normalize_label " ${ NAME } " ) " ] = " ${ NAME } "
[ [ -n " ${ NAME } " ] ] || continue
EXISTING_COLORS[ " ${ NAME } " ] = " ${ COLOR } "
EXISTING_DESCRIPTIONS[ " ${ NAME } " ] = " ${ DESCRIPTION } "
EXISTING_NAMES[ " $( normalize_label " ${ NAME } " ) " ] = " ${ NAME } "
done < <(
gh label list --limit 1000 --json name,color,description ${ REPO : +--repo " $REPO " } \
| jq -r '.[] | select(.name | startswith("game: ")) | [.name, .color, (.description // "")] | @tsv'
gh label list --limit 1000 --json name,color,description ${ REPO : +--repo " $REPO " } \
| jq -r '.[] | select(.name | startswith("game: ")) | [.name, .color, (.description // "")] | @tsv'
)
# Parse unique game names from the CSV (column 3, skip header).
mapfile -t GAMES < <(
tail -n +2 " ${ SERVERLIST } " \
| cut -d',' -f3 \
| sort -u
tail -n +2 " ${ SERVERLIST } " \
| cut -d',' -f3 \
| sort -u
)
CREATED = 0
@ -52,35 +52,35 @@ UPDATED=0
UNCHANGED = 0
for GAME in " ${ GAMES [@] } " ; do
LABEL = " ${ LABEL_PREFIX } ${ GAME } "
DESCRIPTION = " Issues related to ${ GAME } "
NORMALIZED_LABEL = " $( normalize_label " ${ LABEL } " ) "
LABEL = " ${ LABEL_PREFIX } ${ GAME } "
DESCRIPTION = " Issues related to ${ GAME } "
NORMALIZED_LABEL = " $( normalize_label " ${ LABEL } " ) "
if [ [ -v EXISTING_NAMES[ " ${ NORMALIZED_LABEL } " ] ] ] ; then
CURRENT_LABEL = " ${ EXISTING_NAMES [ " ${ NORMALIZED_LABEL } " ] } "
CURRENT_COLOR = " ${ EXISTING_COLORS [ " ${ CURRENT_LABEL } " ] } "
CURRENT_DESCRIPTION = " ${ EXISTING_DESCRIPTIONS [ " ${ CURRENT_LABEL } " ] } "
if [ [ -v EXISTING_NAMES[ " ${ NORMALIZED_LABEL } " ] ] ] ; then
CURRENT_LABEL = " ${ EXISTING_NAMES [ " ${ NORMALIZED_LABEL } " ] } "
CURRENT_COLOR = " ${ EXISTING_COLORS [ " ${ CURRENT_LABEL } " ] } "
CURRENT_DESCRIPTION = " ${ EXISTING_DESCRIPTIONS [ " ${ CURRENT_LABEL } " ] } "
if [ [ " ${ CURRENT_LABEL } " != " ${ LABEL } " || " ${ CURRENT_COLOR } " != " ${ LABEL_COLOR } " || " ${ CURRENT_DESCRIPTION } " != " ${ DESCRIPTION } " ] ] ; then
echo " update ${ LABEL } "
gh label edit " ${ CURRENT_LABEL } " \
--name " ${ LABEL } " \
--color " ${ LABEL_COLOR } " \
--description " ${ DESCRIPTION } " \
${ REPO : +--repo " $REPO " }
( ( UPDATED++ ) ) || true
else
echo " ok ${ LABEL } "
( ( UNCHANGED++ ) ) || true
fi
else
echo " create ${ LABEL } "
gh label create " ${ LABEL } " \
--color " ${ LABEL_COLOR } " \
--description " ${ DESCRIPTION } " \
${ REPO : +--repo " $REPO " }
( ( CREATED++ ) ) || true
fi
if [ [ " ${ CURRENT_LABEL } " != " ${ LABEL } " || " ${ CURRENT_COLOR } " != " ${ LABEL_COLOR } " || " ${ CURRENT_DESCRIPTION } " != " ${ DESCRIPTION } " ] ] ; then
echo " update ${ LABEL } "
gh label edit " ${ CURRENT_LABEL } " \
--name " ${ LABEL } " \
--color " ${ LABEL_COLOR } " \
--description " ${ DESCRIPTION } " \
${ REPO : +--repo " $REPO " }
( ( UPDATED++ ) ) || true
else
echo " ok ${ LABEL } "
( ( UNCHANGED++ ) ) || true
fi
else
echo " create ${ LABEL } "
gh label create " ${ LABEL } " \
--color " ${ LABEL_COLOR } " \
--description " ${ DESCRIPTION } " \
${ REPO : +--repo " $REPO " }
( ( CREATED++ ) ) || true
fi
done
echo ""