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 ]`, '', `Publishes already-built, re-verified VSIX files to ${marketplace}.`, 'This command never builds or downloads a CLI.', ].join('\n'); }