metatags
Version:
Ensure your HTML is previewed beautifully across social networks
67 lines (54 loc) • 1.59 kB
JavaScript
const Build = require('github-build')
const { jobUrl, repo, sha } = require('ci-env')
const MESSAGE = {
START: 'Checking URLs availability…',
PASS: 'Yours links are fine',
FAIL: 'Something is wrong in your links',
ERROR: 'Uh, something unexpected happened'
}
const EXIT_CODE_METHOD_MAPPER = {
0: 'pass',
1: 'fail'
}
const token =
process.env.gh_token ||
process.env.GH_TOKEN ||
process.env.github_token ||
process.env.GITHUB_TOKEN ||
process.env.metatags_github_token ||
process.env.metatags_GITHUB_TOKEN
const meta = {
repo,
sha,
token,
label: 'metatags',
description: MESSAGE.START,
url: jobUrl
}
const noopBuild = {
start: () => Promise.resolve(),
pass: () => Promise.resolve(),
fail: () => Promise.resolve(),
error: () => Promise.resolve()
}
const handleError = err => {
if (err.status !== 404) {
const message = `\n\nCould not add github status (${err.status}): ${err.error.message}`
console.error(message)
}
}
const createBuild = build => ({
pass: () => build.pass(MESSAGE.PASS).catch(handleError),
fail: () => build.fail(MESSAGE.FAIL).catch(handleError),
error: () => build.error(MESSAGE.ERROR).catch(handleError),
start: () => build.start(MESSAGE.START).catch(handleError)
})
const createExit = build => async ({ buildCode = 0, exitCode = buildCode }) => {
const method = EXIT_CODE_METHOD_MAPPER[buildCode] || 'error'
await build[method]()
process.exit(exitCode)
}
const build = createBuild(token ? new Build(meta) : noopBuild)
build.exit = createExit(build)
module.exports = build