From 41fc261705acc08850ca09475c6bbc3f829bc8bd Mon Sep 17 00:00:00 2001 From: thomas Date: Wed, 17 Apr 2024 21:45:41 +0200 Subject: [PATCH] feat: add add loabl --- .github/github-action/action.yml | 11 ++---- .github/github-action/contributors.js | 16 ++++++++ .github/github-action/index.js | 57 +++++++++++++++++++++------ .github/workflows/label-issue.yml | 21 +--------- 4 files changed, 67 insertions(+), 38 deletions(-) create mode 100644 .github/github-action/contributors.js diff --git a/.github/github-action/action.yml b/.github/github-action/action.yml index c3059e0..5e5641f 100644 --- a/.github/github-action/action.yml +++ b/.github/github-action/action.yml @@ -1,13 +1,10 @@ name: 'Hello World' description: 'Greet someone and record the time' inputs: - who-to-greet: # id of input - description: 'Who to greet' - required: true - default: 'World' -outputs: - time: # id of output - description: 'The time we greeted you' + github_token: + description: A GitHub token. + required: false + default: ${{ github.token }} runs: using: 'node20' main: 'index.js' diff --git a/.github/github-action/contributors.js b/.github/github-action/contributors.js new file mode 100644 index 0000000..7992005 --- /dev/null +++ b/.github/github-action/contributors.js @@ -0,0 +1,16 @@ +const contributors = [ + 'tomalaforge', + 'alcaidio', + 'svenson95', + 'jdegand', + 'DeveshChau', + 'stillst', + 'wandri', + 'webbomj', + 'kabrunko-dev', + 'Sanjar1304' +]; + +module.exports = { + contributors +}; diff --git a/.github/github-action/index.js b/.github/github-action/index.js index 723a82e..e860a96 100644 --- a/.github/github-action/index.js +++ b/.github/github-action/index.js @@ -1,15 +1,48 @@ -const core = require('@actions/core'); const github = require('@actions/github'); +const core = require('@actions/core'); +const contributors = require('./contributors'); -try { - // `who-to-greet` input defined in action metadata file - const nameToGreet = core.getInput('who-to-greet'); - console.log(`Hello ${nameToGreet}!`); - const time = (new Date()).toTimeString(); - core.setOutput("time", time); - // Get the JSON webhook payload for the event that triggered the workflow - const payload = JSON.stringify(github.context.payload, undefined, 2) - console.log(`The event payload: ${payload}`); -} catch (error) { - core.setFailed(error.message); +async function run() { + try { + const title = github.context.payload.pull_request.title; + const labels = []; + + if(!title.startsWith('Answer:')) { + return; + } + labels.push('answer'); + + const match = title.match(/Answer:\s*(\d+)/); + if (match) { + labels.push(parseInt(match[1], 10)); + } + + const actor = github.context.actor; + if(contributors.includes(actor)) { + labels.push('to be reviewed'); + } + + const githubToken = core.getInput('github_token'); + + const [owner, repo] = core.getInput('repo').split('/'); + const number = + core.getInput('number') === '' + ? github.context.issue.number + : parseInt(core.getInput('number')); + + const octokit = github.getOctokit(githubToken); + await octokit.rest.issues.addLabels({ + labels, + owner, + repo, + issue_number: number + }); + } catch (e) { + if (e instanceof Error) { + core.error(e); + core.setFailed(e.message); + } + } } + +run(); diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml index 6466ef9..5c1aaf0 100644 --- a/.github/workflows/label-issue.yml +++ b/.github/workflows/label-issue.yml @@ -14,24 +14,7 @@ jobs: - name: Install dependencies run: npm i @actions/core @actions/github - - name: add supporter labels - uses: actions-ecosystem/action-add-labels@v1 - if: ${{ contains( fromJson('[ "tomalaforge", "alcaidio" , "svenson95", "jdegand", "DeveshChau", "stillst", "wandri", "webbomj", "kabrunko-dev", "Sanjar1304"]'), github.actor ) && startsWith(github.event.pull_request.title, 'Answer') }} - with: - github_token: ${{ secrets.github_token }} - labels: supporter - - - name: add answer labels - uses: actions-ecosystem/action-add-labels@v1 - if: ${{ startsWith(github.event.pull_request.title, 'Answer') }} - with: - github_token: ${{ secrets.github_token }} - labels: answer - - - name: Hello world action step + - name: Add labels uses: ./.github/github-action/ - id: hello with: - who-to-greet: 'Mona the Octocat' - - name: Get the output time - run: echo "The time was ${{ steps.hello.outputs.time }}" + github_token: ${{ secrets.GITHUB_TOKEN }}