-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathget-secret-scanning-alerts.js
68 lines (59 loc) · 1.68 KB
/
get-secret-scanning-alerts.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env node
require('dotenv').config()
const pReduce = require('./lib/p-reduce');
const delay = require('delay');
const {Octokit} = require('@octokit/rest')
var buffer = ""
var base_url = ''
if (args.length > 0)
base_url = args[1]
if (base_url.length > 0)
{
octokit = new Octokit({
auth: process.env.GH_AUTH_TOKEN,
previews: ['dorian-preview'],
baseUrl: base_url + '/api/v3'
});
}
else
{
octokit = new Octokit({
auth: process.env.GH_AUTH_TOKEN,
previews: ['dorian-preview']
});
}
const [, , ...args] = process.argv
const owner = args[0]
console.log("org,repo,secret_type,secret,state,resolved_at, url")
octokit
.paginate(octokit.repos.listForOrg, {
org: owner,
})
.then(repositories =>
pReduce(repositories, (repository) => {
if (repository.archived) {
return Promise.resolve();
}
const repo = repository.name
return octokit
.paginate("GET /repos/:owner/:repo/secret-scanning/alerts?per_page=100", {
owner: owner,
repo: repo
})
.then(alerts => {
if (alerts.length > 0) {
pReduce(alerts, (alert) => {
console.log(`${owner},${repo},${alert.secret_type},${alert.secret},${alert.state},${alert.resolved_at},${alert.url}`) })
}
delay(300);
})
.catch(error => {
// console.error(`Failed for ${owner}/${repo}\n${error.message}\n${error.documentation_url}`)
})
})
)
.catch(error => {
console.error(`Getting repositories for organization ${owner} failed.
${error.message} (${error.status})
${error.documentation_url}`)
})