|
|
@@ -1,21 +1,62 @@ |
|
|
|
|
|
// See https://medium.com/@amcdnl/version-stamping-your-app-with-the-angular-cli-d563284bb94d |
|
|
|
|
|
const { gitDescribeSync } = require('git-describe'); |
|
|
const { version } = require('../package.json'); |
|
|
const { resolve, relative } = require('path'); |
|
|
const { writeFileSync } = require('fs-extra'); |
|
|
|
|
|
const moment = require('moment'); |
|
|
|
|
|
const { version } = require('./package.json'); |
|
|
var { buildNumber } = require('./build_number.json'); |
|
|
|
|
|
buildNumber++; |
|
|
|
|
|
const gitInfo = gitDescribeSync({ |
|
|
dirtyMark: false, |
|
|
dirtySemver: false |
|
|
}); |
|
|
|
|
|
gitInfo.version = version; |
|
|
let prerelease = version.split('-'); |
|
|
let _version = prerelease.shift(); |
|
|
let [major, minor, patch] = _version.split('.'); |
|
|
|
|
|
if(gitInfo.dirty) prerelease.push('dirty'); |
|
|
|
|
|
let raw = [_version, ...prerelease].join('-'); |
|
|
let build = [buildNumber, gitInfo.distance, gitInfo.hash].filter(v => v).join('.'); |
|
|
|
|
|
// full: <version>[-prerelease][-dirty]+<buildNumber>.<distance>.<sha> |
|
|
|
|
|
let versionInfo = { |
|
|
raw: raw, // '4.0.0-rc.6', |
|
|
major: major, // 4, |
|
|
minor: minor, // 0, |
|
|
patch: patch, // 0, |
|
|
prerelease: prerelease, // [ 'local' ], |
|
|
buildNumber: buildNumber, |
|
|
build: build, // 'sha.73808dd', |
|
|
version: version, // '4.0.0-local', |
|
|
// codeName: 'snapshot', |
|
|
// isSnapshot: true, |
|
|
full: [raw, build].join('+'), // '4.0.0-local+sha.73808dd', |
|
|
// branch: 'master', |
|
|
// commitSHA: '73808dd38b5ccd729404936834d1568bd066de81' |
|
|
hash: gitInfo.hash, |
|
|
buildDate: moment().format(), |
|
|
}; |
|
|
|
|
|
const bnFile = resolve(__dirname, 'build_number.json'); |
|
|
writeFileSync(bnFile, |
|
|
`${JSON.stringify({buildNumber:buildNumber}, null, 4)} |
|
|
`, { encoding: 'utf-8' }); |
|
|
|
|
|
const file = resolve(__dirname, '..', 'src', 'environments', 'version.ts'); |
|
|
const file = resolve(__dirname, 'angular_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 VERSION = ${JSON.stringify(versionInfo, null, 4)}; |
|
|
/* tslint:enable */ |
|
|
`, { encoding: 'utf-8' }); |
|
|
|
|
|
console.log(`Wrote version info ${gitInfo.raw} to ${relative(resolve(__dirname, '..'), file)}`); |
|
|
console.log(`Wrote version info ${versionInfo.version} to ${relative(resolve(__dirname, '.'), file)}`); |