mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-24 08:33:50 +01:00
71 lines
3.8 KiB
YAML
71 lines
3.8 KiB
YAML
name: Validate Title and Check for Dist Changes
|
|
|
|
on:
|
|
# Triggers the workflow on a few types of pull request events but only for the dev branch
|
|
pull_request:
|
|
branches: [dev]
|
|
types: [opened, edited, synchronize, reopened]
|
|
|
|
# Allows you to run this workflow manually from the Actions tab
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
checkFiles:
|
|
name: Check Files and Title
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout files
|
|
uses: actions/checkout@v4
|
|
- name: Check bundle files
|
|
id: changed-bundle-files
|
|
uses: tj-actions/changed-files@v44
|
|
with:
|
|
files: |
|
|
dist/**
|
|
|
|
- name: Warn when dist was changed or title is invalid
|
|
id: warn-bundles-changed
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
echo "Creating labels for dist modification and for invalid title"
|
|
LABELDIST="warning: includes dist changes"
|
|
LABELTITLE="error: invalid title"
|
|
gh --repo "${{ github.repository }}" label create "$LABELDIST" --description "Dist changes should not normally be included" --color EBAE34 || true
|
|
gh --repo "${{ github.repository }}" label create "$LABELTITLE" --description "PR title must follow specific format" --color D93F0B || true
|
|
|
|
echo "Determine dist portion of comment text, and add/remove dist label as appropriate"
|
|
if [ "${{ steps.changed-bundle-files.outputs.any_changed }}" == "false" ]; then
|
|
echo "No forbidden files included, removing warning"
|
|
gh --repo "${{ github.repository }}" pr edit "${{ github.event.number }}" --remove-label "$LABELDIST" || true
|
|
distText="### No dist changes are detected."
|
|
else
|
|
echo "Forbidden files included, generating warning"
|
|
gh --repo "${{ github.repository }}" pr edit "${{ github.event.number }}" --add-label "$LABELDIST"
|
|
distText="## Dist changes were included. PRs should not normally contain any changes in the dist folder.\n\nReview the changes and ensure that the included dist changes were necessary."
|
|
fi
|
|
|
|
echo "Validate title"
|
|
PR_TITLE=$(gh --repo "${{ github.repository }}" pr view "${{ github.event.number }}" --json title --jq .title)
|
|
TITLE_REGEX="^[0-9A-Z\-]*: .*$"
|
|
PR_TITLE_VALID=$(echo "$PR_TITLE" | grep -Eq "$TITLE_REGEX" && echo "true" || echo "false")
|
|
|
|
echo "Determine title portion of comment text, and add/remove title label as appropriate"
|
|
if [ "$PR_TITLE_VALID" == "true" ]; then
|
|
gh --repo "${{ github.repository }}" pr edit "${{ github.event.number }}" --remove-label "$LABELTITLE" || true
|
|
commentText="$distText \n\n### Title is valid."
|
|
makeNewComment="${{ steps.changed-bundle-files.outputs.any_changed }}"
|
|
else
|
|
gh --repo "${{ github.repository }}" pr edit "${{ github.event.number }}" --add-label "$LABELTITLE" || true
|
|
commentText="$distText \n\n## The title \`$PR_TITLE\` should match \`$TITLE_REGEX\`\n\nCATEGORY: Change Description\n\nCATEGORY is something like 'API', 'UI', 'MISC', 'STANEK', etc.\n\nChange Description is what you'd tell a non-contributor to convey what is changed."
|
|
makeNewComment="true"
|
|
fi
|
|
|
|
echo "Edit existing comment or make a new one (if no comment present and one of the tests failed)"
|
|
if [ "$makeNewComment" == "true" ]; then
|
|
gh --repo "${{ github.repository }}" pr comment "${{ github.event.number }}" --body "$(echo -e $commentText)" --edit-last || gh --repo "${{ github.repository }}" pr comment "${{ github.event.number }}" --body "$(echo -e $commentText)"
|
|
exit 1
|
|
else
|
|
gh --repo "${{ github.repository }}" pr comment "${{ github.event.number }}" --body "$(echo -e $commentText)" --edit-last || true
|
|
fi
|