|
4 | 4 | issues:
|
5 | 5 | types: [opened, edited]
|
6 | 6 |
|
7 |
| -env: |
8 |
| - PRIORITY: "" |
9 |
| - |
10 | 7 | jobs:
|
11 | 8 | set_env_priority:
|
12 | 9 | runs-on: ubuntu-latest
|
@@ -56,64 +53,82 @@ jobs:
|
56 | 53 | labels: [label]
|
57 | 54 | });
|
58 | 55 | }
|
59 |
| - - name: Check issue priority and clean body |
60 |
| - if: ${{ needs.set_env_priority.outputs.PRIORITY.includes('高い') }} |
61 |
| - uses: actions/github-script@v6 |
| 56 | +
|
| 57 | + check-field: |
| 58 | + runs-on: ubuntu-latest |
| 59 | + needs: set_env_priority |
| 60 | + env: |
| 61 | + PRIORITY: ${{ needs.set_env_priority.outputs.PRIORITY }} |
| 62 | + steps: |
| 63 | + - name: Extract Issue Form Data |
| 64 | + id: form |
| 65 | + uses: actions-ecosystem/action-get-issue-form-parameters@v1 |
62 | 66 | with:
|
63 |
| - script: | |
64 |
| - const issue = context.payload.issue; |
65 |
| - const issueNumber = issue.number; |
66 |
| - const issueBody = issue.body; |
67 |
| - // 特定のセクションを削除 |
68 |
| - const newBody = issueBody.replace(/###\s*なぜ優先度が高いのか[\s\S]*?(?=###|$)/g, '').trim(); |
69 |
| - |
70 |
| - await github.rest.issues.update({ |
71 |
| - owner: context.repo.owner, |
72 |
| - repo: context.repo.repo, |
73 |
| - issue_number: issueNumber, |
74 |
| - body: newBody |
75 |
| - }); |
| 67 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
76 | 68 |
|
77 |
| - - name: Check if Field is Empty or Default Text |
78 |
| - id: check_field |
| 69 | + - name: Get Field Content |
| 70 | + id: get_field |
79 | 71 | run: |
|
80 |
| - # フィールドのデータを取得 |
81 |
| - FIELD_CONTENT=$(echo '${{ fromJSON(steps.form.outputs.data)["task-reasons-for-high-priority"] }}') |
| 72 | + echo "FIELD_CONTENT<<EOF" >> $GITHUB_ENV |
| 73 | + echo "${{ steps.form.outputs['task-reasons-for-high-priority'] }}" >> $GITHUB_ENV |
| 74 | + echo "EOF" >> $GITHUB_ENV |
82 | 75 |
|
| 76 | + - name: Check if Field is Empty, Default Text, or No Response |
| 77 | + id: check_field |
| 78 | + run: | |
| 79 | + # フィールドの内容を取得 |
| 80 | + FIELD_CONTENT="${FIELD_CONTENT}" |
83 | 81 | # フィールドが存在しない場合は未記入とみなす
|
84 | 82 | if [ -z "$FIELD_CONTENT" ]; then
|
85 | 83 | echo "field_empty=true" >> $GITHUB_OUTPUT
|
86 | 84 | else
|
87 |
| - # フィールドの内容からスペース、タブ、改行を削除 |
88 |
| - TRIMMED_CONTENT=$(echo "$FIELD_CONTENT" | tr -d ' \t\n\r') |
89 |
| -
|
90 |
| - # 比較対象のデフォルトテキストからスペース、タブ、改行を削除 |
91 |
| - DEFAULT_TEXT="##何故この重要度なのか" |
92 |
| - |
93 |
| - if [ -z "$TRIMMED_CONTENT" ] || [ "$TRIMMED_CONTENT" = "$DEFAULT_TEXT" ]; then |
| 85 | + # フィールドの内容から全ての空白文字を削除 |
| 86 | + TRIMMED_CONTENT=$(echo "$FIELD_CONTENT" | tr -d '[:space:]') |
| 87 | + # 比較対象のデフォルトテキストと"No response"から全ての空白文字を削除 |
| 88 | + DEFAULT_TEXT=$(echo "### なぜ優先度が高いのか" | tr -d '[:space:]') |
| 89 | + NO_RESPONSE=$(echo "_Noresponse_" | tr -d '[:space:]') |
| 90 | + if [ -z "$TRIMMED_CONTENT" ] || [ "$TRIMMED_CONTENT" = "$DEFAULT_TEXT" ] || [ "$TRIMMED_CONTENT" = "$NO_RESPONSE" ]; then |
94 | 91 | echo "field_empty=true" >> $GITHUB_OUTPUT
|
95 | 92 | else
|
96 | 93 | echo "field_empty=false" >> $GITHUB_OUTPUT
|
97 | 94 | fi
|
98 | 95 | fi
|
99 | 96 |
|
100 | 97 | - name: Close Issue if Field is Empty
|
101 |
| - if: ${{ needs.set_env_priority.outputs.PRIORITY.includes('高い') && ( steps.check_field.outputs.field_empty == 'true' || steps.form.outputs.data == null || fromJSON(steps.form.outputs.data)['task-reasons-for-high-priority'] == '') }} |
| 98 | + if: steps.check_field.outputs.field_empty == 'true' |
102 | 99 | uses: actions/github-script@v6
|
| 100 | + env: |
| 101 | + PRIORITY: ${{ env.PRIORITY }} |
103 | 102 | with:
|
104 | 103 | script: |
|
105 |
| - // コメントを追加してIssueをクローズする |
106 |
| - await github.rest.issues.createComment({ |
107 |
| - owner: context.repo.owner, |
108 |
| - repo: context.repo.repo, |
109 |
| - issue_number: context.issue.number, |
110 |
| - body: '優先度が「高い」と選択されていますが、必要な情報が記入されていないため、このIssueはクローズされました。必要な情報を記入して再度作成してください。' |
111 |
| - }); |
112 |
| -
|
113 |
| - await github.rest.issues.update({ |
| 104 | + const priority = process.env.PRIORITY; |
| 105 | + const issue = context.payload.issue; |
| 106 | + const issueNumber = issue.number; |
| 107 | + if (priority && priority.includes('高い')) { |
| 108 | + // コメントを追加してIssueをクローズする |
| 109 | + await github.rest.issues.createComment({ |
| 110 | + owner: context.repo.owner, |
| 111 | + repo: context.repo.repo, |
| 112 | + issue_number: issueNumber, |
| 113 | + body: '優先度が「高い」と選択されていますが、必要な情報が記入されていないため、このIssueはクローズされました。必要な情報を記入して再度作成してください。' |
| 114 | + }); |
| 115 | + |
| 116 | + await github.rest.issues.update({ |
| 117 | + owner: context.repo.owner, |
| 118 | + repo: context.repo.repo, |
| 119 | + issue_number: issueNumber, |
| 120 | + state: 'closed', |
| 121 | + state_reason: 'not_planned' |
| 122 | + }); |
| 123 | + } else { |
| 124 | + const issueBody = issue.body; |
| 125 | + // "なぜ優先度が高いのか"のセクションを削除 |
| 126 | + const newBody = issueBody.replace(/###\s*なぜ優先度が高いのか[\s\S]*?(?=###|$)/g, '').trim(); |
| 127 | + |
| 128 | + await github.rest.issues.update({ |
114 | 129 | owner: context.repo.owner,
|
115 | 130 | repo: context.repo.repo,
|
116 | 131 | issue_number: issueNumber,
|
117 |
| - state: 'closed', |
118 |
| - state_reason: 'not_planned' |
119 |
| - }); |
| 132 | + body: newBody |
| 133 | + }); |
| 134 | + } |
0 commit comments