#!/usr/bin/env node import { build } from '../platform/build.mjs'; import { release } from '../platform/release.mjs'; import { fileURLToPath } from 'node:url'; import { parseArgs, manageMod, usage } from '../platform/commands.mjs'; import { deploy, rollback } from '../platform/ssh-deploy.mjs'; import { backup, restoreSnapshot } from '../platform/backups.mjs'; const args = process.argv.slice(2); if (args.length === 0 || args.includes('--help')) { console.log(usage); process.exit(args.length === 0 ? 1 : 0); } try { const options = parseArgs(args); const root = fileURLToPath(new URL('../', import.meta.url)); if (options.command === 'build') console.log(`Release: ${build({ root, configFile: options.configFile, releaseOnly: options.releaseOnly })}`); else if(options.command==='release')console.log(JSON.stringify(release({root,version:options.version,configFile:options.configFile}),null,2)); else if (options.command === 'deploy') await deploy({ root, configFile: options.configFile, artifact: options.artifact, sshConfig: options.sshConfig, remoteNode: options.remoteNode }); else if (options.command === 'rollback' || options.command === 'rollback-pack') await rollback({ root, ...options }); else if (options.command === 'backup') console.log(`Backup: ${backup({ repository: root, targetRelease: options.targetRelease, waitTimeout: options.waitTimeout })}`); else if (options.command === 'restore') console.log(`Restored: ${restoreSnapshot({ backupDirectory: options.backupDirectory, destination: options.destination })}`); else process.exitCode = manageMod({ root, ...options }); } catch (error) { console.error(`mcpack: ${error.message}`); process.exitCode = 1; }