@zburn/core
Version:
Core utilities for the ZBURN ecosystem.
98 lines (89 loc) • 3.67 kB
JavaScript
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;