首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用JS删除仓库的所有PR

用JS删除仓库的所有PR

作者头像
kifuan
发布2022-10-24 16:57:16
发布2022-10-24 16:57:16
3.4K00
代码可运行
举报
文章被收录于专栏:随便写写-kifuan随便写写-kifuan
运行总次数:0
代码可运行

背景

之前参加过一个小游戏项目,出过让新人操作的教程,结果提了一堆Pull Requests,写个脚本全删了。

步骤

先去申请一个Token,默认的就行,粘贴下来: https://github.com/settings/tokens/new?scopes=repo

下载一个JS库,用来操作Github API:

代码语言:javascript
代码运行次数:0
运行
复制
> pnpm add @octokit/core

看Github API Docs,关掉PR其实就是把它的状态更新成closed。参见这里:

所以我们要用这个逻辑来关掉一个PR:

代码语言:javascript
代码运行次数:0
运行
复制
octokit.request('PATCH /repos/{owner}/{repo}/pulls/{pull_number}', {
    owner: 'OWNER',
    repo: 'REPO',
    pull_number: '123',
    state: 'closed',
})

开写,都是基本的语法,用了一下Promise.all把一个Promise<T>[]包装成Promise<T[]>

代码语言:javascript
代码运行次数:0
运行
复制
const { Octokit } = require('@octokit/core')

async function main() {
    const octokit = new Octokit({ auth: 'TOKEN' })
    const response = await octokit.request('GET /repos/{owner}/{repo}/pulls', {
        owner: 'OWNER',
        repo: 'REPO'
    })
    await Promise.all(response.data.map(item => item.number).map(pullNumber => octokit.request('PATCH /repos/{owner}/{repo}/pulls/{pull_number}', {
        owner: 'OWNER',
        repo: 'REPO',
        pull_number: pullNumber.toString(),
        state: 'closed',
    })))
    
}

main()

我不确定这里的pullNumber是否需要加toString,但出于写静态类型语言的洁癖,我给加上了。

就这样。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档