Initial version
This commit is contained in:
3
Dockerfile
Normal file
3
Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
FROM node:12
|
||||||
|
|
||||||
|
COPY . .
|
||||||
60
action.js
Normal file
60
action.js
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
const fs = require('fs')
|
||||||
|
const yaml = require('yaml')
|
||||||
|
|
||||||
|
const formatters = {
|
||||||
|
txt: txtFormatter,
|
||||||
|
json: jsonFormatter,
|
||||||
|
shell: (data) => txtFormatter(data, { colors: true}),
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
const format = process.argv[2]
|
||||||
|
|
||||||
|
const formatter = formatters[format]
|
||||||
|
if (!formatter) {
|
||||||
|
invalidFormat(format)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = yaml.parse(fs.readFileSync("./humans.txt.yaml", {encoding: "utf8"}))
|
||||||
|
|
||||||
|
formatter(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
function invalidFormat(format) {
|
||||||
|
const list = Object.keys(formatters).sort().join(",")
|
||||||
|
console.error(`'${format}' is not one of the accepted formats ${list}`)
|
||||||
|
process.statusCode = 1
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
function jsonFormatter({humans}) {
|
||||||
|
console.log(JSON.stringify(humans, null, 4))
|
||||||
|
}
|
||||||
|
|
||||||
|
function txtFormatter({humans}, {colors = false} = {}) {
|
||||||
|
let active = humans.filter(h => !h.alum).map(h => h.name)
|
||||||
|
let alum = humans.filter(h => h.alum).map(h => h.name)
|
||||||
|
|
||||||
|
if(colors) {
|
||||||
|
const chalk = require('chalk')
|
||||||
|
const total = active.length + alum.length
|
||||||
|
active = active.map((n, i) => chalk.hsl((i / total) * 360, 100, 50)(n))
|
||||||
|
alum = alum.map((n, i) => chalk.hsl(((i + active.length) / total) * 360, 100, 50)(n))
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("Current humans")
|
||||||
|
console.log("==============\n")
|
||||||
|
console.log(active.join("\n"))
|
||||||
|
console.log("\n")
|
||||||
|
|
||||||
|
console.log("Human alumni")
|
||||||
|
console.log("============\n")
|
||||||
|
console.log(alum.join("\n"))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
2
actions.test.js
Normal file
2
actions.test.js
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
const assert = require('assert')
|
||||||
|
|
||||||
11
actions.yml
Normal file
11
actions.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
name: 'GitHub Actions humans.txt'
|
||||||
|
description: 'List out the humans who help feed and tend the robots of GitHub Actions'
|
||||||
|
inputs:
|
||||||
|
format:
|
||||||
|
description: 'How to output the people of actions - txt, json or ascii'
|
||||||
|
default: 'ascii'
|
||||||
|
runs:
|
||||||
|
using: 'docker'
|
||||||
|
image: 'Dockerfile'
|
||||||
|
args:
|
||||||
|
- ${{ inputs.format }}
|
||||||
2
humans.txt.yaml
Normal file
2
humans.txt.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
humans:
|
||||||
|
|
||||||
76
package-lock.json
generated
Normal file
76
package-lock.json
generated
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
"requires": true,
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/runtime": {
|
||||||
|
"version": "7.7.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.7.tgz",
|
||||||
|
"integrity": "sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA==",
|
||||||
|
"requires": {
|
||||||
|
"regenerator-runtime": "^0.13.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@types/color-name": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
|
||||||
|
},
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==",
|
||||||
|
"requires": {
|
||||||
|
"@types/color-name": "^1.1.1",
|
||||||
|
"color-convert": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^4.1.0",
|
||||||
|
"supports-color": "^7.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-convert": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||||
|
"requires": {
|
||||||
|
"color-name": "~1.1.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-name": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||||
|
},
|
||||||
|
"has-flag": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
|
||||||
|
},
|
||||||
|
"regenerator-runtime": {
|
||||||
|
"version": "0.13.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
|
||||||
|
"integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "7.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
|
||||||
|
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
|
||||||
|
"requires": {
|
||||||
|
"has-flag": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"yaml": {
|
||||||
|
"version": "1.7.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz",
|
||||||
|
"integrity": "sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.6.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
7
package.json
Normal file
7
package.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"private": true,
|
||||||
|
"dependencies": {
|
||||||
|
"chalk": "3.0.0",
|
||||||
|
"yaml": "1.7.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user