From da156c091e6cbef071dcae4924b65fbbe9f91b37 Mon Sep 17 00:00:00 2001 From: LGUG2Z Date: Thu, 23 Jan 2025 15:57:46 -0800 Subject: [PATCH] chore(github): update issue workflows --- .github/ISSUE_TEMPLATE/bug_report.yml | 4 +- .github/ISSUE_TEMPLATE/feature_request.yml | 16 +-- .github/workflows/feature-check.yaml | 47 ++++++++ .github/workflows/sponsor-check.yaml | 125 --------------------- 4 files changed, 57 insertions(+), 135 deletions(-) create mode 100644 .github/workflows/feature-check.yaml delete mode 100644 .github/workflows/sponsor-check.yaml diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index c0a1663d..f3a7eabe 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -8,9 +8,9 @@ body: value: | Please **do not** open an issue for applications with invisible windows leaving ghost tiles. - You can run `komorebic visible-windows` when the ghost tile is present on your workspace to retrieve the invisible window's exe, class name and title, and then use that to [ignore the window](https://lgug2z.github.io/komorebi/common-workflows/ignore-windows.html) responsible for the ghost tile. + You can run `komorebic visible-windows` when the ghost tile is present on your workspace to retrieve the invisible window's exe, class name and title, and then use that information to [ignore the window](https://lgug2z.github.io/komorebi/common-workflows/ignore-windows.html) responsible for the ghost tile. - If it is not possible to uniquely identify the invisible window resulting in a ghost tile through a mixture of exe, title and class identifiers , then this is not a bug with komorebi but a bug with the application you are using, and should open an issue with the developer(s) of that application. + If it is not possible to uniquely identify the invisible window resulting in a ghost tile through a mixture of exe, title and class identifiers, then this is not a bug with komorebi but a bug with the application you are using, and you should open an issue with the developer(s) of that application. - type: textarea validations: required: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index c05d0718..cf39777c 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,21 +1,21 @@ name: Feature request -description: Suggest a new feature (Sponsors only) +description: Suggest a new feature (Limited to Sponsors, Commercial License Holders, and Collaborators) labels: [enhancement] title: "[FEAT]: " body: - type: dropdown - id: Sponsors + id: Eligibility attributes: - label: Sponsorship Information + label: Eligibility description: > - Feature requests are considered from individuals who are $5+ monthly sponsors to the project. + Feature requests are considered from individuals who are current $5+ monthly sponsors to the project, individual commercial use license holders, and approved collaborators. Please specify the platform you use to sponsor the project. options: - - GitHub Sponsors - - Ko-fi - - Discord - - YouTube + - Individual Commercial Use License + - GitHub Sponsor + - Ko-fi Sponsor + - Approved Collaborator default: 0 validations: required: true diff --git a/.github/workflows/feature-check.yaml b/.github/workflows/feature-check.yaml new file mode 100644 index 00000000..a10ef29e --- /dev/null +++ b/.github/workflows/feature-check.yaml @@ -0,0 +1,47 @@ +name: Feature Issue Check + +on: + issues: + types: [ opened ] + +jobs: + auto-close: + runs-on: ubuntu-latest + permissions: + issues: write + + steps: + - name: Check and close feature issues + uses: actions/github-script@v7 + with: + script: | + const issue = context.payload.issue; + + if (issue.title.startsWith('[FEAT]: ')) { + const message = ` + Feature requests on this repository are only open to current [GitHub sponsors](https://github.com/sponsors/LGUG2Z) on the $5/month tier and above, people with a valid [individual commercial use license](https://lgug2z.com/software/komorebi), and approved contributors. + + This issue has been automatically closed until one of those pre-requisites can be validated. + `.replace(/^\s+/gm, ''); + + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issue.number, + body: message, + }); + + await github.rest.issues.update({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issue.number, + state: 'closed' + }); + + await github.rest.issues.lock({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issue.number, + state: 'resolved' + }); + } \ No newline at end of file diff --git a/.github/workflows/sponsor-check.yaml b/.github/workflows/sponsor-check.yaml deleted file mode 100644 index 852f4c7e..00000000 --- a/.github/workflows/sponsor-check.yaml +++ /dev/null @@ -1,125 +0,0 @@ -name: Feature Request Sponsor Check - -on: - issues: - types: [opened] - workflow_dispatch: - inputs: - test_username: - description: "Test username to check sponsorship for" - required: true - default: "octocat" - test_title: - description: "Test issue title" - required: true - default: "[FEAT] Test Feature Request" - test_sponsor_platform: - description: "Selected sponsor platform" - required: true - type: choice - options: - - "GitHub Sponsors" - - "Ko-fi" - - "Discord" - - "YouTube" - -jobs: - check-sponsor: - runs-on: ubuntu-latest - if: | - (github.event_name == 'workflow_dispatch') || (github.event_name == 'issues' && - startsWith(github.event.issue.title, '[FEAT]') && - github.event.issue.user.login != 'LGUG2Z' && - fromJSON(github.event.issue.body).Sponsors == 'GitHub Sponsors') - - steps: - - name: Get Issue Details - id: issue-details - run: | - if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then - echo "username=${{ github.event.inputs.test_username }}" >> $GITHUB_OUTPUT - echo "title=${{ github.event.inputs.test_title }}" >> $GITHUB_OUTPUT - echo "sponsor_platform=${{ github.event.inputs.test_sponsor_platform }}" >> $GITHUB_OUTPUT - else - echo "username=${{ github.event.issue.user.login }}" >> $GITHUB_OUTPUT - echo "title=${{ github.event.issue.title }}" >> $GITHUB_OUTPUT - echo "sponsor_platform=$(jq -r '.Sponsors' <<< '${{ github.event.issue.body }}')" >> $GITHUB_OUTPUT - fi - - - name: Get Sponsorship Status - id: sponsorship - uses: actions/github-script@v7 - with: - github-token: ${{ secrets.PAT }} - script: | - const username = '${{ steps.issue-details.outputs.username }}'; - const sponsorPlatform = '${{ steps.issue-details.outputs.sponsor_platform }}'; - - if (sponsorPlatform !== 'GitHub Sponsors') { - console.log('Sponsor platform is not GitHub Sponsors, skipping check'); - return true; - } - - const sponsorshipQuery = `query($user: String!) { - user(login: $user) { - ... on Sponsorable { - sponsorshipForViewerAsSponsorable { - tier { - name - monthlyPriceInDollars - } - } - } - } - }`; - - try { - const result = await github.graphql(sponsorshipQuery, { - user: username - }); - - console.log(result); - const sponsorship = result.user.sponsorshipForViewerAsSponsorable; - console.log(sponsorship); - const amount = sponsorship?.tier?.monthlyPriceInDollars || 0; - - console.log(`Sponsorship amount for ${username}: $${amount}/month`); - return amount >= 5; - } catch (error) { - console.log(`Error checking sponsorship: ${error.message}`); - return false; - } - - - name: Print Test Results - if: github.event_name == 'workflow_dispatch' - run: | - echo "Test Results for ${{ steps.issue-details.outputs.username }}:" - echo "Title: ${{ steps.issue-details.outputs.title }}" - echo "Platform: ${{ steps.issue-details.outputs.sponsor_platform }}" - echo "Would close issue: ${{ steps.sponsorship.outputs.result == 'false' }}" - - - name: Close Issue If Not Sponsor - if: | - github.event_name == 'issues' && - steps.sponsorship.outputs.result == 'false' - uses: actions/github-script@v7 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const issueNumber = context.issue.number; - const owner = context.repo.owner; - const repo = context.repo.repo; - - await github.rest.issues.createComment({ - owner, - repo, - issue_number: issueNumber, - body: 'Thank you for your feature request! This repository requires a GitHub sponsorship of at least $5/month to submit feature requests. Please consider becoming a sponsor at https://github.com/sponsors/LGUG2Z' - }); - - await github.rest.issues.update({ - owner, - repo, - issue_number: issueNumber, - state: 'closed' - });