UNPKG

@adinsure-ops/ops-cli

Version:

Operations CLI for working with AdInsure

84 lines (83 loc) 3.29 kB
import { __awaiter } from "tslib"; import { Args, Flags } from '@oclif/core'; import chalk from 'chalk'; import fs from 'fs-extra'; import semver from 'semver'; import CommandBase from '../../command.base.js'; import NugetContext from '../../lib/nuget.js'; class NuGetDependencyUpdate extends CommandBase { /** * Update dependencies in csproj files for @adinsure packages * @param */ /** * Update dependencies in csproj files for @adinsure packages * @param {string} newVersion New version to update to * @param {NpmPackage[]} packages Packages to update * @param {string[]} filter Regular expressions filter for packages * @returns {Prmoise<void>} Void Promise */ updateDependencies(newVersion_1, packages_1) { return __awaiter(this, arguments, void 0, function* (newVersion, packages, filter = '') { // Find all package.json files that are not in node modules for (const path of packages) { try { const data = yield fs.readFile(path, 'utf8'); const re = new RegExp('(<PackageReference Include=".*' + filter + `.*" Version=)".*"( />)`, 'g'); const result = data.replace(re, '$1"' + newVersion + '"$2'); yield fs.writeFile(path, result, 'utf8'); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error) { this.warn(error.message); break; } } }); } run() { const _super = Object.create(null, { run: { get: () => super.run } }); return __awaiter(this, void 0, void 0, function* () { _super.run.call(this); const { args, flags } = yield this.parse(NuGetDependencyUpdate); const newVersion = semver.valid(args.version); const nugetContext = new NugetContext(); // Stop if version invalid if (!newVersion) { return this.error(`${chalk.red('Version in incorrect format')}`); } const packages = yield nugetContext.projectList(flags.exclude); try { yield this.updateDependencies(newVersion, packages, flags.filter); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error) { this.error(error.message); } }); } } NuGetDependencyUpdate.description = 'update nuget dependencies per package filter'; NuGetDependencyUpdate.usage = 'nuget:dependency-update <type> [flags]'; NuGetDependencyUpdate.examples = [ `$ ops nuget:dependency-update 3.4.3 --filter Adacta.AdInsure --exclude Scheduler`, ]; NuGetDependencyUpdate.args = { version: Args.string({ required: true, description: 'Type of release', }), }; NuGetDependencyUpdate.flags = { filter: Flags.string({ description: 'regular expression for which NuGet packages to update', required: true, }), exclude: Flags.string({ description: 'exclude directories where to search for csproj files', multiple: true, }), }; export default NuGetDependencyUpdate;