From 7c18bbb5f5cd1bb90fb98d649e0a9c412bccaaa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 11 Mar 2022 13:31:33 +0100 Subject: [PATCH] Add flags to support automation in edge cases (#707) * feat: :sparkles: add --allow-star-activation Closes: #700 * feat: :sparkles: add --allow-missing-repository Closes: #706 --- src/main.ts | 12 ++++++++++++ src/package.ts | 6 ++++-- src/publish.ts | 2 ++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main.ts b/src/main.ts index 704ed37d..bda152c7 100644 --- a/src/main.ts +++ b/src/main.ts @@ -103,6 +103,8 @@ module.exports = function (argv: string[]): void { .option('--no-gitLabIssueLinking', 'Disable automatic expansion of GitLab-style issue syntax into links') .option('--no-dependencies', 'Disable dependency detection via npm or yarn') .option('--pre-release', 'Mark this package as a pre-release') + .option('--allow-star-activation', 'Allow using * in activation events') + .option('--allow-missing-repository', 'Allow missing a repository URL in package.json') .action( ( version, @@ -123,6 +125,8 @@ module.exports = function (argv: string[]): void { gitLabIssueLinking, dependencies, preRelease, + allowStarActivation, + allowMissingRepository, } ) => main( @@ -144,6 +148,8 @@ module.exports = function (argv: string[]): void { gitLabIssueLinking, dependencies, preRelease, + allowStarActivation, + allowMissingRepository, }) ) ); @@ -180,6 +186,8 @@ module.exports = function (argv: string[]): void { .option('--ignoreFile ', 'Indicate alternative .vscodeignore') .option('--no-dependencies', 'Disable dependency detection via npm or yarn') .option('--pre-release', 'Mark this package as a pre-release') + .option('--allow-star-activation', 'Allow using * in activation events') + .option('--allow-missing-repository', 'Allow missing a repository URL in package.json') .action( ( version, @@ -199,6 +207,8 @@ module.exports = function (argv: string[]): void { ignoreFile, dependencies, preRelease, + allowStarActivation, + allowMissingRepository, } ) => main( @@ -219,6 +229,8 @@ module.exports = function (argv: string[]): void { ignoreFile, dependencies, preRelease, + allowStarActivation, + allowMissingRepository, }) ) ); diff --git a/src/package.ts b/src/package.ts index e9c6cbf1..29bb1369 100644 --- a/src/package.ts +++ b/src/package.ts @@ -86,6 +86,8 @@ export interface IPackageOptions { readonly gitLabIssueLinking?: boolean; readonly dependencies?: boolean; readonly preRelease?: boolean; + readonly allowStarActivation?: boolean; + readonly allowMissingRepository?: boolean; } export interface IProcessor { @@ -490,7 +492,7 @@ export class ManifestProcessor extends BaseProcessor { ); } - if (!this.manifest.repository) { + if (!this.options.allowMissingRepository && !this.manifest.repository) { util.log.warn(`A 'repository' field is missing from the 'package.json' manifest file.`); if (!/^y$/i.test(await util.read('Do you want to continue? [y/N] '))) { @@ -498,7 +500,7 @@ export class ManifestProcessor extends BaseProcessor { } } - if (this.manifest.activationEvents?.some(e => e === '*')) { + if (!this.options.allowStarActivation && this.manifest.activationEvents?.some(e => e === '*')) { util.log.warn( `Using '*' activation is usually a bad idea as it impacts performance.\nMore info: https://code.visualstudio.com/api/references/activation-events#Start-up` ); diff --git a/src/publish.ts b/src/publish.ts index e9901ac3..adb0f070 100644 --- a/src/publish.ts +++ b/src/publish.ts @@ -31,6 +31,8 @@ export interface IPublishOptions { readonly noVerify?: boolean; readonly dependencies?: boolean; readonly preRelease?: boolean; + readonly allowStarActivation?: boolean; + readonly allowMissingRepository?: boolean; } export async function publish(options: IPublishOptions = {}): Promise {