mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-24 23:21:12 -05:00
91dc6d7234
- Add missing fix mode options for: CLANG_FORMAT, ENV, GOOGLE_JAVA_FORMAT, NATURAL_LANGUAGE, PYTHON_ISORT, RUST_CLIPPY. - Refactor linter tests to make them shorter because there's no need to have big test files. - Refactor 'bad' linter tests for linters that support fix mode so they contain only automatically fixable issues. This is needed to avoid adding another set of 'bad' linter tests for fix mode. - Provide configuration files for linters that support fix mode and for which the default configuration is not suitable to enable fix mode: ansible-lint, ESLint, golangci-lint. - Add a test case for linter commands options for linters that support fix mode, to ensure that fix mode and check-only mode options have been defined. - Refactor the fix mode test to check if linters actually applied modifications to files. - Update documentation about adding test cases for linters that support fix mode. - Don't exit with a fatal error if VALIDATE_xxx is false when testing fix mode because not all linters support fix mode. To enable this, set the new FIX_MODE_TEST_CASE_RUN variable to true.
220 lines
4.9 KiB
JavaScript
220 lines
4.9 KiB
JavaScript
var http = require('http')
|
|
var createHandler = require( 'github-webhook-handler')
|
|
|
|
var userArray = ['user1']
|
|
|
|
var teamPrivacy = 'closed' // closed (visible) / secret (hidden) are options here
|
|
|
|
var teamName = process.env.GHES_TEAM_NAME
|
|
var teamAccess = 'pull' // pull,push,admin options here
|
|
var teamId = ''
|
|
|
|
var orgRepos = []
|
|
|
|
// var creator = ""
|
|
|
|
var foo = someFunction();
|
|
var bar = a + 1;
|
|
|
|
http.createServer(function (req, res) {
|
|
handler(req, res, function (err) {
|
|
console.log(err)
|
|
res.statusCode = 404
|
|
res.end('no such location')
|
|
})
|
|
}).listen(3000)
|
|
|
|
handler.on('error', function (err) {
|
|
console.await.error('Error:', err.message)
|
|
})
|
|
|
|
handler.on('repository', function (event) {
|
|
if (event.payload.action === 'created') {
|
|
const repo = event.payload.repository.full_name
|
|
console.log(repo)
|
|
const org = event.payload.repository.owner.login
|
|
getTeamID(org)
|
|
setTimeout(checkTeamIDVariable, 1000)
|
|
}
|
|
})
|
|
|
|
handler.on('team', function (event) {
|
|
// TODO user events such as being removed from team or org
|
|
if (event.payload.action === 'deleted') {
|
|
// const name = event.payload.team.name
|
|
const org = event.payload.organization.login
|
|
getRepositories(org)
|
|
setTimeout(checkReposVariable, 5000)
|
|
} else if (event.payload.action === 'removed_from_repository') {
|
|
const org = event.payload.organization.login
|
|
getTeamID(org)
|
|
// const repo = event.payload.repository.full_name
|
|
setTimeout(checkTeamIDVariable, 1000)
|
|
}
|
|
})
|
|
|
|
function getTeamID (org) {
|
|
const https = require('https')
|
|
|
|
const options = {
|
|
hostname: (process.env.GHE_HOST),
|
|
port: 443,
|
|
method: 'GET',
|
|
headers: {
|
|
Authorization: 'token ' + (process.env.GHE_TOKEN),
|
|
'Content-Type': 'application/json'
|
|
}
|
|
}
|
|
let body = []
|
|
const req = https.request(options, (res) => {
|
|
res.on('data', (chunk) => {
|
|
body.push(chunk)
|
|
}).on('end', () => {
|
|
body = JSON.parse(Buffer.concat(body))
|
|
body.forEach(item => {
|
|
if (item.name === teamName) {
|
|
teamId = item.id
|
|
}
|
|
})
|
|
})
|
|
})
|
|
|
|
req.on('error', (error) => {
|
|
console.error(error)
|
|
})
|
|
|
|
req.end()
|
|
}
|
|
|
|
function checkTeamIDVariable (repo) {
|
|
if (typeof teamId != 'undefined') {
|
|
addTeamToRepo(repo, teamId)
|
|
}
|
|
}
|
|
|
|
function checkReposVariable (org) {
|
|
if (typeof orgRepos !== 'undefined') {
|
|
// for(var repo of orgRepos) {
|
|
// addTeamToRepo(repo, teamId)
|
|
// }
|
|
reCreateTeam(org)
|
|
}
|
|
}
|
|
|
|
function addTeamToRepo (repo, teamId) {
|
|
const https = require('https')
|
|
const data = JSON.stringify({
|
|
permission: teamAccess
|
|
})
|
|
|
|
const options = {
|
|
hostname: (process.env.GHE_HOST),
|
|
port: 443,
|
|
path: '/api/v3/teams/' + teamId + '/repos/' + repo,
|
|
method: 'PUT',
|
|
headers: {
|
|
Authorization: 'token ' + (process.env.GHE_TOKEN),
|
|
'Content-Type': 'application/json',
|
|
'Content-Length': data.length
|
|
}
|
|
}
|
|
let body = []
|
|
|
|
const req = https.request(options, (res) => {
|
|
res.on('data', (chunk) => {
|
|
|
|
body.push(chunk)
|
|
|
|
}).on('end', () => {
|
|
|
|
body = Buffer.concat(body).toString()
|
|
console.log(res.statusCode)
|
|
console.log('added team to ' + repo)
|
|
})
|
|
})
|
|
|
|
req.on('error', (error) => {
|
|
console.error(error)
|
|
})
|
|
|
|
req.write(data)
|
|
req.end()
|
|
}
|
|
|
|
function reCreateTeam (org) {
|
|
const https = require('https')
|
|
const data = JSON.stringify({
|
|
name: teamName,
|
|
description: teamDescription,
|
|
privacy: teamPrivacy,
|
|
maintainers: userArray,
|
|
repo_names: orgRepos
|
|
})
|
|
|
|
const options = {
|
|
hostname: (process.env.GHE_HOST),
|
|
port: 443,
|
|
path: '/api/v3/orgs/' + org + '/teams',
|
|
method: 'POST',
|
|
headers: {
|
|
Authorization: 'token ' + (process.env.GHE_TOKEN),
|
|
'Content-Type': 'application/json',
|
|
'Content-Length': data.length
|
|
}
|
|
}
|
|
// const body = []
|
|
const req = https.request(options, (res) => {
|
|
if (res.statusCode !== 201) {
|
|
console.log('Status code: ' + res.statusCode)
|
|
console.log('Added ' + teamName + ' to ' + org + ' Failed')
|
|
res.on('data', function (chunk) {
|
|
console.log('BODY: ' + chunk)
|
|
})
|
|
} else {
|
|
console.log('Added ' + teamName + ' to ' + org)
|
|
}
|
|
})
|
|
|
|
req.on('error', (error) => {
|
|
console.error(error)
|
|
})
|
|
|
|
req.write(data)
|
|
req.end()
|
|
}
|
|
|
|
function getRepositories (org) {
|
|
orgRepos = []
|
|
|
|
const https = require('https')
|
|
|
|
const options = {
|
|
hostname: (process.env.GHE_HOST),
|
|
port: '443',
|
|
path: '/api/v3/orgs/' + org + "/repos",
|
|
method: 'GET',
|
|
headers: {
|
|
Authorization: 'token ' + (process.env.GHE_TOKEN),
|
|
'Content-Type': 'application/json'
|
|
}
|
|
}
|
|
let body = []
|
|
const req = https.request(options, (res) => {
|
|
res.on('data', (chunk) => {
|
|
body.push(chunk)
|
|
|
|
}).on('end', () => {
|
|
body = JSON.parse(Buffer.concat(body))
|
|
body.forEach(item => {
|
|
orgRepos.push(item.full_name)
|
|
|
|
console.log(item.full_name)
|
|
})
|
|
})
|
|
})
|
|
|
|
req.on('error', (error) => {
|
|
console.error(error)
|
|
})
|
|
req.end()
|
|
}
|