File size: 1,688 Bytes
6a2bc3b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import { join, resolve } from 'node:path';
import {
defaultVsixOutputDir,
normalizeVsixTargets,
vsixFileName,
} from './vsix-targets.mjs';
export function parsePublishArguments(argv) {
const targets = [];
let outputDir = defaultVsixOutputDir;
let help = false;
for (let index = 0; index < argv.length; index += 1) {
const argument = argv[index];
if (argument === '--') {
continue;
} else if (argument === '--help' || argument === '-h') {
help = true;
} else if (argument === '--out-dir') {
outputDir = requireOptionValue(argv, ++index, '--out-dir');
} else if (argument === '--target') {
targets.push(requireOptionValue(argv, ++index, '--target'));
} else if (argument.startsWith('-')) {
throw new Error(`Unknown option: ${argument}`);
} else {
targets.push(argument);
}
}
const normalizedTargets = normalizeVsixTargets(targets);
const resolvedOutputDir = resolve(outputDir);
return {
help,
targets: normalizedTargets,
outputDir: resolvedOutputDir,
files: normalizedTargets.map((target) => join(resolvedOutputDir, vsixFileName(target))),
};
}
function requireOptionValue(argv, index, option) {
const value = argv[index];
if (value !== undefined && !value.startsWith('-')) return value;
throw new Error(`${option} requires a value.`);
}
export function publishUsage(marketplace) {
return [
`Usage: node scripts/${marketplace === 'Open VSX' ? 'ovsx' : 'vsix'}-publish.mjs [targets...] [--out-dir <directory>]`,
'',
`Publishes already-built, re-verified VSIX files to ${marketplace}.`,
'This command never builds or downloads a CLI.',
].join('\n');
}
|