mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-09-27 20:04:00 +02:00
feat: share issue submitter detection
This commit is contained in:
54
.github/workflows/on_issues_ping_submitter.yml
vendored
54
.github/workflows/on_issues_ping_submitter.yml
vendored
@@ -16,42 +16,42 @@ jobs:
|
|||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@v7
|
||||||
|
|
||||||
- name: Ping mapped submitter when add-on is mentioned
|
- name: Detect mapped submitters
|
||||||
|
id: submitter
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
ISSUE_TITLE: ${{ github.event.issue.title }}
|
ISSUE_TITLE: ${{ github.event.issue.title }}
|
||||||
ISSUE_BODY: ${{ github.event.issue.body }}
|
ISSUE_BODY: ${{ github.event.issue.body }}
|
||||||
|
run: bash .github/scripts/find_addon_submitter.sh
|
||||||
|
|
||||||
|
- name: Ping mapped submitters
|
||||||
|
if: steps.submitter.outputs.matched == 'true'
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
||||||
|
MATCHES_JSON: ${{ steps.submitter.outputs.matches_json }}
|
||||||
REPO: ${{ github.repository }}
|
REPO: ${{ github.repository }}
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
TEXT="${ISSUE_TITLE} ${ISSUE_BODY}"
|
while IFS= read -r match; do
|
||||||
TEXT_LOWER="$(printf '%s' "$TEXT" | tr '[:upper:]' '[:lower:]')"
|
addon="$(jq -r '.addon' <<< "$match")"
|
||||||
|
user="$(jq -r '.submitter' <<< "$match")"
|
||||||
while IFS= read -r addon; do
|
|
||||||
ADDON_LOWER="$(printf '%s' "$addon" | tr '[:upper:]' '[:lower:]')"
|
|
||||||
[ -z "$ADDON_LOWER" ] && continue
|
|
||||||
|
|
||||||
if [[ " $TEXT_LOWER " == *" $ADDON_LOWER "* ]]; then
|
|
||||||
user="$(jq -r --arg addon "$addon" '.[$addon]' .github/addon_submitters.json)"
|
|
||||||
if [ -z "$user" ] || [ "$user" = "null" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
marker="<!-- addon-submitter-ping:${addon} -->"
|
marker="<!-- addon-submitter-ping:${addon} -->"
|
||||||
comments_url="https://api.github.com/repos/${REPO}/issues/${ISSUE_NUMBER}/comments"
|
|
||||||
|
|
||||||
export GH_TOKEN="${GITHUB_TOKEN}"
|
existing="$(
|
||||||
existing="$(gh issue view "$ISSUE_NUMBER" --repo "$REPO" --json comments | jq --arg marker "$marker" '[.comments[] | select(.body | contains($marker))] | length')"
|
gh issue view "$ISSUE_NUMBER" --repo "$REPO" --json comments |
|
||||||
|
jq --arg marker "$marker" \
|
||||||
|
'[.comments[] | select(.body | contains($marker))] | length'
|
||||||
|
)"
|
||||||
|
|
||||||
if [ "$existing" -eq 0 ]; then
|
if [[ "$existing" -eq 0 ]]; then
|
||||||
body=$(jq -cn --arg marker "$marker" --arg addon "$addon" --arg user "$user" '{body: ($marker + "\nHeads up @" + $user + ": this issue appears to mention `" + $addon + "`.")}')
|
body="$(
|
||||||
curl -sS -X POST \
|
jq -nr \
|
||||||
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
|
--arg marker "$marker" \
|
||||||
-H 'Accept: application/vnd.github+json' \
|
--arg addon "$addon" \
|
||||||
"$comments_url" \
|
--arg user "$user" \
|
||||||
-d "$body" > /dev/null
|
'$marker + "\nHeads up @" + $user + ": this issue appears to mention `" + $addon + "`."'
|
||||||
|
)"
|
||||||
|
gh issue comment "$ISSUE_NUMBER" --repo "$REPO" --body "$body"
|
||||||
fi
|
fi
|
||||||
fi
|
done < <(jq -c '.[]' <<< "$MATCHES_JSON")
|
||||||
done < <(jq -r 'keys[]' .github/addon_submitters.json)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user