From 2d17cc8d237d61a27bebe59c5bda4b0980f6e196 Mon Sep 17 00:00:00 2001 From: Chris Williams Date: Thu, 6 Feb 2020 13:09:54 -0500 Subject: [PATCH] ci(danger): add danger.js --- dangerfile.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 dangerfile.js diff --git a/dangerfile.js b/dangerfile.js new file mode 100644 index 00000000..61eaf9d4 --- /dev/null +++ b/dangerfile.js @@ -0,0 +1,48 @@ +/* global danger, fail, message */ + +// requires +const junit = require('@seadub/danger-plugin-junit').default; +const dependencies = require('@seadub/danger-plugin-dependencies').default; +const moduleLint = require('@seadub/danger-plugin-titanium-module').default; +const fs = require('fs'); +const path = require('path'); +const ENV = process.env; + +// Add links to artifacts we've stuffed into the ENV.ARTIFACTS variable +async function linkToArtifacts() { + if (ENV.ARTIFACTS && (ENV.BUILD_STATUS === 'SUCCESS' || ENV.BUILD_STATUS === 'UNSTABLE')) { + const artifacts = ENV.ARTIFACTS.split(';'); + if (artifacts.length !== 0) { + const artifactsListing = '- ' + artifacts.map(a => danger.utils.href(`${ENV.BUILD_URL}artifact/${a}`, a)).join('\n- '); + message(`:floppy_disk: Here are the artifacts produced:\n${artifactsListing}`); + } + } +} + +async function checkLintLog() { + const lintLog = path.join(__dirname, 'lint.log'); + if (!fs.existsSync(lintLog)) { + return; + } + const contents = fs.readFileSync(lintLog, 'utf8'); + fail('`npm run lint` failed, please check messages below for output.'); + message(`:bomb: Here's the output of \`npm run lint\`:\n\`\`\`${contents}\`\`\``); +} + +async function main() { + // do a bunch of things in parallel + // Specifically, anything that collects what labels to add or remove has to be done first before... + await Promise.all([ + junit({ pathToReport: './TESTS-*.xml' }), + dependencies({ type: 'npm' }), + linkToArtifacts(), + checkLintLog(), + moduleLint(), + ]); +} +main() + .then(() => process.exit(0)) + .catch(err => { + fail(err.toString()); + process.exit(1); + });