UNPKG

penguins-eggs

Version:

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

121 lines (120 loc) 4.55 kB
/** * ./src/commands/config.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 Bleach from '../classes/bleach.js'; import Pacman from '../classes/pacman.js'; import Utils from '../classes/utils.js'; import { exec } from '../lib/utils.js'; /** * */ export default class Config extends Command { static description = 'Configure eggs to run it'; static examples = ['sudo eggs config', 'sudo eggs config --clean', 'sudo eggs config --clean --nointeractive']; static flags = { clean: Flags.boolean({ char: 'c', description: 'remove old configuration before to create new one' }), help: Flags.help({ char: 'h' }), nointeractive: Flags.boolean({ char: 'n', description: 'no user interaction' }), verbose: Flags.boolean({ char: 'v', description: 'verbose' }) }; /** * * @param i * @param verbose */ static async install(i, nointeractive = false, verbose = false) { const echo = Utils.setEcho(verbose); Utils.warning("sudo eggs config"); if (i.configurationInstall) { Utils.warning('- creating configuration...'); await Pacman.configurationInstall(verbose); } if (i.configurationRefresh) { Utils.warning('- refreshing configuration for new machine...'); await Pacman.configurationMachineNew(verbose); } if (i.distroTemplate) { Utils.warning('- copying distro templates...'); await Pacman.distroTemplateInstall(verbose); } if (i.needUpdate && !nointeractive && Pacman.distro().familyId === 'debian') { Utils.warning('- updating system...'); await exec('apt-get update --yes', echo); } if (i.calamares) { let message = "- You are on a graphic system, is suggested\n"; message += " to install the GUI installer calamares.\n"; message += ' just type: "sudo eggs calamares --install"'; Utils.warning(message); } if (i.addEfi && Pacman.distro().familyId === 'debian') { Utils.warning('- installing UEFI support'); await exec('apt-get install grub-efi-' + Utils.uefiArch() + '-bin --yes', echo); } if (i.needUpdate && !nointeractive) { Utils.warning('cleaning the system...'); if (Pacman.distro().familyId === 'debian') { const bleach = new Bleach(); await bleach.clean(verbose); } } } /** * * * @param verbose */ static async thatWeNeed(nointeractive = false, verbose = false, cryptedclone = false) { const i = {}; i.distroTemplate = !Pacman.distroTemplateCheck(); i.addEfi = !Pacman.isUefi(); i.calamares = false; if (!cryptedclone && !Pacman.calamaresExists() && Pacman.isInstalledGui() && Pacman.isCalamaresAvailable()) { i.calamares = true; } i.configurationInstall = !Pacman.configurationCheck(); if (!i.configurationInstall) { i.configurationRefresh = !Pacman.configurationMachineNew(); } return i; } async run() { const { flags } = await this.parse(Config); const { nointeractive } = flags; const { verbose } = flags; if (!nointeractive) { Utils.titles(this.id + ' ' + this.argv); } if (Utils.isRoot(this.id)) { if (flags.clean) { Utils.warning('removing old configurations'); await exec('rm /etc/penguins-eggs.d -rf'); } /** * Se stiamo utilizzando eggs da sorgenti * Aggiungo autocomplete e manPage */ if (Utils.isSources()) { Utils.warning('creating autocomplete...'); await Pacman.autocompleteInstall(verbose); Utils.warning('creating eggs man page...'); await Pacman.manPageInstall(verbose); } const i = await Config.thatWeNeed(nointeractive, verbose); if (i.needUpdate || i.configurationInstall || i.configurationRefresh || i.distroTemplate) { await Config.install(i, nointeractive, verbose); } } else { Utils.useRoot(this.id); } } }