70 lines
1.7 KiB
JavaScript
70 lines
1.7 KiB
JavaScript
const cp = require('child_process');
|
|
|
|
async function calculate() {
|
|
const aa = await Promise.all(
|
|
[1, 2, 3, 4, 5].map((q) => {
|
|
const v = cp
|
|
.execSync(
|
|
`curl -i "https://api.github.com/repos/nrwl/nx/issues?state=open&page=${q}&per_page=100"`
|
|
)
|
|
.toString();
|
|
const substr = v.substring(v.indexOf('['));
|
|
return JSON.parse(substr);
|
|
})
|
|
);
|
|
let all = [];
|
|
aa.forEach((a) => all.push(...a));
|
|
all = all.filter((a) => a.html_url.indexOf('/pull') === -1);
|
|
console.log('total number', all.length);
|
|
|
|
const grouped = {};
|
|
all.forEach((i) => {
|
|
const ll = i.labels;
|
|
let scope = (
|
|
ll.find((lll) => lll.name.indexOf('scope:') > -1) || {
|
|
name: 'no-scope',
|
|
}
|
|
).name;
|
|
|
|
if (
|
|
scope === 'scope: react' ||
|
|
scope === 'scope: nextjs' ||
|
|
scope === 'scope: gatsby'
|
|
) {
|
|
scope = 'scope: react+next+gatsby';
|
|
}
|
|
|
|
if (!grouped[scope]) grouped[scope] = [];
|
|
grouped[scope].push(i);
|
|
});
|
|
|
|
let totalBugs = 0;
|
|
Object.keys(grouped).forEach((k) => {
|
|
const bugs = grouped[k].filter((i) => {
|
|
const ll = i.labels;
|
|
return !!ll.find((lll) => lll.name.indexOf('type: bug') > -1);
|
|
});
|
|
totalBugs += bugs.length;
|
|
console.log(`${k}, issues: ${grouped[k].length}, bugs: ${bugs.length}`);
|
|
});
|
|
|
|
console.log('without scope');
|
|
grouped['no-scope'].forEach((issue) => {
|
|
if (
|
|
issue.labels.every((lll) => lll.name.indexOf('type: question') === -1)
|
|
) {
|
|
console.log(issue.html_url);
|
|
} else {
|
|
// console.log(`question: ${issue.html_url}`);
|
|
}
|
|
});
|
|
|
|
console.log(`Total bugs: ${totalBugs}`);
|
|
}
|
|
|
|
calculate()
|
|
.then(() => {
|
|
console.log('done');
|
|
})
|
|
.catch((e) => console.log(e));
|