@pigeon-posse/pkg-extended-scripts
Version:
Separate scripts from package.json
54 lines (48 loc) • 1.59 kB
JavaScript
import { Clippium, hideBin } from 'clippium';
import { argv } from 'node:process';
import { d as data, c as config, g as getConfig, p as pkgName, v as version } from './shared/pkg-extended-scripts.BtsJLO9X.mjs';
import color from '@clippium/color';
import { Updater } from '@clippium/updater';
import '@clippium/preset-colored';
const cli = new Clippium(data, config);
cli.fn = async (data2) => {
const d = cli.validate(data2);
if (d.flags.help) {
console.log(data2.utils.getHelp());
return;
} else if (d.flags.version) {
console.log(data2.utils.getVersion());
return;
}
const config2 = await getConfig(d.flags.input);
const key = d.positionals.key || d.commands ? Object.keys(d.commands)[0] : void 0;
if (!config2) throw new Error("pes.config.{js,cjs,mjs,cjs,ts,mts} file not found");
if (!key) throw new Error("Script key not found");
if (key in config2) await config2[key]();
else throw new Error(`Script "${data2.positionals.key}" not found`);
};
const updater = async ({
name,
version
}) => {
const _updater = new Updater({
version,
name
});
const data = await _updater.get();
if (!data) return;
console.log(`
\u2551 \u{1F4E6} ${color.bold("Update available")} ${color.dim(data.currentVersion)} \u2192 ${color.green(data.latestVersion)} ${color.italic(`(${data.type})`)}
\u2551 Run ${color.cyan(data.packageManager + " i " + name)} to update
`);
};
const args = hideBin(argv);
const run = async () => {
await cli.run(args);
await updater({
name: pkgName,
version
});
};
run();