@gabortorma/mwm
Version:
Multi-repo Workspace Manager
76 lines (71 loc) • 2.41 kB
JavaScript
;
const citty = require('citty');
const consola = require('consola');
const workspaceTools = require('workspace-tools');
const args = require('../shared/mwm.Bc81aV-e.cjs');
const commands_release_release = require('../commands/release/release.cjs');
require('node:process');
require('../shared/mwm.DTKjIVEs.cjs');
require('node:child_process');
require('node:path');
require('compare-versions');
function getValidWorkspaces() {
const workspaces = workspaceTools.getWorkspaces(".");
if (workspaces.length === 0)
consola.consola.error("There are no workspaces in this repository");
return workspaces.map((w) => w.name);
}
function getCheckedWorkspaces(workspaces, validWorkspaces) {
const workspaceSet = /* @__PURE__ */ new Set();
for (const workspace of workspaces) {
if (validWorkspaces.includes(workspace))
workspaceSet.add(workspace);
else
consola.consola.warn(`${workspace} workspace not found. Skipping...`);
}
return workspaceSet;
}
async function getSelectedWorkspaces(filter) {
const validWorkspaces = getValidWorkspaces();
if (typeof filter === "string")
return getCheckedWorkspaces([filter], validWorkspaces);
if (Array.isArray(filter))
return getCheckedWorkspaces(filter, validWorkspaces);
const workspaces = await consola.consola.prompt("Select workspaces", {
type: "multiselect",
options: validWorkspaces
});
args.checkCancel(workspaces);
return new Set(workspaces);
}
async function selectWorkspaces(filter) {
const selectedWorkspaces = await getSelectedWorkspaces(filter);
if (selectedWorkspaces.size === 0) {
consola.consola.error("No workspace selected");
} else {
consola.consola.info("Selected workspaces:", ...selectedWorkspaces);
}
return selectedWorkspaces;
}
const main = citty.defineCommand({
meta: {
name: "release",
description: "Release selected workspaces"
},
args: {
filter: {
type: "string",
description: "Select workspace"
},
releaseDependencies: {
alias: ["release-dependencies", "rd"],
type: "boolean",
description: "Release all dependencies of selected workspaces"
}
},
async run({ args: { filter, releaseDependencies } }) {
const selectedWorkspaces = await selectWorkspaces(filter);
await commands_release_release.releaseWorkspaces(selectedWorkspaces, releaseDependencies);
}
});
exports.main = main;