name: UncivBot on: [issue_comment] jobs: comment: if: github.event.comment.body == 'summary' runs-on: ubuntu-latest steps: - uses: actions/github-script@v3 with: github-token: ${{secrets.GITHUB_TOKEN}} script: | var result = await github.repos.listCommits({ owner: context.repo.owner, repo: context.repo.repo, per_page: 50 }); var commitSummary = ""; var ownerToCommits = {} var reachedPreviousVersion = false result.data.forEach(commit => { if (reachedPreviousVersion) return var author = commit.author.login if (author=="uncivbot[bot]") return var commitMessage = commit.commit.message.split("\n")[0]; if (commitMessage.match(/^\d+\.\d+\.\d+$/)){ // match EXACT version, like 3.4.55 ^ is for start-of-line, $ for end-of-line reachedPreviousVersion=true console.log(commitMessage) return } if(commitMessage.startsWith("Merge ")) return commitMessage = commitMessage.replace(/\(\#\d+\)/,"") // match PR auto-text, like (#2345) if (author != context.repo.owner){ if (ownerToCommits[author]==undefined) ownerToCommits[author]=[] ownerToCommits[author].push(commitMessage) } else commitSummary += "\n\n" + commitMessage }); Object.entries(ownerToCommits).forEach(entry => { const [commits,author] = entry; if (commits.length==1) commitSummary += "\n\n" + commitMessage+" By "+author else { commitSummary += "\n\nBy "+author+":" console.log(JSON.stringify(commits)) commits.forEach(commitMessage => {commitSummary+="\n- "+commitMessage}) } }) github.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: commitSummary })