13 lines
1.0 KiB
TypeScript
Executable File
13 lines
1.0 KiB
TypeScript
Executable File
import { createBackup, verifyBackup, restoreBackup } from '../server/recovery.ts';
|
|
|
|
const [action,...args]=process.argv.slice(2);
|
|
if(!['create','verify','restore'].includes(action))throw new Error('Action must be create, verify or restore');
|
|
const allowed=new Set(['--source','--destination','--consent']);
|
|
for(let i=0;i<args.length;i++){if(!allowed.has(args[i]))throw new Error('Unknown option');if(args[i]!=='--consent')i++;}
|
|
const arg=(key:string)=>{const i=args.indexOf(key);return i<0?undefined:args[i+1];};
|
|
const source=arg('--source'),destination=arg('--destination');
|
|
if(!source||source.startsWith('--'))throw new Error('Explicit --source required');
|
|
if(action!=='verify'&&(!args.includes('--consent')||!destination||destination.startsWith('--')))throw new Error('Explicit --consent and new --destination required; stop the node first');
|
|
const result=action==='create'?await createBackup(source,destination!):action==='restore'?await restoreBackup(source,destination!):await verifyBackup(source);
|
|
console.log(JSON.stringify(result,null,2));
|