const { gitDescribeSync } = require('git-describe'); const { version } = require('./package.json'); const { resolve, relative } = require('path'); const { writeFileSync } = require('fs-extra'); function getGitInfo() { try { return gitDescribeSync({ dirtyMark: false, dirtySemver: false }); } catch (err) { const commit = process.env.BUILD_SOURCEVERSION || process.env.GIT_COMMIT || 'unknown'; const ref = process.env.BUILD_SOURCEBRANCHNAME || process.env.GIT_BRANCH || 'unknown'; const build = process.env.BUILD_BUILDNUMBER || process.env.BUILD_NUMBER || 'local'; return { raw: `${version}-${build}`, tag: version, distance: 0, hash: commit, semverString: version, suffix: build, ref }; } } const gitInfo = getGitInfo(); gitInfo.version = version; const file = resolve(__dirname, '.', 'src', 'environments', 'version.ts'); writeFileSync(file, `// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN! /* tslint:disable */ export const VERSION = ${JSON.stringify(gitInfo, null, 4)}; export const BUILD_STAMP = ${JSON.stringify(new Date())}; /* tslint:enable */ `, { encoding: 'utf-8' }); console.log(`Wrote version info ${gitInfo.raw} to ${relative(resolve(__dirname, '..'), file)}`);