UNPKG

@gabortorma/mwm

Version:

Multi-repo Workspace Manager

76 lines (71 loc) 2.41 kB
'use strict'; 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;