Skip to content

Commit 9bef7c9

Browse files
committed
fix: various minor toolset issues
Make (peer)dependencies track current version Add yalc.lock to gitignore and template Add utf8 as readFile/tryReadFile default encoding Have valm refresh active pools before each execute Only parse valma execute output json if no error Allow release-vault from master with explicit --(pre)release Allow versioning assemble-packages even with empty package selection
1 parent 04c6cc2 commit 9bef7c9

File tree

9 files changed

+46
-22
lines changed

9 files changed

+46
-22
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ coverage
99
dist
1010
node_modules
1111
temp
12+
yalc.lock

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
"publish-packages": "vlm publish-packages "
2828
},
2929
"devDependencies": {
30-
"@valos/toolset-revealer": ">0.34.0-prerelease",
31-
"@valos/toolset-vault": ">0.34.0-prerelease",
32-
"valma": "^0.34.0-prerelease.1"
30+
"@valos/toolset-revealer": "^0.35.0-prerelease.0",
31+
"@valos/toolset-vault": "^0.34.0-prerelease.0",
32+
"valma": "^0.35.0-prerelease.0"
3333
},
3434
"dependencies": {}
3535
}

packages/toolset-rest-api-gateway-plugin/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@
2222
"fastify-swagger": "^2.3.2"
2323
},
2424
"peerDependencies": {
25-
"@valos/inspire": "^0.34.0-prerelease.3"
25+
"@valos/inspire": "^0.35.0-prerelease.0"
2626
}
2727
}

packages/toolset-vault/template.dots/gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ coverage
99
dist
1010
node_modules
1111
temp
12+
yalc.lock

packages/toolset-vault/valma/assemble-packages.js

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,8 @@ exports.handler = async (yargv) => {
183183
entry => entry && !orderedSelections.includes(entry) && vlm.minimatch(entry.name, glob))));
184184
selections = orderedSelections;
185185
}
186-
if (!selections.length) {
187-
vlm.warn("Assembly selection empty, exiting");
186+
if (!selections.length && !yargv.versioning) {
187+
vlm.warn("Assembly selection empty and no versioning requested, exiting");
188188
return {
189189
selectedAssemblies: selections.length, successfulAssemblies: 0, failedAssemblies: 0,
190190
success: true,
@@ -237,22 +237,29 @@ exports.handler = async (yargv) => {
237237
vlm.info(`${assemblyErrors || "No"} errors found during assembly`);
238238
}
239239

240+
let oldVersion, newVersion;
240241
if (!yargv.versioning) {
241242
vlm.info(`${vlm.theme.argument("--no-versioning")} requested:`,
242243
`no version update, no git commit, no git tag, no ${vlm.theme.path("package.json")
243244
} finalizer copying`);
244245
} else {
245-
if (assemblyErrors) throw new Error("Versioning requested and errors found during assembly");
246-
vlm.info("Updating version, making git commit, creating a lerna git tag and",
247-
`updating target ${vlm.theme.path("package.json")}'s`);
246+
if (assemblyErrors) throw new Error("Errors found during assembly when trying to bump version");
247+
vlm.info("Updating version, making git commit, creating a lerna git tag and/or",
248+
`updating assembly target ${vlm.theme.path("package.json")}'s`);
249+
let lernaConfig = await vlm.tryReadFile("lerna.json");
250+
oldVersion = lernaConfig && JSON.parse(lernaConfig).version;
248251
await vlm.delegate([
249252
"lerna version", {
250253
"conventional-commits": true, amend: (yargv.versioning === "amend"), push: false, yes: true,
251-
"force-publish": selections.map(({ name }) => name).join(","),
254+
...(!selections.length ? {} : {
255+
"force-publish": selections.map(({ name }) => name).join(","),
256+
}),
252257
},
253258
]);
259+
lernaConfig = await vlm.tryReadFile("lerna.json");
260+
newVersion = lernaConfig && JSON.parse(lernaConfig).version;
254261
if (!yargv.assemble && !yargv.overwrite) {
255-
vlm.info(`Skipping ${vlm.theme.path("package.json")} version updates`, "as",
262+
vlm.info(`Skipping assembly target ${vlm.theme.path("package.json")} version updates`, "as",
256263
vlm.theme.argument(!yargv.assemble ? "--no-assemble" : "--no-overwrite"),
257264
"was specified");
258265
} else {
@@ -309,6 +316,8 @@ exports.handler = async (yargv) => {
309316
}],
310317
success: false,
311318
};
319+
if (oldVersion) ret.oldVersion = oldVersion;
320+
if (newVersion) ret.version = newVersion;
312321
ret.assemblyBreakdown.push(...selections.map(
313322
({ name, packageConfig, packageJSONPath, failure }) => {
314323
const newConfig = JSON.parse(vlm.shell.head({ "-n": 1000000 }, packageJSONPath));
@@ -330,7 +339,7 @@ exports.handler = async (yargv) => {
330339
ret.success = true;
331340
// TODO(iridian): This is less than ideal way to determine the released version. We should be
332341
// able to get it from lerna directly somehow.
333-
ret.version = ret.assemblyBreakdown[2].version;
342+
if (!ret.version) ret.version = ret.assemblyBreakdown[2].version;
334343
vlm.info(vlm.theme.green(`Successfully assembled all packages`), "out of",
335344
ret.selectedAssemblies, "selected packages");
336345
} else if (!ret.successfulAssemblies) {

packages/toolset-vault/valma/release-vault.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,17 @@ exports.handler = async (yargv) => {
111111
async function _prepare (preparation) {
112112
const branches = ((await vlm.delegate("git branch --list --no-color release/* prerelease/*"))
113113
|| "").split("\n")
114-
.map(name => name.match(/^((\* )| {2})((pre)?release\/([0-9]*)(\.[0-9]+)?(\.[0-9]+)?)$/))
115-
.filter(match => match);
114+
.map(name => name.match(
115+
/^((\* )| {2})(master|((pre)?release\/([0-9]*)(\.[0-9]+)?(\.[0-9]+)?))$/
116+
)).filter(match => match);
116117
const currentBranchMatch = branches.find(match => match[2]); // 2 <=> search for "* "
117-
if (!currentBranchMatch) throw new Error("Current branch is not a (pre)release branch");
118-
const [,,, branchName, currentIsPrerelease, major, dotMinor, dotPatch] = currentBranchMatch;
118+
if (!currentBranchMatch) throw new Error("Current branch is not master or (pre)release branch");
119+
const [,,, branchName, currentIsNotMaster, currentIsPrerelease, major, dotMinor, dotPatch]
120+
= currentBranchMatch;
121+
if (!currentIsNotMaster && (!yargv.release && !yargv.prerelease)) {
122+
throw new Error(
123+
"No explicit --release or --prerelease given when trying to release from 'master'");
124+
}
119125
preparation.lernaConfig = require(vlm.path.join(process.cwd(), "lerna.json"));
120126
const [, minor, patch] = preparation.lernaConfig.version.match(/^[0-9]*\.([0-9]+)\.([0-9]+)/);
121127
preparation.isRelease = !!yargv.release || !(yargv.prerelease || currentIsPrerelease);

packages/toolset-worker/valma/perspire.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ exports.handler = async (yargv) => {
132132
}
133133

134134
const execBody = yargv.exec
135-
&& (yargv.exec.body || (yargv.exec.path && await vlm.readFile(yargv.exec.path, "utf8")));
135+
&& (yargv.exec.body || (yargv.exec.path && await vlm.readFile(yargv.exec.path)));
136136
if (yargv.exec && (typeof execBody !== "string")) {
137137
console.error("Invalid execBody:", execBody);
138138
throw new Error(`Invalid exec body, expected a string, got: '${typeof execBody}' for path "${

packages/valma/valma/init.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ file for yarn (and also for npm, which yarn is based on).
5555
`);
5656
continue;
5757
}
58-
let vaultConfig = await vlm.tryReadFile(vlm.path.join("..", "..", "package.json"), "utf8");
58+
let vaultConfig = await vlm.tryReadFile(vlm.path.join("..", "..", "package.json"));
5959
if (vaultConfig !== undefined) {
6060
// rather brittle name default. Only works for workspaces
6161
// precisely two nestings under a vault package.json (which is

packages/valma/valma/valma.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,15 @@ const _vlm = {
220220
return Object.assign(Object.create(this), ...customizations);
221221
},
222222

223-
readFile: util.promisify(fs.readFile),
224-
async tryReadFile (...rest) {
225-
try { return await this.readFile(...rest); } catch (error) {
223+
_readFile: util.promisify(fs.readFile),
224+
readFile: function readFile (filename, encoding = "utf8", ...rest) {
225+
return this._readFile(filename, encoding, ...rest);
226+
},
227+
228+
async tryReadFile (filename, encoding = "utf8", ...rest) {
229+
try {
230+
return await this._readFile(filename, encoding, ...rest);
231+
} catch (error) {
226232
return undefined;
227233
}
228234
},
@@ -1068,6 +1074,7 @@ async function handler (vargv) {
10681074
*/
10691075
async function execute (args, options = {}) {
10701076
this._flushPendingConfigWrites();
1077+
this._refreshActivePools();
10711078
const argv = __processArgs(args);
10721079
if ((argv[0] === "vlm") && !Object.keys(options).length) {
10731080
argv.shift();
@@ -1087,7 +1094,6 @@ async function execute (args, options = {}) {
10871094
let result;
10881095
let processedOutput = output;
10891096
try {
1090-
if (options.stdout === "json") processedOutput = JSON.parse(output);
10911097
if (error) {
10921098
result = error;
10931099
} else if (code || signal) {
@@ -1102,6 +1108,7 @@ async function execute (args, options = {}) {
11021108
result.signal = signal;
11031109
}
11041110
} else {
1111+
if (options.stdout === "json") processedOutput = JSON.parse(output);
11051112
this._refreshActivePools();
11061113
this._reloadPackageAndToolsetsConfigs();
11071114
result = (options.onSuccess === undefined) ? processedOutput

0 commit comments

Comments
 (0)