64 lines
1.8 KiB
Bash
Executable File
64 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Copyright The OpenTelemetry Authors
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
#
|
|
|
|
# This script extracts the "Area" from the issue body and adds it as a label
|
|
# on newly created issues. The area from the issue body comes from
|
|
# the "Area" drop-down field in the ISSUE_TEMPLATE, which is auto-generated
|
|
# from the files inside model/registry.
|
|
|
|
# TODO: This script can be later used to also auto-assign the correct code-owner
|
|
# once that is implemented.
|
|
|
|
set -euo pipefail
|
|
|
|
OS=$(uname | tr '[:upper:]' '[:lower:]')
|
|
|
|
if [[ "${OS}" == "darwin" ]]; then
|
|
SED="gsed"
|
|
else
|
|
SED="sed"
|
|
fi
|
|
|
|
if [[ -z "${ISSUE:-}" || -z "${BODY:-}" || -z "${OPENER:-}" ]]; then
|
|
echo "Missing one of ISSUE, BODY, or OPENER, please ensure all are set."
|
|
exit 0
|
|
fi
|
|
|
|
LABELS="triage:needs-triage"
|
|
AREAS_SECTION_START=$( (echo "${BODY}" | grep -n '### Area(s)' | awk '{ print $1 }' | grep -oE '[0-9]+') || echo '-1' )
|
|
BODY_AREAS=""
|
|
|
|
if [[ "${AREAS_SECTION_START}" != '-1' ]]; then
|
|
BODY_AREAS=$(echo "${BODY}" | "${SED}" -n $((AREAS_SECTION_START+2))p)
|
|
fi
|
|
|
|
for AREA in ${BODY_AREAS}; do
|
|
# Areas are delimited by ', ' and the for loop separates on spaces, so remove the extra comma.
|
|
AREA=${AREA//,/}
|
|
|
|
if (( "${#AREA}" > 50 )); then
|
|
echo "'${AREA}' exceeds GitHub's 50-character limit on labels, skipping adding a label"
|
|
continue
|
|
fi
|
|
|
|
LABELS+=",${AREA}"
|
|
done
|
|
|
|
if [[ -v BODY_AREAS[@] ]]; then
|
|
echo "The issue was associated with areas:" "${!BODY_AREAS[@]}"
|
|
else
|
|
echo "No related areas were given"
|
|
fi
|
|
|
|
# Notes on this call:
|
|
# 1. Labels will be deduplicated by the GitHub CLI.
|
|
# 2. The call to edit the issue will fail if any of the
|
|
# labels doesn't exist. We can be reasonably sure that
|
|
# all labels will exist since they come from a known set.
|
|
echo "Adding the following labels: ${LABELS//,/ /}"
|
|
gh issue edit "${ISSUE}" --add-label "${LABELS}" || true
|