npm-submodules
Version:
Simple way to manage typescipt and angular2 submodules from one repository
66 lines (65 loc) • 2.71 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
// import { TsmOptions } from '../types';
const execa = require('execa');
const path = require('path');
const Listr = require("listr");
const submodules_resolution_1 = require("../utils/submodules-resolution");
const npm_version_task_1 = require("../tasks/npm/npm-version.task");
function run(cli) {
const { project, verbose, message, gitTagVersion, yarn, skipPush } = cli.flags;
const noGitTagVersion = gitTagVersion === false;
const version = cli.input[1];
if (!version) {
return Promise.reject('Error: please provide version like (patch, major, prerelase, 1.2.3, etc.');
}
return submodules_resolution_1.findSubmodules(project)
.then((opts) => {
// 1. version all sub modules
// 2. version root package
const tasks = new Listr([
{
title: 'Version all submodules',
task: () => new Listr(opts.map(opt => ({
title: `npm version (${opt.pkg.name}: ${opt.src})`,
task: () => npm_version_task_1.npmVersion({ yarn, src: opt.src, version, noGitTagVersion: true })
})))
},
{
title: 'git add -A',
task: () => execa.shell('git add -A'),
skip: () => noGitTagVersion
},
{
title: 'Version root package',
task: () => npm_version_task_1.npmVersion({ yarn, src: '.', version, message, noGitTagVersion: true })
},
{
title: 'Create version commit',
task: () => {
const pkg = require(path.resolve('package.json'));
return execa.stdout('git', ['commit', '-am', message || `v${pkg.version}`]);
},
skip: () => noGitTagVersion
},
{
title: 'Add tag version',
task: () => {
const pkg = require(path.resolve('package.json'));
return execa.stdout('git', ['tag', `v${pkg.version}`]);
},
skip: () => noGitTagVersion
},
{
title: 'Push to origin with tags',
task: () => {
const currentBranch = execa.shellSync(`git branch | sed -n '/\* /s///p'`).stdout;
return execa.stdout('git', ['push', 'origin', currentBranch, '--tags']);
},
skip: () => skipPush
}
], { renderer: verbose ? 'verbose' : 'default' });
return tasks.run();
});
}
exports.run = run;
;