name: Update set implementation lists on: # push: # branches: [master] workflow_dispatch: concurrency: group: set-impl cancel-in-progress: true jobs: update-set-impl-issues: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Get issues uses: actions-cool/issues-helper@v3.4.0 id: setimplissues with: actions: 'find-issues' labels: 'tracking set' - uses: actions/setup-node@v3 with: node-version: 16 - run: npm install mustache shell: bash - uses: actions/github-script@v6.4.1 id: updateissues with: script: | const mustache = require('mustache') const path = require('path') const fs = require('fs') const setsData = fs.readFileSync(path.join('Utils', 'mtg-sets-data.txt'), 'utf8') .split('\n') .map(line => line.split('|')); const cardsData = fs.readFileSync(path.join('Utils', 'mtg-cards-data.txt'), 'utf8') .split('\n') .map(line => line.split('|')); const issues = await github.paginate(github.rest.issues.listForRepo, { owner: context.repo.owner, repo: context.repo.repo, labels: 'tracking set' }); console.log("Found list of existing issues:", issues); const issuesToUpdate = []; const issuesToCreate = []; setsData.forEach(set => { let foundIssue = undefined; issues.every(issue => { if(issue && issue.title && issue.title.startsWith(set[1])) { console.log(`Found tracking issue for ${set[0]} with issue number: ${issue.number}`); foundIssue = issue; return false; } return true; }); if(foundIssue !== undefined) { issuesToUpdate.push(foundIssue); } else { issuesToCreate.push({ title: `${set[1]}: ${set[0]} Set Card Implementation Tracking`, body: `Placeholder` }); } }); console.log("Issues to update: ", issuesToUpdate); console.log("Issues to create: ", issuesToCreate);