检查是否创建了新的拉取请求



是否可以每隔x秒检查一次,确定是否在github存储库上创建了新的拉取请求,并对其执行函数(我使用的是JavaScript库@octokit/rest(?

到目前为止,我有

const { Octokit } = require('@octokit/rest');
const octokit = new Octokit({
auth: "REDACTED"
});
var data = (async () => {
var response = await octokit.request('/repos/foo/bar/pulls?state=all');
return response;
})();

使用数据作为githubapi的响应。如何确定是否创建了新的pr,我最简单的方法是ofc实际比较变量data的长度,但到目前为止,我还不知道如何做到这一点。

默认情况下,pullscreated排序,因此我们可以检查第0个索引的number属性是否大于旧的number。(number类似于出现在网站上的#1、#4等(。在我们等待新PR的时间里,可能会生成多个PR,所以我们需要过滤掉data,这样我们就可以有多个高于先前值的PR。

这是基于文件:

  • https://octokit.github.io/rest.js/v18#pulls-列表
  • https://docs.github.com/en/rest/reference/pulls#list-pull请求

并用卷曲测试路线

const { Octokit } = require('@octokit/rest');
const octokit = new Octokit({
auth: "REDACTED"
});
const getData = () => octokit.request('/repos/foo/bar/pulls?state=all');
const getLatestPRNumber = (data) => data.length === 0 ? 0 : data[0]["number"];
const getPRsAboveNumber = (data, prNumber) => data.filter(({number}) => number > prNumber)
(async () => {
const data = await getData();
let latestPR = getLatestPRNumber(data);
setInterval(async () => {
const data = await getData();
const firstPRNumber = getLatestPRNumber(data);
if (firstPRNumber > latestPR) {
const newPRs = getPRsAboveNumber(data, latestPR);
console.log(newPRs);
latestPR = firstPRNumber;
}
}, 1000 * 60); // 1000ms * 60 = 60s
})();

如果做了太多的PR,那么一些PR将无法访问,因为GitHub API使用分页

根据文件:

询>要获取的结果的页码。默认值:1
名称类型In
per_pageinteger每页结果数(最大100(。默认值:30
页面整数查询

最新更新