UNPKG

ngx-build-info

Version:

![CI](https://github.com/blaugold/ngx-build-info/workflows/CI/badge.svg) ![NPM](https://img.shields.io/npm/v/ngx-build-info)

78 lines (77 loc) 3.29 kB
"use strict"; 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