ngx-build-info
Version:
 
78 lines (77 loc) • 3.29 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBuildNumber = void 0;
const architect_1 = require("@angular-devkit/architect");
const fs = require("fs-extra");
const gitRepoInfo = require("git-repo-info");
const path = require("path");
exports.default = architect_1.createBuilder(buildInfoBuilder);
function buildInfoBuilder(options, context) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
const project = (_a = context.target) === null || _a === void 0 ? void 0 : _a.project;
if (!project) {
throw new Error('build-info builder has to be run in a project.');
}
const projectMetadata = yield context.getProjectMetadata(project);
const projectRoot = path.resolve(context.workspaceRoot, projectMetadata.root);
const packageJsonFile = path.resolve(projectRoot, 'package.json');
let packageJson;
try {
packageJson = yield Promise.resolve().then(() => require(packageJsonFile));
}
catch (e) {
throw new Error(`Could not load package.json from ${packageJsonFile}: \n${e.message}`);
}
const buildInfoFile = !!options.output
? path.resolve(projectRoot, options.output)
: defaultOutput(projectRoot, projectMetadata);
yield fs.mkdirp(path.dirname(buildInfoFile));
yield fs.writeFile(buildInfoFile, buildBuildInfoContents(packageJson, gitRepoInfo()));
return { success: true };
});
}
function buildBuildInfoContents(packageJson, gitInfo) {
return `
// DO NOT EDIT. This is a generated file.
// tslint:disable
export const BUILD_INFO = ${JSON.stringify({
name: packageJson.name,
version: packageJson.version,
date: new Date().toISOString(),
branch: gitInfo.branch,
rev: gitInfo.abbreviatedSha,
tag: gitInfo.lastTag,
commitsSinceLastTag: gitInfo.commitsSinceLastTag,
authorDate: gitInfo.authorDate,
buildNumber: getBuildNumber(),
}, null, 2)};
`;
}
function defaultOutput(projectRoot, projectMetadata) {
return path.resolve(projectRoot, projectMetadata.sourceRoot, 'environments', 'build-info.ts');
}
const buildNumberVars = [
'BUILD_NUMBER',
'CIRCLE_BUILD_NUM',
'TRAVIS_BUILD_NUMBER',
];
function getBuildNumber() {
for (const envVar of buildNumberVars) {
if (process.env[envVar]) {
return parseInt(process.env[envVar], 10);
}
}
return null;
}
exports.getBuildNumber = getBuildNumber;
//# sourceMappingURL=build-info-builder.js.map
;