@angular-plugins/npm
Version:
Npm Plugin for Angular and Nx Repos
44 lines (43 loc) • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const architect_1 = require("@angular-devkit/architect");
const rxjs_1 = require("rxjs");
const operators_1 = require("rxjs/operators");
const fs_1 = require("fs");
const fileutils_1 = require("@nrwl/workspace/src/utils/fileutils");
const child_process_1 = require("child_process");
function createDeployRunner(options, { logger, workspaceRoot }) {
logger.info('Start npm deploy builder' + JSON.stringify(options));
const libraryPackageJson = fileutils_1.readJsonFile(options.packageJsonPath);
const unlinkFileObservable = rxjs_1.bindNodeCallback(fs_1.unlink);
const execObservable = rxjs_1.bindNodeCallback(child_process_1.exec);
return unlinkFileObservable(options.packageJsonPath).pipe(operators_1.switchMap(() => {
return rxjs_1.from(executeCommand(logger, `git describe --tags`));
}), operators_1.map((version) => {
logger.warn(`The version to use ${version}`);
fileutils_1.writeJsonFile(options.packageJsonPath, Object.assign(Object.assign({}, libraryPackageJson), { version: version.replace('\n', "").replace('v', "") }));
}), operators_1.switchMap(() => {
return execObservable(`npm publish ${options.packageJsonPath.replace("package.json", "")} --access public`);
}), operators_1.map(() => {
return { success: true };
}), operators_1.tap(() => logger.info('npm deploy ran successfully')), operators_1.catchError(e => {
logger.error(`Failed to ran npm deploy ${e}`);
return rxjs_1.of({ success: false });
}));
}
exports.createDeployRunner = createDeployRunner;
function executeCommand(logger, command) {
var ChildProcess = require('child_process');
return new Promise((res, rej) => {
const a = ChildProcess.exec('git describe --tags');
a.stdout.on('data', data => {
logger.info(`Current Tag Version ${data}`);
res(data);
});
a.stderr.on('data', err => {
logger.error(`There is an error ${err}`);
rej(err);
});
});
}
exports.default = architect_1.createBuilder(createDeployRunner);