UNPKG

semantic-release-vsce

Version:

semantic-release plugin to package and publish VS Code extensions

40 lines (33 loc) 1.33 kB
// @ts-check import SemanticReleaseError from '@semantic-release/error'; import { execa } from 'execa'; import process from 'node:process'; import { isAzureCredentialEnabled } from './utilities.js'; export async function verifyVsceAuth(logger, cwd) { const pat = 'VSCE_PAT' in process.env && process.env.VSCE_PAT; const azureCredential = isAzureCredentialEnabled(); if (!pat && !azureCredential) { throw new SemanticReleaseError( 'Neither vsce personal access token (`VSCE_PAT` environment variable) or azure credential flag (`VSCE_AZURE_CREDENTIAL` environment variable) specified.', 'EVSCEAUTHNOTPROVIDED', ); } if (pat && azureCredential) { throw new SemanticReleaseError( 'Both vsce personal access token (`VSCE_PAT` environment variable) and azure credential flag (`VSCE_AZURE_CREDENTIAL` environment variable) specified. Please use only one.', 'EVSCEDUPLICATEAUTHPROVIDED', ); } const vsceArguments = ['verify-pat']; if (azureCredential) { vsceArguments.push('--azure-credential'); } try { await execa('vsce', vsceArguments, { preferLocal: true, cwd }); } catch (error) { throw new SemanticReleaseError( `Invalid vsce personal access token or azure credential. Additional information:\n\n${error}`, 'EINVALIDVSCEPAT', ); } }