Skip to content

Commit

Permalink
feat: allow to skip publishing duplicate package (#776)
Browse files Browse the repository at this point in the history
* feat: allow to skip publishing duplicate package

* Update src/main.ts

* Update src/publish.ts

* Update src/publish.ts

* Update src/publish.ts

Co-authored-by: João Moreno <[email protected]>
  • Loading branch information
rokklobster and joaomoreno authored Oct 19, 2022
1 parent 8e193c9 commit 2589114
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
3 changes: 3 additions & 0 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ module.exports = function (argv: string[]): void {
.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')
.option('--skip-duplicate', 'Fail silently if version already exists on the marketplace')
.action(
(
version,
Expand All @@ -218,6 +219,7 @@ module.exports = function (argv: string[]): void {
preRelease,
allowStarActivation,
allowMissingRepository,
skipDuplicate,
}
) =>
main(
Expand All @@ -240,6 +242,7 @@ module.exports = function (argv: string[]): void {
preRelease,
allowStarActivation,
allowMissingRepository,
skipDuplicate,
})
)
);
Expand Down
13 changes: 12 additions & 1 deletion src/publish.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ export interface IPublishOptions {
readonly preRelease?: boolean;
readonly allowStarActivation?: boolean;
readonly allowMissingRepository?: boolean;
readonly skipDuplicate?: boolean;
}

export async function publish(options: IPublishOptions = {}): Promise<any> {
Expand Down Expand Up @@ -123,6 +124,7 @@ export interface IInternalPublishOptions {
readonly target?: string;
readonly pat?: string;
readonly noVerify?: boolean;
readonly skipDuplicate?: boolean;
}

async function _publish(packagePath: string, manifest: Manifest, options: IInternalPublishOptions) {
Expand Down Expand Up @@ -170,6 +172,10 @@ async function _publish(packagePath: string, manifest: Manifest, options: IInter
const sameVersion = extension.versions.filter(v => v.version === manifest.version);

if (sameVersion.length > 0) {
if (options.skipDuplicate) {
log.done(`Version ${manifest.version} is already published. Skipping publish.`);
return;
}
if (!options.target) {
throw new Error(`${description} already exists.`);
}
Expand All @@ -187,7 +193,12 @@ async function _publish(packagePath: string, manifest: Manifest, options: IInter
await api.updateExtension(undefined, packageStream, manifest.publisher, manifest.name);
} catch (err: any) {
if (err.statusCode === 409) {
throw new Error(`${description} already exists.`);
if (options.skipDuplicate) {
log.done(`Version ${manifest.version} is already published. Skipping publish.`);
return;
} else {
throw new Error(`${description} already exists.`);
}
} else {
throw err;
}
Expand Down

0 comments on commit 2589114

Please sign in to comment.