@covector/assemble
Advanced tools
Comparing version 0.5.0 to 0.6.0
# Changelog | ||
## \[0.6.0] | ||
- Roll up bumps from children recursively to bump parents unlimited levels deep. These bumps are done as a `patch` bump as they are automatic. Any parent bumps that would result in a `minor` or `major` change will likely include breaking changes in the package itself. This would imply that a specific change file would be included for it as well, as opposed to relying on a bump from a child. | ||
- [1ff1290](https://www.github.com/jbolda/covector/commit/1ff12906d125aeff3d5574092efe1fa469e06198) feat: roll up all bumps as a patch ([#170](https://www.github.com/jbolda/covector/pull/170)) on 2021-03-25 | ||
- Split up config merge function into two functions, one for version and one for publish, et al. This makes the types easier to reason about. | ||
- [66539a8](https://www.github.com/jbolda/covector/commit/66539a800365ccfb28f95291b066e77114863382) fix: GitHub release pipe ([#164](https://www.github.com/jbolda/covector/pull/164)) on 2021-03-24 | ||
## \[0.5.0] | ||
@@ -4,0 +11,0 @@ |
'use strict'; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.mergeIntoConfig = exports.assemble = exports.compareBumps = void 0; | ||
const tslib_1 = require("tslib"); | ||
const unified_1 = tslib_1.__importDefault(require("unified")); | ||
const remark_parse_1 = tslib_1.__importDefault(require("remark-parse")); | ||
const remark_stringify_1 = tslib_1.__importDefault(require("remark-stringify")); | ||
const remark_frontmatter_1 = tslib_1.__importDefault(require("remark-frontmatter")); | ||
const js_yaml_1 = tslib_1.__importDefault(require("js-yaml")); | ||
const lodash_1 = require("lodash"); | ||
const files_1 = require("@covector/files"); | ||
const command_1 = require("@covector/command"); | ||
const path_1 = tslib_1.__importDefault(require("path")); | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
var unified = require('unified'); | ||
var parse = require('remark-parse'); | ||
var stringify = require('remark-stringify'); | ||
var frontmatter = require('remark-frontmatter'); | ||
var yaml = require('js-yaml'); | ||
var lodash = require('lodash'); | ||
var files = require('@covector/files'); | ||
var command = require('@covector/command'); | ||
var path = require('path'); | ||
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } | ||
var unified__default = /*#__PURE__*/_interopDefaultLegacy(unified); | ||
var parse__default = /*#__PURE__*/_interopDefaultLegacy(parse); | ||
var stringify__default = /*#__PURE__*/_interopDefaultLegacy(stringify); | ||
var frontmatter__default = /*#__PURE__*/_interopDefaultLegacy(frontmatter); | ||
var yaml__default = /*#__PURE__*/_interopDefaultLegacy(yaml); | ||
var path__default = /*#__PURE__*/_interopDefaultLegacy(path); | ||
const parseChange = function* ({ cwd, vfile }) { | ||
const processor = unified_1.default() | ||
.use(remark_parse_1.default) | ||
.use(remark_frontmatter_1.default, ["yaml"]) | ||
.use(remark_stringify_1.default, { | ||
const processor = unified__default['default']() | ||
.use(parse__default['default']) | ||
.use(frontmatter__default['default'], ["yaml"]) | ||
.use(stringify__default['default'], { | ||
bullet: "-", | ||
@@ -27,3 +36,3 @@ }); | ||
const [parsedChanges, ...remaining] = processed.children; | ||
const parsedYaml = js_yaml_1.default.load(parsedChanges.value); | ||
const parsedYaml = yaml__default['default'].load(parsedChanges.value); | ||
changeset.releases = | ||
@@ -40,3 +49,3 @@ typeof parsedYaml === "object" && parsedYaml !== null ? parsedYaml : {}; | ||
//@ts-ignore TODO generator error | ||
let gitInfo = yield command_1.runCommand({ | ||
let gitInfo = yield command.runCommand({ | ||
cwd, | ||
@@ -75,3 +84,2 @@ pkgPath: "", | ||
}; | ||
exports.compareBumps = compareBumps; | ||
const mergeReleases = (changes, { additionalBumpTypes = [] }) => { | ||
@@ -88,3 +96,3 @@ return changes.reduce((release, change) => { | ||
type: bumpType, | ||
changes: lodash_1.cloneDeep([change]), | ||
changes: lodash.cloneDeep([change]), | ||
}; | ||
@@ -94,4 +102,4 @@ } | ||
release[pkg] = { | ||
type: exports.compareBumps(release[pkg].type, bumpType), | ||
changes: lodash_1.cloneDeep([...release[pkg].changes, change]), | ||
type: compareBumps(release[pkg].type, bumpType), | ||
changes: lodash.cloneDeep([...release[pkg].changes, change]), | ||
}; | ||
@@ -136,3 +144,49 @@ } | ||
}; | ||
exports.assemble = assemble; | ||
const mergeChangesToConfig = function* ({ config, assembledChanges, command, dryRun = false, filterPackages = [], }) { | ||
// build in assembledChanges to only issue commands with ones with changes | ||
// and pipe in data to template function | ||
const pkgCommands = Object.keys(config.packages).reduce((pkged, pkg) => { | ||
const pkgManager = config.packages[pkg].manager; | ||
const commandItems = { pkg, pkgManager, config }; | ||
const mergedCommand = mergeCommand(Object.assign(Object.assign({}, commandItems), { command })); | ||
if (!!mergedCommand) { | ||
pkged[pkg] = { | ||
pkg: pkg, | ||
path: config.packages[pkg].path, | ||
precommand: mergeCommand(Object.assign(Object.assign({}, commandItems), { command: `pre${command}` })), | ||
command: mergedCommand, | ||
postcommand: mergeCommand(Object.assign(Object.assign({}, commandItems), { command: `post${command}` })), | ||
manager: config.packages[pkg].manager, | ||
dependencies: config.packages[pkg].dependencies, | ||
}; | ||
} | ||
return pkged; | ||
}, {}); | ||
const pipeOutput = {}; | ||
let commands = []; | ||
for (let pkg of Object.keys(usePackageSubset(assembledChanges.releases, filterPackages))) { | ||
if (!pkgCommands[pkg]) | ||
continue; | ||
const pkgs = assembledChanges.releases; | ||
const pipeToTemplate = { | ||
release: pkgs[pkg], | ||
pkg: pkgCommands[pkg], | ||
}; | ||
if (dryRun) { | ||
pipeOutput[pkg] = {}; | ||
pipeOutput[pkg].name = pkg; | ||
pipeOutput[pkg].pipe = pipeToTemplate; | ||
} | ||
const merged = Object.assign(Object.assign({ pkg }, (!pkgs[pkg].parents ? {} : { parents: pkgs[pkg].parents })), { path: pkgCommands[pkg].path, type: pkgs[pkg].type || null, manager: pkgCommands[pkg].manager, dependencies: pkgCommands[pkg].dependencies, precommand: templateCommands(pkgCommands[pkg].precommand, pipeToTemplate, ["command", "dryRunCommand", "runFromRoot"]), command: templateCommands(pkgCommands[pkg].command, pipeToTemplate, [ | ||
"command", | ||
"dryRunCommand", | ||
]), postcommand: templateCommands(pkgCommands[pkg].postcommand, pipeToTemplate, ["command", "dryRunCommand", "runFromRoot"]) }); | ||
commands = [...commands, merged]; | ||
} | ||
if (dryRun) { | ||
console.log("==== data piped into commands ==="); | ||
Object.keys(pipeOutput).forEach((pkg) => console.log(pkg, "pipe", pipeOutput[pkg].pipe)); | ||
} | ||
return commands; | ||
}; | ||
const mergeIntoConfig = function* ({ config, assembledChanges, command, cwd, dryRun = false, filterPackages = [], }) { | ||
@@ -152,3 +206,3 @@ // build in assembledChanges to only issue commands with ones with changes | ||
if (!!mergedCommand) { | ||
pkged[pkg] = Object.assign(Object.assign(Object.assign({ pkg: pkg, path: config.packages[pkg].path, precommand: mergeCommand(Object.assign(Object.assign({}, commandItems), { command: `pre${command}` })), command: mergedCommand, postcommand: mergeCommand(Object.assign(Object.assign({}, commandItems), { command: `post${command}` })) }, (!publishElements[`getPublishedVersion${publishElements.subPublishCommand}`] | ||
pkged[pkg] = Object.assign(Object.assign(Object.assign({ pkg: pkg, path: config.packages[pkg].path || "", precommand: mergeCommand(Object.assign(Object.assign({}, commandItems), { command: `pre${command}` })), command: mergedCommand, postcommand: mergeCommand(Object.assign(Object.assign({}, commandItems), { command: `post${command}` })) }, (!publishElements[`getPublishedVersion${publishElements.subPublishCommand}`] | ||
? {} | ||
@@ -159,3 +213,3 @@ : { | ||
? {} | ||
: { assets: publishElements.assets })), { manager: config.packages[pkg].manager, dependencies: config.packages[pkg].dependencies }); | ||
: { assets: publishElements.assets })), { manager: config.packages[pkg].manager || "", dependencies: config.packages[pkg].dependencies }); | ||
} | ||
@@ -166,49 +220,44 @@ return pkged; | ||
let commands = []; | ||
for (let pkg of Object.keys(usePackageSubset(command !== "version" ? pkgCommands : assembledChanges.releases, filterPackages))) { | ||
for (let pkg of Object.keys(usePackageSubset(pkgCommands, filterPackages))) { | ||
if (!pkgCommands[pkg]) | ||
continue; | ||
const pkgs = command !== "version" ? config.packages : assembledChanges.releases; | ||
const pipeToTemplate = { | ||
release: pkgs[pkg], | ||
pkg: pkgCommands[pkg], | ||
}; | ||
let extraPublishParams = command == "version" | ||
let extraPublishParams = { | ||
// @ts-ignore TODO this returns a Promise and TS doesn't like that | ||
pkgFile: yield files.readPkgFile({ | ||
file: path__default['default'].join(cwd, | ||
//@ts-ignore | ||
config.packages[pkg].path, !!config.packages[pkg].manager && | ||
config.packages[pkg].manager === "rust" | ||
? "Cargo.toml" | ||
: "package.json"), | ||
nickname: pkg, | ||
}), | ||
}; | ||
pipeToTemplate.pkgFile = { | ||
name: extraPublishParams.pkgFile.name, | ||
version: extraPublishParams.pkgFile.version, | ||
versionMajor: extraPublishParams.pkgFile.versionMajor, | ||
versionMinor: extraPublishParams.pkgFile.versionMinor, | ||
versionPatch: extraPublishParams.pkgFile.versionPatch, | ||
pkg: extraPublishParams.pkgFile.pkg, | ||
}; | ||
let subPublishCommand = command.slice(7, 999); | ||
// add these after that they can use pkgFile | ||
extraPublishParams = Object.assign(Object.assign(Object.assign({}, extraPublishParams), (!pkgCommands[pkg][`getPublishedVersion${subPublishCommand}`] | ||
? {} | ||
: { | ||
// @ts-ignore TODO this returns a Promise and TS doesn't like that | ||
pkgFile: yield files_1.readPkgFile({ | ||
file: path_1.default.join(cwd, | ||
//@ts-ignore | ||
config.packages[pkg].path, !!config.packages[pkg].manager && | ||
config.packages[pkg].manager === "rust" | ||
? "Cargo.toml" | ||
: "package.json"), | ||
nickname: pkg, | ||
}), | ||
}; | ||
if (command !== "version" && !!extraPublishParams.pkgFile) { | ||
pipeToTemplate.pkgFile = { | ||
name: extraPublishParams.pkgFile.name, | ||
version: extraPublishParams.pkgFile.version, | ||
versionMajor: extraPublishParams.pkgFile.versionMajor, | ||
versionMinor: extraPublishParams.pkgFile.versionMinor, | ||
versionPatch: extraPublishParams.pkgFile.versionPatch, | ||
pkg: extraPublishParams.pkgFile.pkg, | ||
}; | ||
} | ||
if (command !== "version") { | ||
let subPublishCommand = command.slice(7, 999); | ||
// add these after that they can use pkgFile | ||
extraPublishParams = Object.assign(Object.assign(Object.assign({}, extraPublishParams), (!pkgCommands[pkg][`getPublishedVersion${subPublishCommand}`] | ||
? {} | ||
: { | ||
[`getPublishedVersion${subPublishCommand}`]: lodash_1.template( | ||
//@ts-ignore no index type string | ||
pkgCommands[pkg][`getPublishedVersion${subPublishCommand}`])(pipeToTemplate), | ||
})), (!pkgCommands[pkg].assets | ||
? {} | ||
: { | ||
assets: templateCommands(pkgCommands[pkg].assets, pipeToTemplate, ["path", "name"]), | ||
})); | ||
} | ||
[`getPublishedVersion${subPublishCommand}`]: lodash.template( | ||
//@ts-ignore no index type string | ||
pkgCommands[pkg][`getPublishedVersion${subPublishCommand}`])(pipeToTemplate), | ||
})), (!pkgCommands[pkg].assets | ||
? {} | ||
: { | ||
assets: templateCommands(pkgCommands[pkg].assets, pipeToTemplate, [ | ||
"path", | ||
"name", | ||
]), | ||
})); | ||
if (dryRun) { | ||
@@ -219,3 +268,3 @@ pipeOutput[pkg] = {}; | ||
} | ||
const merged = Object.assign(Object.assign(Object.assign({ pkg }, (!pkgs[pkg].parents ? {} : { parents: pkgs[pkg].parents })), extraPublishParams), { path: pkgCommands[pkg].path, type: pkgs[pkg].type || null, manager: pkgCommands[pkg].manager, dependencies: pkgCommands[pkg].dependencies, precommand: templateCommands(pkgCommands[pkg].precommand, pipeToTemplate, ["command", "dryRunCommand", "runFromRoot"]), command: templateCommands(pkgCommands[pkg].command, pipeToTemplate, [ | ||
const merged = Object.assign(Object.assign({ pkg }, extraPublishParams), { path: pkgCommands[pkg].path, manager: pkgCommands[pkg].manager, dependencies: pkgCommands[pkg].dependencies, precommand: templateCommands(pkgCommands[pkg].precommand, pipeToTemplate, ["command", "dryRunCommand", "runFromRoot"]), command: templateCommands(pkgCommands[pkg].command, pipeToTemplate, [ | ||
"command", | ||
@@ -232,3 +281,2 @@ "dryRunCommand", | ||
}; | ||
exports.mergeIntoConfig = mergeIntoConfig; | ||
const mergeCommand = ({ pkg, pkgManager, command, config, }) => { | ||
@@ -271,3 +319,3 @@ const managerCommand = !!pkgManager && | ||
typeof c[complex] === "string" | ||
? lodash_1.template(c[complex])(pipe) | ||
? lodash.template(c[complex])(pipe) | ||
: c[complex]; | ||
@@ -278,5 +326,11 @@ return templated; | ||
else { | ||
return typeof c === "function" ? c : lodash_1.template(c)(pipe); | ||
// if it is a function, we pipe when we run the function | ||
return typeof c === "function" ? c : lodash.template(c)(pipe); | ||
} | ||
}); | ||
}; | ||
exports.assemble = assemble; | ||
exports.compareBumps = compareBumps; | ||
exports.mergeChangesToConfig = mergeChangesToConfig; | ||
exports.mergeIntoConfig = mergeIntoConfig; |
{ | ||
"name": "@covector/assemble", | ||
"version": "0.5.0", | ||
"version": "0.6.0", | ||
"license": "Apache-2.0", | ||
@@ -20,4 +20,4 @@ "homepage": "https://github.com/jbolda/covector#readme", | ||
"dependencies": { | ||
"@covector/command": "0.3.0", | ||
"@covector/files": "0.3.0", | ||
"@covector/command": "0.3.1", | ||
"@covector/files": "0.3.1", | ||
"js-yaml": "^4.0.0", | ||
@@ -35,3 +35,3 @@ "lodash": "^4.17.21", | ||
"fixturez": "^1.1.0", | ||
"rollup": "^2.41.4", | ||
"rollup": "^2.42.4", | ||
"tslib": "^2.1.0", | ||
@@ -38,0 +38,0 @@ "typescript": "^4.2.3" |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
25041
320
0
+ Added@covector/command@0.3.1(transitive)
+ Added@covector/files@0.3.1(transitive)
+ Added@effection/channel@1.0.0(transitive)
+ Added@effection/events@1.0.0(transitive)
+ Added@effection/node@1.0.2(transitive)
+ Added@effection/subscription@1.0.0(transitive)
+ Addedctrlc-windows@2.1.0(transitive)
+ Addedshellwords@0.1.1(transitive)
- Removed@covector/command@0.3.0(transitive)
- Removed@covector/files@0.3.0(transitive)
Updated@covector/command@0.3.1
Updated@covector/files@0.3.1