UNPKG

penguins-eggs

Version:

A remaster system tool, compatible with Arch, Debian, Devuan, Ubuntu and others

56 lines (55 loc) 2.63 kB
/** * ./src/commands/export/iso.ts * penguins-eggs v.10.0.0 / ecmascript 2020 * author: Piero Proietti * email: piero.proietti@gmail.com * license: MIT */ import { Command, Flags } from '@oclif/core'; import Tools from '../../classes/tools.js'; import Utils from '../../classes/utils.js'; import { exec } from '../../lib/utils.js'; export default class ExportIso extends Command { static description = 'export iso in the destination host'; static examples = ['eggs export iso', 'eggs export iso --clean']; static flags = { checksum: Flags.boolean({ char: 'C', description: 'export checksums md5 and sha256' }), clean: Flags.boolean({ char: 'c', description: 'delete old ISOs before to copy' }), help: Flags.help({ char: 'h' }), verbose: Flags.boolean({ char: 'v', description: 'verbose' }) }; async run() { const { flags } = await this.parse(ExportIso); Utils.titles(this.id + ' ' + this.argv); Utils.warning(ExportIso.description); const Tu = new Tools(); await Tu.loadSettings(); const echo = Utils.setEcho(flags.verbose); const rmount = `/tmp/eggs-${(Math.random() + 1).toString(36).slice(7)}`; let cmd = `rm -f ${rmount}\n`; const filters = ['*.iso', '*.md5', '*.sha256']; cmd += `mkdir ${rmount}\n`; cmd += `sshfs ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathIso} ${rmount}\n`; if (flags.clean) { cmd += `rm -f ${rmount}/${Tu.snapshot_name}*\n`; } cmd += `cp ${Tu.snapshot_dir}${Tu.snapshot_name}${filters[0]} ${rmount}\n`; if (flags.checksum) { cmd += `cp ${Tu.snapshot_dir}${Tu.snapshot_name}${filters[1]} ${rmount}\n`; cmd += `cp ${Tu.snapshot_dir}${Tu.snapshot_name}${filters[2]} ${rmount}\n`; } cmd += 'sync\n'; cmd += `umount ${rmount}\n`; cmd += `rm -f ${rmount}\m`; if (!flags.verbose) { if (flags.clean) { console.log(`remove ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathIso}${Tu.snapshot_name}${filters[0]}`); } if (flags.checksum) { console.log(`export ${Tu.config.localPathIso}/${Tu.snapshot_name}${filters[1]}/${filters[2]} to ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathIso}`); } console.log(`scp ${Tu.config.localPathIso}/${Tu.snapshot_name}${filters[0]} ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathIso}`); } await exec(cmd, echo); } }