#!/usr/bin/env -S node --import tsx import { pathToFileURL } from "node:url"; import { collectChangedExtensionIdsFromGitRange, collectPublishablePluginPackages, parsePluginReleaseArgs, resolveChangedPublishablePluginPackages, resolveSelectedPublishablePluginPackages, } from "./lib/plugin-npm-release.ts"; export function runPluginNpmReleaseCheck(argv: string[]) { const { selection, selectionMode, baseRef, headRef } = parsePluginReleaseArgs(argv); const publishable = collectPublishablePluginPackages(); const selected = selectionMode === "all-publishable" ? publishable : selection.length > 0 ? resolveSelectedPublishablePluginPackages({ plugins: publishable, selection, }) : baseRef && headRef ? resolveChangedPublishablePluginPackages({ plugins: publishable, changedExtensionIds: collectChangedExtensionIdsFromGitRange({ gitRange: { baseRef, headRef }, }), }) : publishable; console.log("plugin-npm-release-check: publishable plugin metadata looks OK."); if (baseRef && headRef && selected.length === 0) { console.log( ` - no publishable plugin package changes detected between ${baseRef} and ${headRef}`, ); } for (const plugin of selected) { console.log( ` - ${plugin.packageName}@${plugin.version} (${plugin.channel}, ${plugin.extensionId})`, ); } } if (import.meta.url === pathToFileURL(process.argv[1] ?? "").href) { runPluginNpmReleaseCheck(process.argv.slice(2)); }