Skip to content

Commit

Permalink
Update propogate-hacktoberfest-labels.yml
Browse files Browse the repository at this point in the history
  • Loading branch information
blackgirlbytes authored Oct 1, 2024
1 parent 39fbaf7 commit a8550ad
Showing 1 changed file with 45 additions and 23 deletions.
68 changes: 45 additions & 23 deletions .github/workflows/propogate-hacktoberfest-labels.yml
Original file line number Diff line number Diff line change
@@ -1,49 +1,71 @@
name: Propagate Issue Labels to PR

on:
pull_request:
types: [opened, synchronize]

jobs:
copy_labels:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Get issue number from PR body
id: issue_number
run: |
issue_number=$(echo "${{ github.event.pull_request.body }}" | grep -oP "(?<=#)\d+")
echo "::set-output name=issue_number::$issue_number"
issue_number=$(echo "${{ github.event.pull_request.body }}" | grep -oP '(?<=#)\d+' | head -n1)
if [ -z "$issue_number" ]; then
echo "No issue number found in PR body"
echo "has_issue=false" >> $GITHUB_OUTPUT
else
echo "Issue number found: $issue_number"
echo "has_issue=true" >> $GITHUB_OUTPUT
echo "issue_number=$issue_number" >> $GITHUB_OUTPUT
fi
- name: Get labels from linked issue
if: steps.issue_number.outputs.issue_number != ''
if: steps.issue_number.outputs.has_issue == 'true'
uses: actions/github-script@v6
id: issue_labels
with:
github-token: ${{ secrets.GITHUB_TOKEN }} # This ensures you're authenticated to the GitHub API
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const issue_number = ${{ steps.issue_number.outputs.issue_number }};
const issue = await github.rest.issues.get({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue_number
});
return issue.data.labels.map(label => label.name);
try {
const issue = await github.rest.issues.get({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: parseInt(issue_number)
});
return issue.data.labels.map(label => label.name);
} catch (error) {
console.log(`Error fetching issue labels: ${error}`);
return [];
}
- name: Check for required labels
if: steps.issue_number.outputs.has_issue == 'true' && steps.issue_labels.outputs.result != '[]'
id: check_labels
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const labels = ${{ steps.issue_labels.outputs.result }};
const hacktoberfestLabel = labels.some(label => label.toLowerCase().includes('hacktoberfest'));
const sizeLabelPresent = labels.some(label => ['small', 'medium', 'large'].includes(label.toLowerCase()));
return hacktoberfestLabel || (hacktoberfestLabel && sizeLabelPresent);
- name: Add labels to PR
if: steps.issue_number.outputs.issue_number != ''
if: steps.issue_number.outputs.has_issue == 'true' && steps.check_labels.outputs.result == 'true'
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const pr_number = context.issue.number;
const labels = ${{ steps.issue_labels.outputs.result }};
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr_number,
labels: labels
});
try {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr_number,
labels: labels
});
console.log('Labels added successfully');
} catch (error) {
console.log(`Error adding labels: ${error}`);
}

0 comments on commit a8550ad

Please sign in to comment.