From 91d79ff7f839d0274aa61a64cb6807e837b976f3 Mon Sep 17 00:00:00 2001 From: Isaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com> Date: Wed, 20 Sep 2023 11:59:12 -0400 Subject: [PATCH] Automatic Stats Action (#4682) * Automatic stats * Formatting * Update stats * Update .github/workflows/label-stats.yml Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Update .github/workflows/label-stats.yml Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Update .github/workflows/label-stats.yml Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Update .github/workflows/label-stats.yml Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> --------- Co-authored-by: github-actions Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> --- .github/workflows/label-stats.yml | 67 +++++++++++++++++++++++++++++++ compat-stats.json | 1 + 2 files changed, 68 insertions(+) create mode 100644 .github/workflows/label-stats.yml create mode 100644 compat-stats.json diff --git a/.github/workflows/label-stats.yml b/.github/workflows/label-stats.yml new file mode 100644 index 0000000..d7218b5 --- /dev/null +++ b/.github/workflows/label-stats.yml @@ -0,0 +1,67 @@ +name: Generate label stats + +on: + schedule: + - cron: "0 0 * * *" + workflow_dispatch: + +jobs: + stats: + name: Generate label stats + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: master + + - name: Query stats + uses: actions/github-script@v6 + id: stats + with: + result-encoding: string + script: | + const query = `query($owner: String!, $name: String!) { + repository(owner: $owner, name: $name) { + labels(first: 100, query: "status") { + nodes { + name + issues { + totalCount + } + } + } + } + }`; + + const variables = { + owner: context.repo.owner, + name: context.repo.repo, + } + + const result = await github.graphql(query, variables) + + const labelsWithIssueCount = result.repository.labels.nodes; + const formattedData = {}; + labelsWithIssueCount.forEach((label) => { + formattedData[label.name] = label.issues.totalCount; + }); + + return formattedData; + + - name: Write stats + run: | + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + cat << $EOF > compat-stats.json + ${{steps.stats.outputs.result}} + $EOF + + - name: Commit stats + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + git add . + git commit -m "Update compat-stats.json" + git push diff --git a/compat-stats.json b/compat-stats.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/compat-stats.json @@ -0,0 +1 @@ +{}