@dot-event/version
Version:
dot-event package version operation
218 lines (177 loc) • 5.18 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _fs = _interopRequireDefault(require("@dot-event/fs"));
var _git = _interopRequireDefault(require("@dot-event/git"));
var _log = _interopRequireDefault(require("@dot-event/log"));
var _spawn = _interopRequireDefault(require("@dot-event/spawn"));
var _store = _interopRequireDefault(require("@dot-event/store"));
var _fsExtra = require("fs-extra");
var _semver = _interopRequireDefault(require("semver"));
var _component = require("./version/component");
var _deps = require("./version/deps");
var _git2 = require("./version/git");
var _init = require("./version/init");
var _npm = require("./version/npm");
var _phase = require("./version/phase");
// Packages
// Helpers
// Composer
function _default(options) {
const {
events
} = options;
if (events.ops.has("version")) {
return options;
}
(0, _fs.default)({
events
});
(0, _git.default)({
events
});
(0, _log.default)({
events
});
(0, _spawn.default)({
events
});
(0, _store.default)({
events
});
events.withOptions({
cwd: process.cwd()
}).onAny({
version: [_component.component, _init.readPackageJson, (0, _phase.phase)(events, "Read package json"), _deps.addDeps, (0, _phase.phase)(events, "Consolidate dependencies"), _git2.status, (0, _phase.phase)(events, "Git status"), bumpVersions, (0, _phase.phase)(events, "Bump versions"), matchVersions, (0, _phase.phase)(events, "Match versions"), writePackageJson, (0, _phase.phase)(events, "Write package json"), _git2.commit, (0, _phase.phase)(events, "Commit"), _npm.publish, (0, _phase.phase)(events, "Publish"), () => events.emit("unmount")],
versionSetupOnce: () => events.argv({
alias: {
d: ["dry"],
f: ["force"],
p: ["publish"]
}
})
});
return options;
}
function bumpVersions(_x) {
return _bumpVersions.apply(this, arguments);
}
function _bumpVersions() {
_bumpVersions = (0, _asyncToGenerator2.default)(function* (options) {
const {
events,
props
} = options;
const {
behind,
dirty,
needsPublish
} = events.get([...props, "gitStatus", "results"]);
if (behind || dirty) {
yield events.set([...props, "ignore"], true);
}
if (needsPublish) {
yield bumpVersion(options);
}
});
return _bumpVersions.apply(this, arguments);
}
function matchVersions(_x2) {
return _matchVersions.apply(this, arguments);
}
function _matchVersions() {
_matchVersions = (0, _asyncToGenerator2.default)(function* (options) {
const {
events,
props
} = options;
const {
deps,
devDeps,
ignore
} = events.get(props);
if (ignore) {
return;
}
for (const dep in deps) {
const newDep = events.get(["deps", dep]);
if (deps[dep] !== newDep) {
yield events.set([...props, "deps", dep], newDep);
yield bumpVersion(options);
}
}
for (const dep in devDeps) {
const newDep = events.get(["deps", dep]);
if (devDeps[dep] !== newDep) {
yield events.set([...props, "devDeps", dep], newDep);
yield bumpVersion(options);
}
}
});
return _matchVersions.apply(this, arguments);
}
function writePackageJson(_x3) {
return _writePackageJson.apply(this, arguments);
}
function _writePackageJson() {
_writePackageJson = (0, _asyncToGenerator2.default)(function* (options) {
const {
events,
props
} = options;
const {
deps,
devDeps,
ignore,
projectPkgPath,
version
} = events.get(props);
if (ignore) {
return;
}
const json = yield (0, _fsExtra.readJson)(projectPkgPath);
json.version = version;
json.dependencies = deps;
json.devDependencies = devDeps;
yield events.fsWriteJson([...props, "syncDeps"], {
json,
path: projectPkgPath,
spaces: 2
});
});
return _writePackageJson.apply(this, arguments);
}
function bumpVersion(_x4) {
return _bumpVersion.apply(this, arguments);
}
function _bumpVersion() {
_bumpVersion = (0, _asyncToGenerator2.default)(function* (options) {
const {
events,
props,
publish
} = options;
const {
bumped,
ignore,
name,
version
} = events.get(props);
if (bumped || ignore) {
return;
}
const level = typeof publish === "string" ? publish : "patch";
const newVersion = _semver.default.inc(version, level);
yield Promise.all([events.set([...props, "bumped"], true), events.set([...props, "version"], newVersion), (0, _deps.addDep)((0, _objectSpread2.default)({}, options, {
name,
version: newVersion
}))]);
});
return _bumpVersion.apply(this, arguments);
}
//# sourceMappingURL=version.js.map