UNPKG

@zburn/core

Version:

Core utilities for the ZBURN ecosystem.

98 lines (89 loc) 3.67 kB
#!/usr/bin/env node const { deployIPFS } = require('./lib/ipfs/'); const { deployCloudflare } = require('./lib/cloudflare/'); const exportedFunctions = { ipfs: { deploy: deployIPFS }, cloudflare: { deploy: deployCloudflare }, deployFull: async (folderPath) => { const cid = await deployIPFS(folderPath); await deployCloudflare(cid, config); return cid; } }; async function runCli() { const args = process.argv.slice(2); const command = args[0]; const firstArgAfterCommand = args[1]; const secondArgAfterCommand = args[2]; try { switch (command) { case 'deploy': if (firstArgAfterCommand !== 'ipfs' && firstArgAfterCommand !== 'cloudflare') { const folderPath = firstArgAfterCommand; if (!folderPath) { console.error("Error: 'deploy' command requires a folder path for full deployment (e.g., 'npx zburn deploy ./dist')."); process.exit(1); } console.log(`Initiating full ZBURN deployment for folder: ${folderPath}`); const cid = await deployIPFS(folderPath); console.log(`IPFS Deployment finished. Root CID: ${cid}`); console.log("Initiating Cloudflare deployment..."); await deployCloudflare(cid); console.log("Cloudflare Deployment finished."); console.log("Deployment finished."); } else if (firstArgAfterCommand === 'ipfs') { if (!secondArgAfterCommand) { console.error("Error: 'deploy ipfs' command requires a folder path (e.g., 'npx zburn deploy ipfs ./dist')."); process.exit(1); } console.log(`Initiating IPFS deployment for folder: ${secondArgAfterCommand}`); const cid = await deployIPFS(secondArgAfterCommand); console.log(`IPFS Deployment finished. Root CID: ${cid}`); } else if (firstArgAfterCommand === 'cloudflare') { if (!secondArgAfterCommand) { console.error("Error: 'deploy cloudflare' command requires a CID (e.g., 'npx zburn deploy cloudflare QmYourCID...')."); process.exit(1); } console.log(`Initiating Cloudflare deployment for CID: ${secondArgAfterCommand}`); await deployCloudflare(secondArgAfterCommand); console.log("Cloudflare Deployment finished."); } else { console.error(`Error: Unknown deploy subcommand '${firstArgAfterCommand}'. Available: 'ipfs', 'cloudflare'.`); process.exit(1); } break; case 'help': case undefined: console.log(` Usage: npx zburn [command] [subcommand] [arg] Commands: deploy <folder> Performs a full deployment (IPFS + Cloudflare). deploy ipfs <folder> Deploys a local folder to IPFS. deploy cloudflare <CID> Updates Cloudflare DNSLink and KV with a given CID. Examples: npx zburn deploy ./dist # Full deployment of './dist' folder npx zburn deploy ipfs ./build # Only deploys './build' to IPFS npx zburn deploy cloudflare QmYourNewCID... # Only updates Cloudflare with a specific CID For more information, visit the ZBURN documentation. `); break; default: console.error(`Error: Unknown command '${command}'. Use 'npx zburn help' for options.`); process.exit(1); } } catch (error) { console.error(`\nFatal ZBURN error: ${error.message}`); process.exit(1); } } if (require.main === module) { runCli(); } module.exports = exportedFunctions;