kopia lustrzana https://github.com/badgen/badgen.net
live-fns: add github dependents badge
rodzic
afcbb69ecc
commit
45dc7d556d
|
|
@ -1,3 +1,4 @@
|
|||
const cheerio = require('cheerio')
|
||||
const axios = require('../axios.js')
|
||||
const token = process.env.GH_TOKEN
|
||||
|
||||
|
|
@ -19,6 +20,10 @@ module.exports = async function (topic, ...args) {
|
|||
return issues('open', ...args)
|
||||
case 'issues':
|
||||
return issues('all', ...args)
|
||||
case 'dependents-repo':
|
||||
return dependents('REPOSITORY', ...args)
|
||||
case 'dependents-pkg':
|
||||
return dependents('PACKAGE', ...args)
|
||||
default:
|
||||
return {
|
||||
subject: 'github',
|
||||
|
|
@ -64,6 +69,28 @@ async function tag (user, repo) {
|
|||
}
|
||||
}
|
||||
|
||||
async function dependents (type, user, repo) {
|
||||
const html = await axios({
|
||||
url: `https://github.com/${user}/${repo}/network/dependents`,
|
||||
headers: {
|
||||
'Accept': 'text/html,application/xhtml+xml,application/xml'
|
||||
}
|
||||
}).then(res => res.data)
|
||||
|
||||
return {
|
||||
subject: type === 'PACKAGE' ? 'pkg dependents' : 'repo dependents',
|
||||
status: parseDependents(html, type),
|
||||
color: 'blue'
|
||||
}
|
||||
}
|
||||
|
||||
function parseDependents (html, type) {
|
||||
const $ = cheerio.load(html)
|
||||
const depLink = $(`a[href$="?dependent_type=${type}"]`)
|
||||
if (depLink.length !== 1) return -1
|
||||
return depLink.text().replace(/[^0-9,]/g, '')
|
||||
}
|
||||
|
||||
function queryGithub (query) {
|
||||
return axios.post('https://api.github.com/graphql', { query }, {
|
||||
headers: {
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue