UNPKG

filecoin-pin

Version:

Bridge IPFS content to Filecoin Onchain Cloud using familiar tools

67 lines 2.59 kB
#!/usr/bin/env node import { Command } from 'commander'; import pc from 'picocolors'; import { addCommand } from './commands/add.js'; import { dataSetCommand } from './commands/data-set.js'; import { importCommand } from './commands/import.js'; import { paymentsCommand } from './commands/payments.js'; import { rmCommand } from './commands/rm.js'; import { serverCommand } from './commands/server.js'; import { checkForUpdate } from './common/version-check.js'; import { version as packageVersion } from './core/utils/version.js'; // Create the main program const program = new Command() .name('filecoin-pin') .description('IPFS Pinning Service with Filecoin storage via Synapse SDK') .version(packageVersion) .option('-v, --verbose', 'verbose output') .option('--no-update-check', 'skip check for updates'); // Add subcommands program.addCommand(serverCommand); program.addCommand(paymentsCommand); program.addCommand(dataSetCommand); program.addCommand(importCommand); program.addCommand(addCommand); program.addCommand(rmCommand); // Default action - show help if no command specified program.action(() => { program.help(); }); let updateCheckResult = null; program.hook('preAction', () => { if (updateCheckResult) { return; } const options = program.optsWithGlobals(); if (options.updateCheck === false) { updateCheckResult = null; return; } setImmediate(() => { checkForUpdate({ currentVersion: packageVersion }) .then((result) => { updateCheckResult = result; }) .catch(() => { // could not check for update, swallow error // checkForUpdate should not throw. If it does, it's an unexpected error. }); }).unref(); }); program.hook('postAction', async () => { if (updateCheckResult?.status === 'update-available') { const result = updateCheckResult; updateCheckResult = null; const header = `${pc.yellow(`Update available: filecoin-pin ${result.currentVersion}${result.latestVersion}`)}. Upgrade with ${pc.cyan('npm i -g filecoin-pin@latest')}`; const releasesLink = 'https://github.com/filecoin-project/filecoin-pin/releases'; const instruction = `Visit ${releasesLink} to view release notes or download the latest version.`; console.log(header); console.log(instruction); } }); // Parse arguments and run program.parseAsync(process.argv).catch((error) => { console.error('Error:', error.message); process.exit(1); }); //# sourceMappingURL=cli.js.map