Initial version

This commit is contained in:
Tim Ruffles
2019-12-19 14:53:51 +00:00
parent 1414709b8e
commit 40a43b5e98
8 changed files with 169 additions and 0 deletions

3
Dockerfile Normal file
View File

@@ -0,0 +1,3 @@
FROM node:12
COPY . .

60
action.js Normal file
View 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
View File

@@ -0,0 +1,2 @@
const assert = require('assert')

11
actions.yml Normal file
View 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
View File

@@ -0,0 +1,2 @@
humans:

76
package-lock.json generated Normal file
View 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
View File

@@ -0,0 +1,7 @@
{
"private": true,
"dependencies": {
"chalk": "3.0.0",
"yaml": "1.7.2"
}
}

8
test.sh Normal file
View File

@@ -0,0 +1,8 @@
#!bin/bash
set -xeuo pipefail
node action.js txt >/tmp/t1
node action.js json >/tmp/t2
node action.js shell >/tmp/t3