penguins-eggs 10.0.53 → 10.0.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.oclif.manifest.json +1548 -2
- package/README.md +787 -0
- package/addons/eggs/theme/livecd/grub.main.simple.cfg +49 -0
- package/addons/eggs/theme/livecd/isolinux.theme.cfg +6 -5
- package/conf/derivatives.yaml +2 -1
- package/conf/distros/fedora/calamares/settings.yml +0 -6
- package/dist/classes/bleach.d.ts +32 -0
- package/dist/classes/bleach.js +135 -0
- package/dist/classes/cfs.d.ts +17 -0
- package/dist/classes/cfs.js +39 -0
- package/dist/classes/cli-autologin.d.ts +52 -0
- package/dist/classes/cli-autologin.js +247 -0
- package/dist/classes/compressors.d.ts +54 -0
- package/dist/classes/compressors.js +109 -0
- package/dist/classes/daddy.d.ts +26 -0
- package/dist/classes/daddy.js +167 -0
- package/dist/classes/distro.d.ts +32 -0
- package/dist/classes/distro.js +360 -0
- package/dist/classes/diversions.d.ts +48 -0
- package/dist/classes/diversions.js +116 -0
- package/dist/classes/incubation/branding.d.ts +17 -0
- package/dist/classes/incubation/branding.js +85 -0
- package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
- package/dist/classes/incubation/fisherman-helper/displaymanager.js +40 -0
- package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
- package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
- package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
- package/dist/classes/incubation/fisherman-helper/settings.js +83 -0
- package/dist/classes/incubation/fisherman.d.ts +70 -0
- package/dist/classes/incubation/fisherman.js +263 -0
- package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/alpine.js +78 -0
- package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/bionic.js +83 -0
- package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/buster.js +85 -0
- package/dist/classes/incubation/incubator.d/jessie.d.ts +31 -0
- package/dist/classes/incubation/incubator.d/jessie.js +44 -0
- package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/noble.js +85 -0
- package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
- package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
- package/dist/classes/incubation/incubator.d/rolling.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/rolling.js +80 -0
- package/dist/classes/incubation/incubator.d.ts +44 -0
- package/dist/classes/incubation/incubator.js +382 -0
- package/dist/classes/incubation/installer.d.ts +13 -0
- package/dist/classes/incubation/installer.js +52 -0
- package/dist/classes/keyboards.d.ts +50 -0
- package/dist/classes/keyboards.js +287 -0
- package/dist/classes/locales.d.ts +21 -0
- package/dist/classes/locales.js +77 -0
- package/dist/classes/network.d.ts +37 -0
- package/dist/classes/network.js +98 -0
- package/dist/classes/ovary.d.ts +198 -0
- package/dist/classes/ovary.js +1843 -0
- package/dist/classes/pacman.d/aldos.d.ts +52 -0
- package/dist/classes/pacman.d/aldos.js +100 -0
- package/dist/classes/pacman.d/alpine.d.ts +56 -0
- package/dist/classes/pacman.d/alpine.js +162 -0
- package/dist/classes/pacman.d/archlinux.d.ts +62 -0
- package/dist/classes/pacman.d/archlinux.js +137 -0
- package/dist/classes/pacman.d/debian.d.ts +65 -0
- package/dist/classes/pacman.d/debian.js +143 -0
- package/dist/classes/pacman.d/fedora.d.ts +53 -0
- package/dist/classes/pacman.d/fedora.js +101 -0
- package/dist/classes/pacman.d/openmamba.d.ts +52 -0
- package/dist/classes/pacman.d/openmamba.js +100 -0
- package/dist/classes/pacman.d/opensuse.d.ts +53 -0
- package/dist/classes/pacman.d/opensuse.js +102 -0
- package/dist/classes/pacman.d/voidlinux.d.ts +52 -0
- package/dist/classes/pacman.d/voidlinux.js +90 -0
- package/dist/classes/pacman.d.ts +139 -0
- package/dist/classes/pacman.js +775 -0
- package/dist/classes/pve-live.d.ts +17 -0
- package/dist/classes/pve-live.js +52 -0
- package/dist/classes/pxe.d.ts +74 -0
- package/dist/classes/pxe.js +410 -0
- package/dist/classes/settings.d.ts +53 -0
- package/dist/classes/settings.js +185 -0
- package/dist/classes/sources_list.d.ts +28 -0
- package/dist/classes/sources_list.js +89 -0
- package/dist/classes/systemctl.d.ts +47 -0
- package/dist/classes/systemctl.js +86 -0
- package/dist/classes/tailor.d.ts +50 -0
- package/dist/classes/tailor.js +526 -0
- package/dist/classes/tools.d.ts +26 -0
- package/dist/classes/tools.js +50 -0
- package/dist/classes/users.d.ts +28 -0
- package/dist/classes/users.js +143 -0
- package/dist/classes/utils.d.ts +324 -0
- package/dist/classes/utils.js +976 -0
- package/dist/classes/xdg.d.ts +45 -0
- package/dist/classes/xdg.js +337 -0
- package/dist/classes/yolk.d.ts +33 -0
- package/dist/classes/yolk.js +114 -0
- package/dist/commands/adapt.d.ts +17 -0
- package/dist/commands/adapt.js +33 -0
- package/dist/commands/analyze.d.ts +26 -0
- package/dist/commands/analyze.js +95 -0
- package/dist/commands/calamares.d.ts +29 -0
- package/dist/commands/calamares.js +112 -0
- package/dist/commands/config.d.ts +35 -0
- package/dist/commands/config.js +120 -0
- package/dist/commands/cuckoo.d.ts +16 -0
- package/dist/commands/cuckoo.js +62 -0
- package/dist/commands/dad.d.ts +20 -0
- package/dist/commands/dad.js +46 -0
- package/dist/commands/export/iso.d.ts +19 -0
- package/dist/commands/export/iso.js +55 -0
- package/dist/commands/export/pkg.d.ts +29 -0
- package/dist/commands/export/pkg.js +163 -0
- package/dist/commands/export/tarballs.d.ts +27 -0
- package/dist/commands/export/tarballs.js +84 -0
- package/dist/commands/install.d.ts +37 -0
- package/dist/commands/install.js +88 -0
- package/dist/commands/kill.d.ts +24 -0
- package/dist/commands/kill.js +50 -0
- package/dist/commands/love.d.ts +20 -0
- package/dist/commands/love.js +59 -0
- package/dist/commands/mom.d.ts +16 -0
- package/dist/commands/mom.js +30 -0
- package/dist/commands/produce.d.ts +34 -0
- package/dist/commands/produce.js +201 -0
- package/dist/commands/status.d.ts +23 -0
- package/dist/commands/status.js +31 -0
- package/dist/commands/syncfrom.d.ts +45 -0
- package/dist/commands/syncfrom.js +152 -0
- package/dist/commands/syncto.d.ts +40 -0
- package/dist/commands/syncto.js +175 -0
- package/dist/commands/tools/clean.d.ts +18 -0
- package/dist/commands/tools/clean.js +37 -0
- package/dist/commands/tools/ppa.d.ts +26 -0
- package/dist/commands/tools/ppa.js +138 -0
- package/dist/commands/tools/skel.d.ts +18 -0
- package/dist/commands/tools/skel.js +44 -0
- package/dist/commands/tools/stat.d.ts +31 -0
- package/dist/commands/tools/stat.js +70 -0
- package/dist/commands/tools/yolk.d.ts +24 -0
- package/dist/commands/tools/yolk.js +45 -0
- package/dist/commands/update.d.ts +51 -0
- package/dist/commands/update.js +219 -0
- package/dist/commands/wardrobe/get.d.ts +23 -0
- package/dist/commands/wardrobe/get.js +52 -0
- package/dist/commands/wardrobe/list.d.ts +24 -0
- package/dist/commands/wardrobe/list.js +125 -0
- package/dist/commands/wardrobe/show.d.ts +25 -0
- package/dist/commands/wardrobe/show.js +97 -0
- package/dist/commands/wardrobe/wear.d.ts +26 -0
- package/dist/commands/wardrobe/wear.js +84 -0
- package/dist/components/finished.d.ts +16 -0
- package/dist/components/finished.js +56 -0
- package/dist/components/information.d.ts +8 -0
- package/dist/components/information.js +154 -0
- package/dist/components/install.d.ts +15 -0
- package/dist/components/install.js +60 -0
- package/dist/components/keyboard.d.ts +16 -0
- package/dist/components/keyboard.js +54 -0
- package/dist/components/location.d.ts +16 -0
- package/dist/components/location.js +59 -0
- package/dist/components/network.d.ts +19 -0
- package/dist/components/network.js +65 -0
- package/dist/components/partitions.d.ts +16 -0
- package/dist/components/partitions.js +73 -0
- package/dist/components/steps.d.ts +13 -0
- package/dist/components/steps.js +148 -0
- package/dist/components/summary.d.ts +24 -0
- package/dist/components/summary.js +81 -0
- package/dist/components/title.d.ts +11 -0
- package/dist/components/title.js +35 -0
- package/dist/components/users.d.ts +24 -0
- package/dist/components/users.js +80 -0
- package/dist/components/welcome.d.ts +13 -0
- package/dist/components/welcome.js +63 -0
- package/dist/index-old.d.ts +8 -0
- package/dist/index-old.js +8 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.js +147 -0
- package/dist/interfaces/i-addons.d.ts +12 -0
- package/dist/interfaces/i-addons.js +8 -0
- package/dist/interfaces/i-analyze.d.ts +17 -0
- package/dist/interfaces/i-analyze.js +17 -0
- package/dist/interfaces/i-app.d.ts +14 -0
- package/dist/interfaces/i-app.js +8 -0
- package/dist/interfaces/i-branding.d.ts +36 -0
- package/dist/interfaces/i-branding.js +8 -0
- package/dist/interfaces/i-calamares-displaymanager.d.ts +17 -0
- package/dist/interfaces/i-calamares-displaymanager.js +1 -0
- package/dist/interfaces/i-calamares-finished.d.ts +12 -0
- package/dist/interfaces/i-calamares-finished.js +1 -0
- package/dist/interfaces/i-calamares-packages.d.ts +28 -0
- package/dist/interfaces/i-calamares-packages.js +1 -0
- package/dist/interfaces/i-calamares-partition.d.ts +40 -0
- package/dist/interfaces/i-calamares-partition.js +1 -0
- package/dist/interfaces/i-config-tools.d.ts +15 -0
- package/dist/interfaces/i-config-tools.js +8 -0
- package/dist/interfaces/i-devices.d.ts +20 -0
- package/dist/interfaces/i-devices.js +8 -0
- package/dist/interfaces/i-distro.d.ts +23 -0
- package/dist/interfaces/i-distro.js +8 -0
- package/dist/interfaces/i-drive-list.d.ts +33 -0
- package/dist/interfaces/i-drive-list.js +8 -0
- package/dist/interfaces/i-eggs-config.d.ts +32 -0
- package/dist/interfaces/i-eggs-config.js +8 -0
- package/dist/interfaces/i-excludes.d.ts +14 -0
- package/dist/interfaces/i-excludes.js +8 -0
- package/dist/interfaces/i-exec.d.ts +11 -0
- package/dist/interfaces/i-exec.js +8 -0
- package/dist/interfaces/i-initrd.d.ts +13 -0
- package/dist/interfaces/i-initrd.js +8 -0
- package/dist/interfaces/i-install.d.ts +16 -0
- package/dist/interfaces/i-install.js +8 -0
- package/dist/interfaces/i-installer.d.ts +17 -0
- package/dist/interfaces/i-installer.js +8 -0
- package/dist/interfaces/i-krill-config.d.ts +33 -0
- package/dist/interfaces/i-krill-config.js +8 -0
- package/dist/interfaces/i-krill.d.ts +42 -0
- package/dist/interfaces/i-krill.js +8 -0
- package/dist/interfaces/i-materia.d.ts +36 -0
- package/dist/interfaces/i-materia.js +8 -0
- package/dist/interfaces/i-net.d.ts +16 -0
- package/dist/interfaces/i-net.js +8 -0
- package/dist/interfaces/i-packages.d.ts +16 -0
- package/dist/interfaces/i-packages.js +8 -0
- package/dist/interfaces/i-partitions.d.ts +16 -0
- package/dist/interfaces/i-partitions.js +8 -0
- package/dist/interfaces/i-pxe.d.ts +45 -0
- package/dist/interfaces/i-pxe.js +1 -0
- package/dist/interfaces/i-remix.d.ts +21 -0
- package/dist/interfaces/i-remix.js +8 -0
- package/dist/interfaces/i-settings.d.ts +33 -0
- package/dist/interfaces/i-settings.js +8 -0
- package/dist/interfaces/i-user.d.ts +14 -0
- package/dist/interfaces/i-user.js +8 -0
- package/dist/interfaces/i-workdir.d.ts +14 -0
- package/dist/interfaces/i-workdir.js +8 -0
- package/dist/interfaces/i-xkb-model.d.ts +24 -0
- package/dist/interfaces/i-xkb-model.js +8 -0
- package/dist/interfaces/index.d.ts +25 -0
- package/dist/interfaces/index.js +8 -0
- package/dist/krill/modules/add-user.d.ts +20 -0
- package/dist/krill/modules/add-user.js +48 -0
- package/dist/krill/modules/bootloader-config.d.ts +14 -0
- package/dist/krill/modules/bootloader-config.js +165 -0
- package/dist/krill/modules/bootloader.d.ts +14 -0
- package/dist/krill/modules/bootloader.js +157 -0
- package/dist/krill/modules/change-password.d.ts +15 -0
- package/dist/krill/modules/change-password.js +18 -0
- package/dist/krill/modules/del-live-user.d.ts +14 -0
- package/dist/krill/modules/del-live-user.js +39 -0
- package/dist/krill/modules/fstab.d.ts +14 -0
- package/dist/krill/modules/fstab.js +123 -0
- package/dist/krill/modules/grubcfg.d.ts +17 -0
- package/dist/krill/modules/grubcfg.js +29 -0
- package/dist/krill/modules/hostname.d.ts +13 -0
- package/dist/krill/modules/hostname.js +50 -0
- package/dist/krill/modules/initramfs-cfg.d.ts +14 -0
- package/dist/krill/modules/initramfs-cfg.js +22 -0
- package/dist/krill/modules/initramfs.d.ts +13 -0
- package/dist/krill/modules/initramfs.js +54 -0
- package/dist/krill/modules/locale-cfg.d.ts +10 -0
- package/dist/krill/modules/locale-cfg.js +58 -0
- package/dist/krill/modules/locale.d.ts +13 -0
- package/dist/krill/modules/locale.js +91 -0
- package/dist/krill/modules/m-keyboard.d.ts +14 -0
- package/dist/krill/modules/m-keyboard.js +58 -0
- package/dist/krill/modules/machine-id.d.ts +15 -0
- package/dist/krill/modules/machine-id.js +33 -0
- package/dist/krill/modules/mkfs.d.ts +15 -0
- package/dist/krill/modules/mkfs.js +50 -0
- package/dist/krill/modules/mount-fs.d.ts +17 -0
- package/dist/krill/modules/mount-fs.js +62 -0
- package/dist/krill/modules/mount-vfs.d.ts +17 -0
- package/dist/krill/modules/mount-vfs.js +40 -0
- package/dist/krill/modules/network-cfg.d.ts +19 -0
- package/dist/krill/modules/network-cfg.js +64 -0
- package/dist/krill/modules/packages.d.ts +14 -0
- package/dist/krill/modules/packages.js +111 -0
- package/dist/krill/modules/partition.d.ts +20 -0
- package/dist/krill/modules/partition.js +324 -0
- package/dist/krill/modules/remove-installer-link.d.ts +13 -0
- package/dist/krill/modules/remove-installer-link.js +35 -0
- package/dist/krill/modules/umount.d.ts +14 -0
- package/dist/krill/modules/umount.js +28 -0
- package/dist/krill/modules/unpackfs.d.ts +13 -0
- package/dist/krill/modules/unpackfs.js +20 -0
- package/dist/krill/prepare.d.ts +78 -0
- package/dist/krill/prepare.js +624 -0
- package/dist/krill/sequence.d.ts +154 -0
- package/dist/krill/sequence.js +652 -0
- package/dist/lib/get_address.d.ts +8 -0
- package/dist/lib/get_address.js +23 -0
- package/dist/lib/get_dns.d.ts +8 -0
- package/dist/lib/get_dns.js +23 -0
- package/dist/lib/get_domain.d.ts +8 -0
- package/dist/lib/get_domain.js +23 -0
- package/dist/lib/get_gateway.d.ts +8 -0
- package/dist/lib/get_gateway.js +23 -0
- package/dist/lib/get_hostname.d.ts +8 -0
- package/dist/lib/get_hostname.js +23 -0
- package/dist/lib/get_netmask.d.ts +8 -0
- package/dist/lib/get_netmask.js +23 -0
- package/dist/lib/get_password.d.ts +8 -0
- package/dist/lib/get_password.js +36 -0
- package/dist/lib/get_userfullname.d.ts +8 -0
- package/dist/lib/get_userfullname.js +23 -0
- package/dist/lib/get_username.d.ts +8 -0
- package/dist/lib/get_username.js +23 -0
- package/dist/lib/kill_me_softly.d.ts +11 -0
- package/dist/lib/kill_me_softly.js +61 -0
- package/dist/lib/select_address_type.d.ts +8 -0
- package/dist/lib/select_address_type.js +24 -0
- package/dist/lib/select_filesystem_type.d.ts +8 -0
- package/dist/lib/select_filesystem_type.js +46 -0
- package/dist/lib/select_installation_device.d.ts +8 -0
- package/dist/lib/select_installation_device.js +30 -0
- package/dist/lib/select_installation_mode.d.ts +8 -0
- package/dist/lib/select_installation_mode.js +24 -0
- package/dist/lib/select_interface.d.ts +8 -0
- package/dist/lib/select_interface.js +24 -0
- package/dist/lib/select_keyboard_layout.d.ts +11 -0
- package/dist/lib/select_keyboard_layout.js +36 -0
- package/dist/lib/select_keyboard_model.d.ts +11 -0
- package/dist/lib/select_keyboard_model.js +34 -0
- package/dist/lib/select_keyboard_option.d.ts +11 -0
- package/dist/lib/select_keyboard_option.js +34 -0
- package/dist/lib/select_keyboard_variant.d.ts +11 -0
- package/dist/lib/select_keyboard_variant.js +35 -0
- package/dist/lib/select_languages.d.ts +8 -0
- package/dist/lib/select_languages.js +28 -0
- package/dist/lib/select_regions.d.ts +8 -0
- package/dist/lib/select_regions.js +24 -0
- package/dist/lib/select_user_swap_choice.d.ts +8 -0
- package/dist/lib/select_user_swap_choice.js +34 -0
- package/dist/lib/select_zones.d.ts +8 -0
- package/dist/lib/select_zones.js +518 -0
- package/dist/lib/utils.d.ts +34 -0
- package/dist/lib/utils.js +79 -0
- package/manpages/doc/man/eggs.1.gz +0 -0
- package/manpages/doc/man/eggs.html +635 -4
- package/package.json +11 -7
- package/scripts/_eggs +10 -1
- package/scripts/eggs.bash +1 -0
- /package/addons/eggs/theme/livecd/{grub.main.cfg → grub.main.full.cfg} +0 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/settings.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import yaml from 'js-yaml';
|
|
10
|
+
// packages
|
|
11
|
+
import fs from 'node:fs';
|
|
12
|
+
import os from 'node:os';
|
|
13
|
+
import shx from 'shelljs';
|
|
14
|
+
// pjson
|
|
15
|
+
import { createRequire } from 'node:module';
|
|
16
|
+
const require = createRequire(import.meta.url);
|
|
17
|
+
const pjson = require('../../package.json');
|
|
18
|
+
import Distro from './distro.js';
|
|
19
|
+
import Pacman from './pacman.js';
|
|
20
|
+
// classes
|
|
21
|
+
import Utils from './utils.js';
|
|
22
|
+
const config_file = '/etc/penguins-eggs.d/eggs.yaml';
|
|
23
|
+
/**
|
|
24
|
+
* Setting
|
|
25
|
+
*/
|
|
26
|
+
export default class Settings {
|
|
27
|
+
app = {};
|
|
28
|
+
config = {};
|
|
29
|
+
distro = {};
|
|
30
|
+
efi_work = '';
|
|
31
|
+
i686 = false;
|
|
32
|
+
incubator = {};
|
|
33
|
+
initrd_image = '';
|
|
34
|
+
initrdImg = '';
|
|
35
|
+
isLive = false;
|
|
36
|
+
iso_work = '';
|
|
37
|
+
isoFilename = '';
|
|
38
|
+
kernel_image = '';
|
|
39
|
+
remix = {};
|
|
40
|
+
session_excludes = '';
|
|
41
|
+
vmlinuz = '';
|
|
42
|
+
work_dir = {}; // resulting name of the iso
|
|
43
|
+
constructor(compression = '') {
|
|
44
|
+
this.config.compression = compression;
|
|
45
|
+
this.app.author = 'Piero Proietti';
|
|
46
|
+
this.app.homepage = 'https://github.com/pieroproietti/penguins-eggs';
|
|
47
|
+
this.app.mail = 'piero.proietti@gmail.com';
|
|
48
|
+
this.app.name = pjson.name;
|
|
49
|
+
this.app.version = pjson.version;
|
|
50
|
+
this.isLive = Utils.isLive();
|
|
51
|
+
this.i686 = Utils.isi686();
|
|
52
|
+
this.distro = new Distro();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Calculate and show free space on the disk
|
|
56
|
+
* @returns {void}
|
|
57
|
+
*/
|
|
58
|
+
async listFreeSpace() {
|
|
59
|
+
if (!fs.existsSync(this.config.snapshot_dir)) {
|
|
60
|
+
fs.mkdirSync(this.config.snapshot_dir);
|
|
61
|
+
if (!fs.existsSync(this.config.snapshot_mnt)) {
|
|
62
|
+
fs.mkdirSync(this.config.snapshot_mnt);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Lo spazio usato da SquashFS non è stimabile da live
|
|
66
|
+
* errore buffer troppo piccolo
|
|
67
|
+
*/
|
|
68
|
+
const gb = 1_048_576;
|
|
69
|
+
let spaceAvailable = 0;
|
|
70
|
+
if (!Utils.isLive()) {
|
|
71
|
+
console.log(`Disk space used: ${Math.round((Utils.getUsedSpace() / gb) * 10) / 10} GB`);
|
|
72
|
+
}
|
|
73
|
+
spaceAvailable = Number(shx
|
|
74
|
+
.exec(`df "${this.config.snapshot_mnt}" | /usr/bin/awk 'NR==2 {print $4}'`, {
|
|
75
|
+
silent: true
|
|
76
|
+
})
|
|
77
|
+
.stdout.trim());
|
|
78
|
+
console.log(`Space available: ${Math.round((spaceAvailable / gb) * 10) / 10} GB`);
|
|
79
|
+
console.log(`There are ${Utils.getSnapshotCount(this.config.snapshot_mnt)} snapshots taking ${Math.round((Utils.getSnapshotSize(this.config.snapshot_mnt) / gb) * 10) / 10} GB of disk space.`);
|
|
80
|
+
console.log();
|
|
81
|
+
if (spaceAvailable > gb * 3) {
|
|
82
|
+
console.log(chalk.cyanBright('The free space should be sufficient to hold the'));
|
|
83
|
+
console.log(chalk.cyanBright('compressed data from the system'));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
console.log(chalk.redBright('The free space should be insufficient') + '.');
|
|
87
|
+
console.log();
|
|
88
|
+
if (Utils.isMountpoint(this.config.snapshot_mnt)) {
|
|
89
|
+
console.log('If necessary, you can create more available space');
|
|
90
|
+
console.log('by removing previous snapshots and saved copies.');
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
console.log(`You can mount a free partition under ${this.config.snapshot_mnt}`);
|
|
94
|
+
}
|
|
95
|
+
console.log();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Load configuration from config_file
|
|
100
|
+
* @returns {boolean} Success
|
|
101
|
+
*/
|
|
102
|
+
async load() {
|
|
103
|
+
const foundSettings = true;
|
|
104
|
+
if (!fs.existsSync(config_file)) {
|
|
105
|
+
console.log(`cannot find configuration file ${config_file},`);
|
|
106
|
+
console.log('please generate it with: sudo eggs config');
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
this.config = yaml.load(fs.readFileSync(config_file, 'utf8'));
|
|
110
|
+
this.session_excludes = '';
|
|
111
|
+
if (!this.config.snapshot_dir.endsWith('/')) {
|
|
112
|
+
this.config.snapshot_dir += '/';
|
|
113
|
+
}
|
|
114
|
+
this.work_dir.ovarium = this.config.snapshot_dir + 'ovarium/';
|
|
115
|
+
// hidden .mnt under nest
|
|
116
|
+
this.config.snapshot_mnt = this.config.snapshot_dir + '.mnt/';
|
|
117
|
+
if (!this.config.snapshot_mnt.endsWith('/')) {
|
|
118
|
+
this.config.snapshot_mnt += '/';
|
|
119
|
+
}
|
|
120
|
+
// hidden .overlay under nest was under ovarium
|
|
121
|
+
this.work_dir.lowerdir = this.config.snapshot_dir + '.overlay/lowerdir';
|
|
122
|
+
this.work_dir.upperdir = this.config.snapshot_dir + '.overlay/upperdir';
|
|
123
|
+
this.work_dir.workdir = this.config.snapshot_dir + '.overlay/workdir';
|
|
124
|
+
this.work_dir.merged = this.config.snapshot_mnt + 'filesystem.squashfs';
|
|
125
|
+
this.efi_work = this.config.snapshot_mnt + 'efi-work/';
|
|
126
|
+
this.iso_work = this.config.snapshot_mnt + 'iso/';
|
|
127
|
+
// remember: before was hostname, not empty
|
|
128
|
+
if (this.config.snapshot_basename === '') {
|
|
129
|
+
this.config.snapshot_basename = os.hostname();
|
|
130
|
+
}
|
|
131
|
+
if (this.config.make_efi && !Pacman.isUefi() && Utils.uefiArch() === 'amd64') {
|
|
132
|
+
Utils.error('You choose to create an UEFI image, but miss to install grub-efi-amd64-bin package.');
|
|
133
|
+
Utils.error('Please install it before to create an UEFI image:');
|
|
134
|
+
Utils.warning('sudo apt install grub-efi-amd64-bin');
|
|
135
|
+
Utils.error('or edit /etc/penguins-eggs.d/eggs.yaml and set the valuer of make_efi = false');
|
|
136
|
+
this.config.make_efi = false;
|
|
137
|
+
}
|
|
138
|
+
this.kernel_image = this.config.vmlinuz;
|
|
139
|
+
this.initrd_image = this.config.initrd_img;
|
|
140
|
+
this.vmlinuz = this.kernel_image.slice(this.kernel_image.lastIndexOf('/'));
|
|
141
|
+
this.initrdImg = this.initrd_image.slice(this.initrd_image.lastIndexOf('/'));
|
|
142
|
+
/**
|
|
143
|
+
* Use the login name set in the config file. If not set, use the primary
|
|
144
|
+
* user's name. If the name is not "user" then add boot option. ALso use
|
|
145
|
+
* the same username for cleaning geany history.
|
|
146
|
+
*/
|
|
147
|
+
if ((this.config.user_opt === undefined || this.config.user_opt === '') && // this.user_opt = shx.exec('awk -F":" \'/1000:1000/ { print $1 }\' /etc/passwd', { silent: true }).stdout.trim()
|
|
148
|
+
this.config.user_opt === '') {
|
|
149
|
+
this.config.user_opt = 'live';
|
|
150
|
+
}
|
|
151
|
+
if (this.config.user_opt_passwd === '') {
|
|
152
|
+
this.config.user_opt_passwd = 'evolution';
|
|
153
|
+
}
|
|
154
|
+
if (this.config.root_passwd === '') {
|
|
155
|
+
this.config.root_passwd = 'evolution';
|
|
156
|
+
}
|
|
157
|
+
if (this.config.timezone === undefined || this.config.timezone === '') {
|
|
158
|
+
this.config.timezone = shx.exec('cat /etc/timezone', { silent: true }).stdout.trim();
|
|
159
|
+
}
|
|
160
|
+
return foundSettings;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
*
|
|
164
|
+
* @param basename
|
|
165
|
+
* @param theme
|
|
166
|
+
*/
|
|
167
|
+
async loadRemix(theme = '') {
|
|
168
|
+
this.remix.versionNumber = Utils.getPackageVersion();
|
|
169
|
+
this.remix.kernel = Utils.kernelVersion();
|
|
170
|
+
this.remix.branding = theme === '' ? 'eggs' : (this.remix.branding = theme.slice(Math.max(0, theme.lastIndexOf('/') + 1)));
|
|
171
|
+
this.remix.name = this.config.snapshot_basename;
|
|
172
|
+
let name = this.config.snapshot_prefix + this.config.snapshot_basename;
|
|
173
|
+
name = name.replaceAll('-', ' ').replaceAll('_', ' ').replace('egg of ', '');
|
|
174
|
+
this.remix.fullname = name;
|
|
175
|
+
this.remix.versionName = name.toUpperCase();
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
*
|
|
179
|
+
* @param config
|
|
180
|
+
*/
|
|
181
|
+
async save(config) {
|
|
182
|
+
const ordered = Utils.sortObjectKeys(config);
|
|
183
|
+
fs.writeFileSync(config_file, yaml.dump(ordered), 'utf-8');
|
|
184
|
+
}
|
|
185
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/sources_list.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
export default class SourcesList {
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param repos
|
|
15
|
+
* @returns
|
|
16
|
+
*/
|
|
17
|
+
components(components: string[]): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @param repos
|
|
21
|
+
* @returns
|
|
22
|
+
*/
|
|
23
|
+
distribution(distributions: string[]): Promise<boolean>;
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
*/
|
|
27
|
+
private get;
|
|
28
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/sources_list.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { exec } from '../lib/utils.js';
|
|
10
|
+
import Distro from './distro.js';
|
|
11
|
+
import Utils from './utils.js';
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
*/
|
|
15
|
+
export default class SourcesList {
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* @param repos
|
|
19
|
+
* @returns
|
|
20
|
+
*/
|
|
21
|
+
async components(components) {
|
|
22
|
+
/**
|
|
23
|
+
* Linuxmint non ha nessuna configurazione in /etc/apt/sources.list
|
|
24
|
+
*/
|
|
25
|
+
let checked = true;
|
|
26
|
+
const repos = await this.get();
|
|
27
|
+
if (repos.length > 0) {
|
|
28
|
+
for (const repo of repos) {
|
|
29
|
+
for (const component of components) {
|
|
30
|
+
// On security we need just main
|
|
31
|
+
if (!repo.includes('security') && !repo.includes(component)) {
|
|
32
|
+
console.log('component: ' + chalk.green(component) + ' is not included in repo: ' + chalk.green(repo));
|
|
33
|
+
checked = false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (checked) {
|
|
38
|
+
Utils.warning('repositories checked');
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
Utils.pressKeyToExit('component warning, check your /etc/apt/sources.list', true);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return checked;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
*
|
|
48
|
+
* @param repos
|
|
49
|
+
* @returns
|
|
50
|
+
*/
|
|
51
|
+
async distribution(distributions) {
|
|
52
|
+
/**
|
|
53
|
+
* Linuxmint non ha nessuna configurazione in /etc/apt/sources.list
|
|
54
|
+
*/
|
|
55
|
+
let checked = true;
|
|
56
|
+
checked = false;
|
|
57
|
+
const distro = new Distro();
|
|
58
|
+
for (const distribution of distributions) {
|
|
59
|
+
if (distribution.includes(distro.codenameLikeId)) {
|
|
60
|
+
checked = true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return checked;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
*
|
|
67
|
+
*/
|
|
68
|
+
async get() {
|
|
69
|
+
let universalSourcesList = '/etc/apt/sources.list';
|
|
70
|
+
const distro = new Distro();
|
|
71
|
+
if (distro.distroId === 'Linuxmint') {
|
|
72
|
+
universalSourcesList = '/etc/apt/sources.list.d/official-package-repositories.list';
|
|
73
|
+
}
|
|
74
|
+
// deb uri distribution [component1] [component2] [...]
|
|
75
|
+
const checkRepos = await exec(`grep "deb http"<${universalSourcesList}`, { capture: true, echo: false });
|
|
76
|
+
let tmp = [];
|
|
77
|
+
if (checkRepos.code === 0) {
|
|
78
|
+
tmp = checkRepos.data.split('\n');
|
|
79
|
+
}
|
|
80
|
+
// remove empty line
|
|
81
|
+
const repos = [];
|
|
82
|
+
for (const repo of tmp) {
|
|
83
|
+
if (repo !== '') {
|
|
84
|
+
repos.push(repo);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return repos;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
/**
|
|
3
|
+
* penguins-eggs
|
|
4
|
+
* class: systemctl.ts
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* email: piero.proietti@gmail.com
|
|
7
|
+
* Presa da https://github.com/VolantisDev/node-systemctl
|
|
8
|
+
* license: MIT
|
|
9
|
+
*/
|
|
10
|
+
export default class SistemdCtl {
|
|
11
|
+
echo: {};
|
|
12
|
+
constructor(verbose?: boolean);
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
16
|
+
disable(service: string, chroot?: string, report?: boolean): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
enable(service: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
*
|
|
23
|
+
* @param service
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
isActive(service: string): Promise<unknown>;
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
*/
|
|
30
|
+
isEnabled(service: string): Promise<unknown>;
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
reload(service: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
*/
|
|
38
|
+
restart(service: string): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
*
|
|
41
|
+
*/
|
|
42
|
+
start(service: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
*
|
|
45
|
+
*/
|
|
46
|
+
stop(service: string): Promise<void>;
|
|
47
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
/**
|
|
3
|
+
* penguins-eggs
|
|
4
|
+
* class: systemctl.ts
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* email: piero.proietti@gmail.com
|
|
7
|
+
* Presa da https://github.com/VolantisDev/node-systemctl
|
|
8
|
+
* license: MIT
|
|
9
|
+
*/
|
|
10
|
+
import { exec } from '../lib/utils.js';
|
|
11
|
+
import Utils from './utils.js';
|
|
12
|
+
export default class SistemdCtl {
|
|
13
|
+
echo = {};
|
|
14
|
+
constructor(verbose = false) {
|
|
15
|
+
this.echo = Utils.setEcho(verbose);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
async disable(service, chroot = '/', report = false) {
|
|
21
|
+
await exec(`chroot ${chroot}} systemctl disable ${service}`, this.echo);
|
|
22
|
+
if (report) {
|
|
23
|
+
console.log(`systemctl: disabled ${service} on ${chroot}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
async enable(service) {
|
|
30
|
+
await exec(`systemctl enable ${service}`, this.echo);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @param service
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
37
|
+
async isActive(service) {
|
|
38
|
+
return new Promise((resolve, reject) => {
|
|
39
|
+
exec(`systemctl is-active ${service}`, this.echo)
|
|
40
|
+
.then((result) => {
|
|
41
|
+
resolve(!result.data.includes('inactive'));
|
|
42
|
+
})
|
|
43
|
+
.catch((error) => {
|
|
44
|
+
resolve(false);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
*
|
|
50
|
+
*/
|
|
51
|
+
async isEnabled(service) {
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
exec(`systemctl is-enabled ${service}`, this.echo)
|
|
54
|
+
.then((result) => {
|
|
55
|
+
resolve(result.data.includes('enabled'));
|
|
56
|
+
})
|
|
57
|
+
.catch((error) => {
|
|
58
|
+
resolve(false);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
*
|
|
64
|
+
*/
|
|
65
|
+
async reload(service) {
|
|
66
|
+
await exec(`systemctl reload ${service}`, this.echo);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
*
|
|
70
|
+
*/
|
|
71
|
+
async restart(service) {
|
|
72
|
+
await exec(`systemctl restart ${service}`, this.echo);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
*
|
|
76
|
+
*/
|
|
77
|
+
async start(service) {
|
|
78
|
+
await exec(`systemctl start ${service}`, this.echo);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
*
|
|
82
|
+
*/
|
|
83
|
+
async stop(service) {
|
|
84
|
+
await exec(`systemctl stop ${service}`, this.echo);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/tailor.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
import { IMateria } from '../interfaces/index.js';
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
export default class Tailor {
|
|
13
|
+
materials: IMateria;
|
|
14
|
+
private category;
|
|
15
|
+
private costume;
|
|
16
|
+
private echo;
|
|
17
|
+
private toNull;
|
|
18
|
+
private verbose;
|
|
19
|
+
private wardrobe;
|
|
20
|
+
private log;
|
|
21
|
+
/**
|
|
22
|
+
* @param wardrobe
|
|
23
|
+
* @param costume
|
|
24
|
+
*/
|
|
25
|
+
constructor(costume: string, category?: string);
|
|
26
|
+
/**
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
prepare(verbose?: boolean, no_accessories?: boolean, no_firmwares?: boolean): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
* @param packages
|
|
33
|
+
* @param verbose
|
|
34
|
+
* @param section
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
37
|
+
packagesExists(wanted: string[]): Promise<string[]>;
|
|
38
|
+
/**
|
|
39
|
+
* - check if every package if installed
|
|
40
|
+
* - if find any packages to install, install it
|
|
41
|
+
*/
|
|
42
|
+
packagesInstall(packages: string[], comment?: string, cmd?: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
*
|
|
45
|
+
* @param cmd
|
|
46
|
+
* @param echo
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
tryCheckSuccess(cmd: string, echo: {}): Promise<boolean>;
|
|
50
|
+
}
|