UNPKG

@o3r/workspace

Version:

Workspace tooling of the Otter Framework

72 lines 2.99 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs = require("node:fs"); const path = require("node:path"); const commander_1 = require("commander"); const globby_1 = require("globby"); const semver_1 = require("semver"); const winston = require("winston"); const defaultIncludedFiles = ['**/package.json', '!/**/templates/**/package.json', '!**/node_modules/**/package.json', '**/lerna.json']; const collect = (pattern, patterns) => { if (patterns === defaultIncludedFiles && pattern) { patterns = []; } patterns.push(pattern); return patterns; }; const logger = winston.createLogger({ format: winston.format.combine(winston.format.colorize(), winston.format.simple()), transports: new winston.transports.Console() }); let replaceVersion; commander_1.program .arguments('<version>') .description('Replace the packages version in a monorepos') .option('-p, --placeholder <placeholder>', 'Pattern of the version placeholder', '0.0.0(-placeholder)?') .option('--include <file>', 'Add files pattern to apply the version replacement', collect, defaultIncludedFiles) .option('-v, --verbose', 'Display debug logs') .action((version) => { const cleanVersion = (0, semver_1.clean)(version); if (!cleanVersion) { // eslint-disable-next-line no-console -- no other logger available console.error(`The version "${version}" is invalid`); return process.exit(1); } replaceVersion = cleanVersion; }) .parse(process.argv); const options = commander_1.program.opts(); logger.level = options.verbose ? 'debug' : 'info'; const cliFn = () => { (0, globby_1.sync)(options.include, { cwd: process.cwd() }) .map((file) => path.join(process.cwd(), file)) .map((filePath) => ({ path: filePath, content: fs.readFileSync(filePath).toString() })) .forEach((pathWithContent) => { const newContent = pathWithContent.content .replace(new RegExp('"([~^]?)' + options.placeholder.replace(/[$()+.?[\\\]^{|}]/g, '\\$&').replace(/\\*\./g, '\\.') + '"', 'g'), `"$1${replaceVersion}"`) .replace(/"workspace:([^~]?)[^"]*"(,?)$/gm, `"$1${replaceVersion}"$2`); if (newContent === pathWithContent.content) { logger.debug(`No change in ${pathWithContent.path}`); } else { logger.info(`update version in ${pathWithContent.path}`); fs.writeFileSync(pathWithContent.path, newContent); } }); }; void (async () => { let wrapper = (fn) => fn; try { const { createCliWithMetrics } = await Promise.resolve().then(() => require('@o3r/telemetry')); wrapper = createCliWithMetrics; } catch { // Do not throw if `@o3r/telemetry` is not installed } return wrapper(cliFn, '@o3r/workspace:set-version', { logger, preParsedOptions: options })(); })(); //# sourceMappingURL=set-version.cjs.map