[FEAT]: Reset all apps to workspace rules #63
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' | |
}); |