kopia lustrzana https://github.com/badgen/badgen.net
71 wiersze
3.0 KiB
TypeScript
71 wiersze
3.0 KiB
TypeScript
|
import got from '../libs/got'
|
||
|
import { createBadgenHandler, PathArgs } from '../libs/create-badgen-handler'
|
||
|
|
||
|
const help = `
|
||
|
## Public repositories
|
||
|
|
||
|
To enable dependabot on a public repo (for the badge to working), you need to either
|
||
|
|
||
|
- login at https://app.dependabot.com/ then add it manually,
|
||
|
- or add a [\`.dependabot/config.yml\`](https://dependabot.com/docs/config-file/) file to the repo.
|
||
|
|
||
|
Then you may include the badge in your repo like [this PR](https://github.com/thepracticaldev/dev.to/pull/3268).
|
||
|
|
||
|
## Private repositories
|
||
|
In order to use the dependabot badge with a private GitHub repository you will need to get its id. You can use the [GitHub API](https://developer.github.com/v3/) and [curl](https://curl.haxx.se/docs/manual.html) to do this like so:
|
||
|
<pre>
|
||
|
curl -u "<b>$your_username</b>" https://api.github.com/repos/<b>$repo_owner</b>/<b>$repo_name</b>
|
||
|
</pre>
|
||
|
* _\`$your_username\` is well your GitHub username for authentication._
|
||
|
* _\`$repo_owner\` is the owner of the repo e.g. badgen._
|
||
|
* _\`$repo_name\` is the name of the repo e.g. badgen-icons._
|
||
|
|
||
|
You will need to have read permissions for the repo for this to work, and once entering the command you will be prompted to provide a password for your GitHub account. If you use 2 factor authentication use one of the following 2 methods:
|
||
|
|
||
|
* Pass a 2 factor authentication code
|
||
|
<pre>
|
||
|
curl -u "$your_username" <b>--header 'x-github-otp: $2fa_code'</b> https://api.github.com/repos/$repo_owner/$repo_name
|
||
|
</pre>
|
||
|
* _\`$2fa_code\` is the 2 factor authentication code from your phone._
|
||
|
|
||
|
* Pass a personal access token
|
||
|
<pre>
|
||
|
curl <b>--header 'Authorization: token $pat_token'</b> https://api.github.com/repos/$repo_owner/$repo_name
|
||
|
</pre>
|
||
|
* _\`$pat_token\` is a personal authentication token (see [this article](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line))._
|
||
|
|
||
|
Running one of the above curl commands should output a large JSON object of all the repository details, all we want is the "id" field, it should be the first item and be a 9 digit number.
|
||
|
|
||
|
Once you have found the id for your repo, you can use it with the badgen dependabot endpoint like so:
|
||
|
<pre>
|
||
|
https://badgen.net/dependabot/badgen/example-private-repo/<b>123456789</b>?icon=dependabot
|
||
|
</pre>
|
||
|
`
|
||
|
|
||
|
export default createBadgenHandler({
|
||
|
title: 'Dependabot',
|
||
|
help,
|
||
|
examples: {
|
||
|
'/dependabot/thepracticaldev/dev.to?icon=dependabot': 'status',
|
||
|
'/dependabot/dependabot/dependabot-core?icon=dependabot': 'status'
|
||
|
},
|
||
|
handlers: {
|
||
|
'/dependabot/:owner/:repo/:identifier?': handler
|
||
|
}
|
||
|
})
|
||
|
|
||
|
async function handler ({ owner, repo, identifier }: PathArgs) {
|
||
|
// https://github.com/dependabot/feedback/issues/6#issuecomment-503994253
|
||
|
let endpoint = `https://api.dependabot.com/badges/status?host=github&repo=${owner}/${repo}`
|
||
|
if (identifier) {
|
||
|
endpoint += `&identifier=${identifier}`
|
||
|
}
|
||
|
const { status, colour } = await got(endpoint).json<any>()
|
||
|
|
||
|
return {
|
||
|
subject: 'Dependabot',
|
||
|
status,
|
||
|
color: colour
|
||
|
}
|
||
|
}
|