UNPKG

metatags

Version:

Ensure your HTML is previewed beautifully across social networks

67 lines (54 loc) 1.59 kB
'use strict' 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