const read = require('fs').readFileSync; const exec = require('child_process').execSync; // See tests ../node-tests/config/utils.js const repositoryYear = function (date = exec('git show -s --format=%ci HEAD')) { return date.toString().trim().split('-').shift(); }; const repositorySHA = function (sha = exec('git rev-parse --short HEAD')) { return sha.toString().trim(); }; const binaryVersion = function (repositoryRoot) { return function (versionFileContents = read(`${repositoryRoot}/version/version.go`)) { // see /scripts/dist.sh:8 return versionFileContents .toString() .split('\n') .find(function (item, i, arr) { return item.indexOf('Version =') !== -1; }) .trim() .split('"')[1]; }; }; const env = function ($) { return function (flag, fallback) { // a fallback value MUST be set if (typeof fallback === 'undefined') { throw new Error(`Please provide a fallback value for $${flag}`); } // return the env var if set if (typeof $[flag] !== 'undefined') { if (typeof fallback === 'boolean') { // if we are expecting a boolean JSON parse strings to numbers/booleans return !!JSON.parse($[flag]); } return $[flag]; } // If the fallback is a function call it and return the result. // Lazily calling the function means binaries used for fallback don't need // to be available if we are sure the environment variables will be set if (typeof fallback === 'function') { return fallback(); } // just return the fallback value return fallback; }; }; module.exports = { repositoryYear: repositoryYear, repositorySHA: repositorySHA, binaryVersion: binaryVersion, env: env, };