penguins-eggs 9.6.34 → 10.0.0
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 +1458 -1
- package/README.md +823 -8
- package/addons/eggs/theme/livecd/grub.main.cfg +4 -4
- package/addons/eggs/theme/livecd/isolinux.main.cfg +5 -5
- package/bin/dev.cmd +1 -1
- package/bin/dev.js +6 -0
- package/bin/run.js +5 -0
- package/conf/derivatives.yaml +2 -0
- package/conf/distros/buster/calamares/calamares-modules/bootloader-config/bootloader-config.sh +3 -3
- package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +1 -1
- package/conf/distros/buster/calamares/modules/fstab.yml +1 -1
- package/conf/distros/focal/calamares/modules/fstab.yml +1 -1
- package/conf/{exclude.list.homes → exclude.list.d/home.list} +6 -1
- package/conf/{exclude.list.template → exclude.list.d/master.list} +15 -24
- package/conf/exclude.list.d/var.list +21 -0
- package/conf/tools.yaml +1 -3
- package/dist/classes/bleach.d.ts +37 -0
- package/dist/classes/bleach.js +43 -91
- package/dist/classes/cfs.d.ts +17 -0
- package/dist/classes/cfs.js +15 -12
- package/dist/classes/compressors.d.ts +53 -0
- package/dist/classes/compressors.js +51 -58
- package/dist/classes/daddy.d.ts +18 -0
- package/dist/classes/daddy.js +93 -101
- package/dist/classes/distro.d.ts +26 -0
- package/dist/classes/distro.js +45 -27
- package/dist/classes/families/archlinux.d.ts +61 -0
- package/dist/classes/families/archlinux.js +56 -113
- package/dist/classes/families/debian.d.ts +65 -0
- package/dist/classes/families/debian.js +68 -143
- package/dist/classes/families/fedora.d.ts +52 -0
- package/dist/classes/families/fedora.js +43 -99
- package/dist/classes/families/mockup.d.ts +60 -0
- package/dist/classes/families/mockup.js +27 -46
- package/dist/classes/families/suse.d.ts +52 -0
- package/dist/classes/families/suse.js +45 -97
- package/dist/classes/incubation/branding.d.ts +17 -0
- package/dist/classes/incubation/branding.js +33 -32
- package/dist/classes/incubation/distros/bionic.d.ts +32 -0
- package/dist/classes/incubation/distros/bionic.js +15 -15
- package/dist/classes/incubation/distros/buster.d.ts +32 -0
- package/dist/classes/incubation/distros/buster.js +15 -15
- package/dist/classes/incubation/distros/focal.d.ts +32 -0
- package/dist/classes/incubation/distros/focal.js +15 -15
- package/dist/classes/incubation/distros/jessie.d.ts +31 -0
- package/dist/classes/incubation/distros/jessie.js +11 -13
- package/dist/classes/incubation/distros/rolling.d.ts +32 -0
- package/dist/classes/incubation/distros/rolling.js +15 -16
- package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
- package/dist/classes/incubation/fisherman-helper/displaymanager.js +8 -9
- package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
- package/dist/classes/incubation/fisherman-helper/packages.js +17 -17
- package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
- package/dist/classes/incubation/fisherman-helper/settings.js +30 -28
- package/dist/classes/incubation/fisherman.d.ts +77 -0
- package/dist/classes/incubation/fisherman.js +137 -132
- package/dist/classes/incubation/incubator.d.ts +40 -0
- package/dist/classes/incubation/incubator.js +93 -87
- package/dist/classes/incubation/installer.d.ts +13 -0
- package/dist/classes/incubation/installer.js +27 -12
- package/dist/classes/initrd.d.ts +41 -0
- package/dist/classes/initrd.js +42 -44
- package/dist/classes/keyboards.d.ts +50 -0
- package/dist/classes/keyboards.js +110 -107
- package/dist/classes/locales.d.ts +21 -0
- package/dist/classes/locales.js +30 -34
- package/dist/classes/n8.d.ts +17 -0
- package/dist/classes/n8.js +16 -22
- package/dist/classes/network.d.ts +37 -0
- package/dist/classes/network.js +21 -25
- package/dist/classes/ovary.d.ts +205 -0
- package/dist/classes/ovary.js +1262 -1334
- package/dist/classes/pacman.d.ts +149 -0
- package/dist/classes/pacman.js +347 -426
- package/dist/classes/pve-live.d.ts +17 -0
- package/dist/classes/pve-live.js +23 -25
- package/dist/classes/pxe.d.ts +65 -0
- package/dist/classes/pxe.js +206 -210
- package/dist/classes/settings.d.ts +53 -0
- package/dist/classes/settings.js +99 -102
- package/dist/classes/sources_list.d.ts +28 -0
- package/dist/classes/sources_list.js +35 -39
- package/dist/classes/systemctl.d.ts +47 -0
- package/dist/classes/systemctl.js +35 -39
- package/dist/classes/tailor.d.ts +46 -0
- package/dist/classes/tailor.js +225 -241
- package/dist/classes/tools.d.ts +30 -0
- package/dist/classes/tools.js +20 -26
- package/dist/classes/users.d.ts +28 -0
- package/dist/classes/users.js +22 -16
- package/dist/classes/utils.d.ts +318 -0
- package/dist/classes/utils.js +91 -76
- package/dist/classes/xdg.d.ts +45 -0
- package/dist/classes/xdg.js +129 -133
- package/dist/classes/yolk.d.ts +33 -0
- package/dist/classes/yolk.js +54 -60
- package/dist/commands/adapt.d.ts +17 -0
- package/dist/commands/adapt.js +21 -25
- package/dist/commands/analyze.d.ts +26 -0
- package/dist/commands/analyze.js +60 -74
- package/dist/commands/calamares.d.ts +29 -0
- package/dist/commands/calamares.js +53 -60
- package/dist/commands/config.d.ts +36 -0
- package/dist/commands/config.js +120 -142
- package/dist/commands/cuckoo.d.ts +16 -0
- package/dist/commands/cuckoo.js +24 -28
- package/dist/commands/dad.d.ts +19 -0
- package/dist/commands/dad.js +26 -30
- package/dist/commands/export/deb.d.ts +19 -0
- package/dist/commands/export/deb.js +33 -42
- package/dist/commands/export/iso.d.ts +19 -0
- package/dist/commands/export/iso.js +24 -28
- package/dist/commands/install.d.ts +37 -0
- package/dist/commands/install.js +68 -68
- package/dist/commands/kill.d.ts +24 -0
- package/dist/commands/kill.js +31 -38
- package/dist/commands/mom.d.ts +16 -0
- package/dist/commands/mom.js +20 -22
- package/dist/commands/produce.d.ts +33 -0
- package/dist/commands/produce.js +100 -92
- package/dist/commands/status.d.ts +23 -0
- package/dist/commands/status.js +14 -20
- package/dist/commands/syncfrom.d.ts +45 -0
- package/dist/commands/syncfrom.js +99 -109
- package/dist/commands/syncto.d.ts +40 -0
- package/dist/commands/syncto.js +152 -216
- package/dist/commands/tools/clean.d.ts +18 -0
- package/dist/commands/tools/clean.js +21 -25
- package/dist/commands/tools/ppa.d.ts +26 -0
- package/dist/commands/tools/ppa.js +46 -50
- package/dist/commands/tools/skel.d.ts +18 -0
- package/dist/commands/tools/skel.js +27 -31
- package/dist/commands/tools/stat.d.ts +31 -0
- package/dist/commands/tools/stat.js +21 -25
- package/dist/commands/tools/yolk.d.ts +24 -0
- package/dist/commands/tools/yolk.js +23 -27
- package/dist/commands/update.d.ts +47 -0
- package/dist/commands/update.js +66 -70
- package/dist/commands/wardrobe/get.d.ts +23 -0
- package/dist/commands/wardrobe/get.js +26 -28
- package/dist/commands/wardrobe/list.d.ts +24 -0
- package/dist/commands/wardrobe/list.js +69 -67
- package/dist/commands/wardrobe/show.d.ts +25 -0
- package/dist/commands/wardrobe/show.js +57 -52
- package/dist/commands/wardrobe/wear.d.ts +26 -0
- package/dist/commands/wardrobe/wear.js +39 -41
- package/dist/components/finished.d.ts +15 -0
- package/dist/components/finished.js +37 -42
- package/dist/components/information.d.ts +8 -0
- package/dist/components/information.js +155 -0
- package/dist/components/install.d.ts +15 -0
- package/dist/components/install.js +31 -35
- package/dist/components/keyboard.d.ts +16 -0
- package/dist/components/keyboard.js +37 -40
- package/dist/components/location.d.ts +16 -0
- package/dist/components/location.js +38 -38
- package/dist/components/network.d.ts +19 -0
- package/dist/components/network.js +47 -48
- package/dist/components/partitions.d.ts +16 -0
- package/dist/components/partitions.js +47 -51
- 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 +53 -54
- package/dist/components/title.d.ts +12 -0
- package/dist/components/title.js +35 -0
- package/dist/components/users.d.ts +24 -0
- package/dist/components/users.js +43 -43
- package/dist/components/welcome.d.ts +13 -0
- package/dist/components/welcome.js +37 -38
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -5
- package/dist/interfaces/i-addons.d.ts +13 -0
- package/dist/interfaces/i-addons.js +8 -3
- package/dist/interfaces/i-analyze.d.ts +17 -0
- package/dist/interfaces/i-analyze.js +11 -16
- package/dist/interfaces/i-app.d.ts +14 -0
- package/dist/interfaces/i-app.js +8 -2
- package/dist/interfaces/i-branding.d.ts +36 -0
- package/dist/interfaces/i-branding.js +8 -2
- package/dist/interfaces/i-calamares-partition.d.ts +18 -0
- package/dist/interfaces/i-calamares-partition.js +3 -4
- package/dist/interfaces/i-config-tools.d.ts +18 -0
- package/dist/interfaces/i-config-tools.js +8 -2
- package/dist/interfaces/i-devices.d.ts +20 -0
- package/dist/interfaces/i-devices.js +8 -2
- package/dist/interfaces/i-distro.d.ts +27 -0
- package/dist/interfaces/i-distro.js +3 -4
- package/dist/interfaces/i-drive-list.d.ts +33 -0
- package/dist/interfaces/i-drive-list.js +3 -4
- package/dist/interfaces/i-eggs-config.d.ts +32 -0
- package/dist/interfaces/i-eggs-config.js +3 -4
- 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 +3 -4
- package/dist/interfaces/i-initrd.d.ts +13 -0
- package/dist/interfaces/i-initrd.js +8 -2
- package/dist/interfaces/i-install.d.ts +16 -0
- package/dist/interfaces/i-install.js +8 -2
- package/dist/interfaces/i-installer.d.ts +17 -0
- package/dist/interfaces/i-installer.js +8 -2
- package/dist/interfaces/i-krill-config.d.ts +33 -0
- package/dist/interfaces/i-krill-config.js +3 -4
- package/dist/interfaces/i-krill.d.ts +42 -0
- package/dist/interfaces/i-krill.js +8 -2
- package/dist/interfaces/i-materia.d.ts +41 -0
- package/dist/interfaces/i-materia.js +8 -2
- package/dist/interfaces/i-net.d.ts +16 -0
- package/dist/interfaces/i-net.js +8 -2
- package/dist/interfaces/i-packages.d.ts +29 -0
- package/dist/interfaces/i-packages.js +3 -4
- package/dist/interfaces/i-partitions.d.ts +16 -0
- package/dist/interfaces/i-partitions.js +8 -2
- package/dist/interfaces/i-pxe.d.ts +21 -0
- package/dist/interfaces/i-pxe.js +8 -39
- package/dist/interfaces/i-remix.d.ts +21 -0
- package/dist/interfaces/i-remix.js +3 -4
- package/dist/interfaces/i-settings.d.ts +39 -0
- package/dist/interfaces/i-settings.js +8 -2
- package/dist/interfaces/i-user.d.ts +14 -0
- package/dist/interfaces/i-user.js +8 -2
- package/dist/interfaces/i-workdir.d.ts +14 -0
- package/dist/interfaces/i-workdir.js +8 -2
- package/dist/interfaces/i-xkb-model.d.ts +24 -0
- package/dist/interfaces/i-xkb-model.js +8 -2
- package/dist/interfaces/index.d.ts +25 -0
- package/dist/interfaces/index.js +3 -4
- package/dist/krill/modules/add-user.d.ts +20 -0
- package/dist/krill/modules/add-user.js +11 -15
- package/dist/krill/modules/bootloader-config-arch.d.ts +14 -0
- package/dist/krill/modules/bootloader-config-arch.js +15 -11
- package/dist/krill/modules/bootloader-config-debian.d.ts +10 -0
- package/dist/krill/modules/bootloader-config-debian.js +20 -16
- package/dist/krill/modules/bootloader-config.d.ts +10 -0
- package/dist/krill/modules/bootloader-config.js +3 -6
- package/dist/krill/modules/bootloader.d.ts +14 -0
- package/dist/krill/modules/bootloader.js +9 -13
- package/dist/krill/modules/change-password.d.ts +15 -0
- package/dist/krill/modules/change-password.js +5 -8
- package/dist/krill/modules/del-live-user.d.ts +14 -0
- package/dist/krill/modules/del-live-user.js +8 -12
- package/dist/krill/modules/fstab.d.ts +14 -0
- package/dist/krill/modules/fstab.js +69 -46
- package/dist/krill/modules/grubcfg.d.ts +17 -0
- package/dist/krill/modules/grubcfg.js +8 -17
- package/dist/krill/modules/hostname.d.ts +13 -0
- package/dist/krill/modules/hostname.js +11 -17
- package/dist/krill/modules/initramfs-cfg.d.ts +14 -0
- package/dist/krill/modules/initramfs-cfg.js +6 -15
- package/dist/krill/modules/initramfs.d.ts +13 -0
- package/dist/krill/modules/initramfs.js +17 -19
- package/dist/krill/modules/locale-cfg.d.ts +10 -0
- package/dist/krill/modules/locale-cfg.js +8 -12
- package/dist/krill/modules/locale.d.ts +13 -0
- package/dist/krill/modules/locale.js +7 -11
- package/dist/krill/modules/m-keyboard.d.ts +14 -0
- package/dist/krill/modules/m-keyboard.js +14 -18
- package/dist/krill/modules/m-timezone.d.ts +14 -0
- package/dist/krill/modules/m-timezone.js +8 -12
- package/dist/krill/modules/machine-id.d.ts +15 -0
- package/dist/krill/modules/machine-id.js +6 -10
- package/dist/krill/modules/mkfs.d.ts +13 -0
- package/dist/krill/modules/mkfs.js +33 -23
- package/dist/krill/modules/mount-fs.d.ts +17 -0
- package/dist/krill/modules/mount-fs.js +20 -26
- package/dist/krill/modules/mount-vfs.d.ts +17 -0
- package/dist/krill/modules/mount-vfs.js +16 -21
- package/dist/krill/modules/network-cfg.d.ts +19 -0
- package/dist/krill/modules/network-cfg.js +28 -31
- package/dist/krill/modules/packages.d.ts +14 -0
- package/dist/krill/modules/packages.js +17 -21
- package/dist/krill/modules/partition.d.ts +20 -0
- package/dist/krill/modules/partition.js +80 -86
- package/dist/krill/modules/remove-installer-link.d.ts +13 -0
- package/dist/krill/modules/remove-installer-link.js +7 -11
- package/dist/krill/modules/umount.d.ts +14 -0
- package/dist/krill/modules/umount.js +9 -13
- package/dist/krill/modules/unpackfs.d.ts +13 -0
- package/dist/krill/modules/unpackfs.js +7 -11
- package/dist/krill/prepare.d.ts +77 -0
- package/dist/krill/{krill-prepare.js → prepare.js} +136 -130
- package/dist/krill/sequence.d.ts +156 -0
- package/dist/krill/sequence.js +640 -0
- package/dist/lib/cli-autologin.d.ts +43 -0
- package/dist/lib/cli-autologin.js +88 -92
- package/dist/lib/get_address.d.ts +8 -0
- package/dist/lib/get_address.js +9 -11
- package/dist/lib/get_dns.d.ts +8 -0
- package/dist/lib/get_dns.js +9 -11
- package/dist/lib/get_domain.d.ts +8 -0
- package/dist/lib/get_domain.js +9 -11
- package/dist/lib/get_gateway.d.ts +8 -0
- package/dist/lib/get_gateway.js +9 -11
- package/dist/lib/get_hostname.d.ts +8 -0
- package/dist/lib/get_hostname.js +9 -11
- package/dist/lib/get_netmask.d.ts +8 -0
- package/dist/lib/get_netmask.js +9 -11
- package/dist/lib/get_password.d.ts +8 -0
- package/dist/lib/get_password.js +10 -13
- package/dist/lib/get_userfullname.d.ts +8 -0
- package/dist/lib/get_userfullname.js +9 -11
- package/dist/lib/get_username.d.ts +8 -0
- package/dist/lib/get_username.js +9 -12
- package/dist/lib/kill_me_softly.d.ts +11 -0
- package/dist/lib/kill_me_softly.js +19 -24
- package/dist/lib/select_address_type.d.ts +8 -0
- package/dist/lib/select_address_type.js +9 -12
- package/dist/lib/select_filesystem_type.d.ts +8 -0
- package/dist/lib/select_filesystem_type.js +19 -17
- package/dist/lib/select_installation_device.d.ts +8 -0
- package/dist/lib/select_installation_device.js +11 -15
- package/dist/lib/select_installation_mode.d.ts +8 -0
- package/dist/lib/select_installation_mode.js +9 -11
- package/dist/lib/select_interface.d.ts +8 -0
- package/dist/lib/select_interface.js +9 -12
- package/dist/lib/select_keyboard_layout.d.ts +11 -0
- package/dist/lib/select_keyboard_layout.js +11 -15
- package/dist/lib/select_keyboard_model.d.ts +11 -0
- package/dist/lib/select_keyboard_model.js +11 -15
- package/dist/lib/select_keyboard_option.d.ts +11 -0
- package/dist/lib/select_keyboard_option.js +11 -15
- package/dist/lib/select_keyboard_variant.d.ts +11 -0
- package/dist/lib/select_keyboard_variant.js +11 -15
- package/dist/lib/select_languages.d.ts +8 -0
- package/dist/lib/select_languages.js +11 -15
- package/dist/lib/select_regions.d.ts +8 -0
- package/dist/lib/select_regions.js +9 -11
- package/dist/lib/select_user_swap_choice.d.ts +8 -0
- package/dist/lib/select_user_swap_choice.js +13 -17
- package/dist/lib/select_zones.d.ts +8 -0
- package/dist/lib/select_zones.js +9 -11
- package/dist/lib/utils.d.ts +34 -0
- package/dist/lib/utils.js +24 -14
- package/manpages/doc/man/eggs.1.gz +0 -0
- package/manpages/doc/man/eggs.html +130 -76
- package/package.json +55 -74
- package/scripts/_eggs +9 -7
- package/scripts/eggs.bash +4 -4
- package/LICENSE +0 -339
- package/bin/dev +0 -17
- package/bin/run +0 -5
- package/conf/exclude.list.custom +0 -3
- package/dist/components/elements/information.js +0 -194
- package/dist/components/elements/steps.js +0 -152
- package/dist/components/elements/title.js +0 -36
- package/dist/interfaces/i-filters.js +0 -3
- package/dist/krill/krill-sequence.js +0 -645
- package/dist/lib/dependencies.js +0 -120
- package/manpages/doc/man/README.md +0 -0
- /package/conf/{exclude.list.usr → exclude.list.d/usr.list} +0 -0
package/dist/classes/utils.js
CHANGED
|
@@ -1,32 +1,33 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* eslint-disable valid-jsdoc */
|
|
3
1
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const child_process_1 = require("child_process");
|
|
20
|
-
const netmask_1 = require("netmask");
|
|
2
|
+
* ./src/classes/utils.tsx
|
|
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 shx from 'shelljs';
|
|
9
|
+
import fs from 'fs';
|
|
10
|
+
import dns from 'dns';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import os from 'os';
|
|
13
|
+
import inquirer from 'inquirer';
|
|
14
|
+
import chalk from 'chalk';
|
|
15
|
+
import { spawnSync } from 'child_process';
|
|
16
|
+
import { Netmask } from 'netmask';
|
|
21
17
|
// libraries
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
import { exec } from '../lib/utils.js';
|
|
19
|
+
import Distro from './distro.js';
|
|
20
|
+
// pjson
|
|
21
|
+
import { createRequire } from 'module';
|
|
22
|
+
const require = createRequire(import.meta.url);
|
|
24
23
|
const pjson = require('../../package.json');
|
|
24
|
+
// __dirname
|
|
25
|
+
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
25
26
|
/**
|
|
26
27
|
* Utils: general porpourse utils
|
|
27
28
|
* @remarks all the utilities
|
|
28
29
|
*/
|
|
29
|
-
class Utils {
|
|
30
|
+
export default class Utils {
|
|
30
31
|
/**
|
|
31
32
|
* Custom function to sort object keys
|
|
32
33
|
* @param obj
|
|
@@ -49,7 +50,7 @@ class Utils {
|
|
|
49
50
|
* @returns value
|
|
50
51
|
*/
|
|
51
52
|
static searchOnFile(file = '', search = '') {
|
|
52
|
-
const lines =
|
|
53
|
+
const lines = fs.readFileSync(file, 'utf8').split("\n");
|
|
53
54
|
let value = '';
|
|
54
55
|
lines.forEach(line => {
|
|
55
56
|
line = line.replace(/\s+/g, ' '); // Remove multiple spaces with single space
|
|
@@ -83,9 +84,9 @@ class Utils {
|
|
|
83
84
|
*/
|
|
84
85
|
static isSystemd() {
|
|
85
86
|
const checkFile = '/tmp/checksystemd';
|
|
86
|
-
|
|
87
|
-
const isSystemd =
|
|
88
|
-
|
|
87
|
+
shx.exec(`ps -p 1 -o comm= >${checkFile}`);
|
|
88
|
+
const isSystemd = fs.readFileSync(checkFile).includes('systemd');
|
|
89
|
+
shx.exec(`rm ${checkFile}`);
|
|
89
90
|
return isSystemd;
|
|
90
91
|
}
|
|
91
92
|
/**
|
|
@@ -94,9 +95,9 @@ class Utils {
|
|
|
94
95
|
*/
|
|
95
96
|
static isSysvinit() {
|
|
96
97
|
const checkFile = '/tmp/checkinit';
|
|
97
|
-
|
|
98
|
-
const isSysvinit =
|
|
99
|
-
|
|
98
|
+
shx.exec(`ps -p 1 -o comm= >${checkFile}`);
|
|
99
|
+
const isSysvinit = fs.readFileSync(checkFile).includes('init');
|
|
100
|
+
shx.exec(`rm ${checkFile}`);
|
|
100
101
|
return isSysvinit;
|
|
101
102
|
}
|
|
102
103
|
/**
|
|
@@ -107,14 +108,15 @@ class Utils {
|
|
|
107
108
|
* ro root=UUID=3dc0f202-8ac8-4686-9316-dddcec060c48 initrd=boot\initrd.img-5.15.0-0.bpo.3-amd64 // Conidi
|
|
108
109
|
*/
|
|
109
110
|
static vmlinuz() {
|
|
110
|
-
let distro = new
|
|
111
|
+
let distro = new Distro();
|
|
111
112
|
let vmlinuz = '';
|
|
113
|
+
// patch per raspberry arm64
|
|
112
114
|
// find vmlinuz in /proc/cmdline
|
|
113
|
-
const cmdline =
|
|
115
|
+
const cmdline = fs.readFileSync('/proc/cmdline', 'utf8').split(" ");
|
|
114
116
|
cmdline.forEach(cmd => {
|
|
115
117
|
if (cmd.includes('BOOT_IMAGE')) {
|
|
116
118
|
vmlinuz = cmd.substring(cmd.indexOf('=') + 1);
|
|
117
|
-
if (!
|
|
119
|
+
if (!fs.existsSync(vmlinuz) && fs.existsSync(`/boot${vmlinuz}`)) {
|
|
118
120
|
vmlinuz = `/boot${vmlinuz}`;
|
|
119
121
|
}
|
|
120
122
|
}
|
|
@@ -128,10 +130,14 @@ class Utils {
|
|
|
128
130
|
* but =/vmlinuz-linux exists in /boot/
|
|
129
131
|
*/
|
|
130
132
|
if (vmlinuz === '/vmlinuz-linux' || vmlinuz === '/vmlinuz-linux-zen') {
|
|
131
|
-
if (
|
|
133
|
+
if (fs.existsSync(`/boot${vmlinuz}`)) {
|
|
132
134
|
vmlinuz = `/boot${vmlinuz}`;
|
|
133
135
|
}
|
|
134
136
|
}
|
|
137
|
+
if (process.arch === 'arm64') {
|
|
138
|
+
const kernelVersion = shx.exec('uname -r', { silent: true }).stdout.trim();
|
|
139
|
+
vmlinuz = `/boot/vmlinuz-${kernelVersion}`;
|
|
140
|
+
}
|
|
135
141
|
/**
|
|
136
142
|
* If vmlinuz not found
|
|
137
143
|
*/
|
|
@@ -156,7 +162,7 @@ class Utils {
|
|
|
156
162
|
/**
|
|
157
163
|
* if not exists exit
|
|
158
164
|
*/
|
|
159
|
-
if (!
|
|
165
|
+
if (!fs.existsSync(vmlinuz)) {
|
|
160
166
|
console.log(vmlinuz + ' not exists!');
|
|
161
167
|
process.exit();
|
|
162
168
|
}
|
|
@@ -171,7 +177,7 @@ class Utils {
|
|
|
171
177
|
let initrd = 'initrd.img';
|
|
172
178
|
let version = 'linux';
|
|
173
179
|
let suffix = '';
|
|
174
|
-
let distro = new
|
|
180
|
+
let distro = new Distro();
|
|
175
181
|
if (distro.familyId === 'debian') {
|
|
176
182
|
version = vmlinuz.substring(vmlinuz.indexOf('-') + 1);
|
|
177
183
|
}
|
|
@@ -190,11 +196,11 @@ class Utils {
|
|
|
190
196
|
*/
|
|
191
197
|
static machineId() {
|
|
192
198
|
let result = '';
|
|
193
|
-
if (
|
|
194
|
-
result =
|
|
199
|
+
if (fs.existsSync('/etc/machine-id')) {
|
|
200
|
+
result = fs.readFileSync('/etc/machine-id', 'utf-8').trim();
|
|
195
201
|
}
|
|
196
|
-
else if (
|
|
197
|
-
result =
|
|
202
|
+
else if (fs.existsSync('/var/lib/dbus/machine-id')) {
|
|
203
|
+
result = fs.readFileSync('/var/lib/dbus/machine-id', 'utf-8').trim();
|
|
198
204
|
}
|
|
199
205
|
return result;
|
|
200
206
|
}
|
|
@@ -203,19 +209,19 @@ class Utils {
|
|
|
203
209
|
* @param msg
|
|
204
210
|
*/
|
|
205
211
|
static warning(msg = '') {
|
|
206
|
-
console.log(pjson.shortName + ' >>> ' +
|
|
212
|
+
console.log(pjson.shortName + ' >>> ' + chalk.cyanBright(msg) + '.');
|
|
207
213
|
}
|
|
208
214
|
static error(msg = '') {
|
|
209
|
-
console.error(pjson.shortName + ' >>> ' +
|
|
215
|
+
console.error(pjson.shortName + ' >>> ' + chalk.bgMagentaBright(chalk.whiteBright(msg)) + '.');
|
|
210
216
|
}
|
|
211
217
|
/**
|
|
212
218
|
* Return the primary user's name
|
|
213
219
|
*/
|
|
214
220
|
static async getPrimaryUser() {
|
|
215
|
-
let primaryUser = (await
|
|
221
|
+
let primaryUser = (await exec('/usr/bin/logname 2>/dev/null || echo ${SUDO_USER:-${USER}}', { echo: false, ignore: false, capture: true })).data.trim();
|
|
216
222
|
// if logname don't work seem we get '' so:
|
|
217
223
|
if (primaryUser === '') {
|
|
218
|
-
primaryUser =
|
|
224
|
+
primaryUser = shx.exec('echo $SUDO_USER', { silent: true }).stdout.trim();
|
|
219
225
|
}
|
|
220
226
|
if (primaryUser === '') {
|
|
221
227
|
console.log(`Cannot find your user name...`);
|
|
@@ -228,7 +234,7 @@ class Utils {
|
|
|
228
234
|
* @param device
|
|
229
235
|
*/
|
|
230
236
|
static uuid(device) {
|
|
231
|
-
const uuid =
|
|
237
|
+
const uuid = shx.exec(`blkid -s UUID -o value ${device}`).stdout.trim();
|
|
232
238
|
return uuid;
|
|
233
239
|
}
|
|
234
240
|
/**
|
|
@@ -268,8 +274,8 @@ class Utils {
|
|
|
268
274
|
* @returns {number} Numero degli snapshot presenti
|
|
269
275
|
*/
|
|
270
276
|
static getSnapshotCount(snapshot_dir = '/') {
|
|
271
|
-
if (
|
|
272
|
-
const files =
|
|
277
|
+
if (fs.existsSync(snapshot_dir)) {
|
|
278
|
+
const files = fs.readdirSync(snapshot_dir);
|
|
273
279
|
let nIsos = 0;
|
|
274
280
|
for (const f of files) {
|
|
275
281
|
if (f.endsWith('.iso')) {
|
|
@@ -286,7 +292,7 @@ class Utils {
|
|
|
286
292
|
*/
|
|
287
293
|
static getSnapshotSize(snapshot_dir = '/') {
|
|
288
294
|
let fileSizeInBytes = 0;
|
|
289
|
-
const size =
|
|
295
|
+
const size = shx.exec(`/usr/bin/find ${snapshot_dir} -maxdepth 1 -type f -name '*.iso' -exec du -sc {} + | tail -1 | awk '{print $1}'`, { silent: true }).stdout.trim();
|
|
290
296
|
if (size === '') {
|
|
291
297
|
fileSizeInBytes = 0;
|
|
292
298
|
}
|
|
@@ -304,7 +310,7 @@ class Utils {
|
|
|
304
310
|
if (process.arch === 'ia32') {
|
|
305
311
|
arch = 'i386';
|
|
306
312
|
//
|
|
307
|
-
if (
|
|
313
|
+
if (shx.exec('uname -m', { silent: true }).stdout.trim() === 'x86_64') {
|
|
308
314
|
arch = 'amd64';
|
|
309
315
|
}
|
|
310
316
|
}
|
|
@@ -325,7 +331,7 @@ class Utils {
|
|
|
325
331
|
let format = '';
|
|
326
332
|
if (process.arch === 'ia32') {
|
|
327
333
|
format = 'i386-efi';
|
|
328
|
-
if (
|
|
334
|
+
if (shx.exec('uname -m', { silent: true }).stdout.trim() === 'x86_64') {
|
|
329
335
|
format = 'x86_64-efi';
|
|
330
336
|
}
|
|
331
337
|
}
|
|
@@ -412,7 +418,7 @@ class Utils {
|
|
|
412
418
|
fileSizeInBytes = 0; // this.getLiveRootSpace()
|
|
413
419
|
}
|
|
414
420
|
else {
|
|
415
|
-
fileSizeInBytes = Number(
|
|
421
|
+
fileSizeInBytes = Number(shx.exec(`df /home | /usr/bin/awk 'NR==2 {print $3}'`, {
|
|
416
422
|
silent: true
|
|
417
423
|
}).stdout);
|
|
418
424
|
}
|
|
@@ -430,9 +436,9 @@ class Utils {
|
|
|
430
436
|
squashFs = '/live/boot-dev/antiX/linuxfs';
|
|
431
437
|
}
|
|
432
438
|
// Ottengo la dimensione del file compresso
|
|
433
|
-
const compressedFs =
|
|
439
|
+
const compressedFs = fs.statSync(squashFs).size;
|
|
434
440
|
// get compression factor by reading the linuxfs squasfs file, if available
|
|
435
|
-
const compressedFs_compression_type =
|
|
441
|
+
const compressedFs_compression_type = shx.exec(`dd if=${compressedFs} bs=1 skip=20 count=2 status=none 2>/dev/null| /usr/bin/od -An -tdI`);
|
|
436
442
|
let compression_factor = 0;
|
|
437
443
|
if (compressedFs_compression_type === '1') {
|
|
438
444
|
compression_factor = 37; // gzip
|
|
@@ -453,9 +459,9 @@ class Utils {
|
|
|
453
459
|
compression_factor = 30; // anything else or linuxfs not reachable (toram), should be pretty conservative
|
|
454
460
|
}
|
|
455
461
|
let rootfs_file_size = 0;
|
|
456
|
-
const linuxfs_file_size = (Number(
|
|
457
|
-
if (
|
|
458
|
-
rootfs_file_size = Number(
|
|
462
|
+
const linuxfs_file_size = (Number(shx.exec('df /live/linux --output=used --total | /usr/bin/tail -n1').stdout.trim()) * 1024 * 100) / compression_factor;
|
|
463
|
+
if (fs.existsSync('/live/persist-root')) {
|
|
464
|
+
rootfs_file_size = Number(shx.exec('df /live/persist-root --output=used --total | /usr/bin/tail -n1').stdout.trim()) * 1024;
|
|
459
465
|
}
|
|
460
466
|
let rootSpaceNeeded;
|
|
461
467
|
if (type === 'mx') {
|
|
@@ -509,7 +515,7 @@ class Utils {
|
|
|
509
515
|
*
|
|
510
516
|
*/
|
|
511
517
|
static rootPenguin() {
|
|
512
|
-
return
|
|
518
|
+
return path.resolve(__dirname, '../../');
|
|
513
519
|
}
|
|
514
520
|
/**
|
|
515
521
|
* return the short name of the package: eggs
|
|
@@ -537,7 +543,7 @@ class Utils {
|
|
|
537
543
|
*/
|
|
538
544
|
static getDebianVersion() {
|
|
539
545
|
const cmd = "cat /etc/debian_version | /usr/bin/cut -f1 -d'.'";
|
|
540
|
-
const version = Number(
|
|
546
|
+
const version = Number(shx.exec(cmd, { silent: true }).stdout);
|
|
541
547
|
return version;
|
|
542
548
|
}
|
|
543
549
|
/**
|
|
@@ -567,7 +573,17 @@ class Utils {
|
|
|
567
573
|
static isMountpoint(path = '') {
|
|
568
574
|
const cmd = `mountpoint -q ${path}`;
|
|
569
575
|
// return 0 if the directory is a mountpoint, non-zero if not.
|
|
570
|
-
const result =
|
|
576
|
+
const result = shx.exec(cmd, { silent: true }).code;
|
|
577
|
+
return result === 0;
|
|
578
|
+
}
|
|
579
|
+
/**
|
|
580
|
+
*
|
|
581
|
+
* @param device
|
|
582
|
+
* @returns
|
|
583
|
+
*/
|
|
584
|
+
static isBlockDevice(device = '') {
|
|
585
|
+
const cmd = `lsblk -d -o name | grep ${device}`;
|
|
586
|
+
const result = shx.exec(cmd, { silent: true }).code;
|
|
571
587
|
return result === 0;
|
|
572
588
|
}
|
|
573
589
|
/**
|
|
@@ -591,14 +607,14 @@ class Utils {
|
|
|
591
607
|
* get the kernel version
|
|
592
608
|
*/
|
|
593
609
|
static kernelVersion() {
|
|
594
|
-
return
|
|
610
|
+
return os.release();
|
|
595
611
|
}
|
|
596
612
|
/**
|
|
597
613
|
* return the name of network device
|
|
598
614
|
*/
|
|
599
615
|
static async iface() {
|
|
600
616
|
// return shx.exec(`ifconfig | awk 'FNR==1 { print $1 }' | tr --d :`, { silent: true }).stdout.trim()
|
|
601
|
-
const interfaces = Object.keys(
|
|
617
|
+
const interfaces = Object.keys(os.networkInterfaces());
|
|
602
618
|
let netDeviceName = '';
|
|
603
619
|
for (const k in interfaces) {
|
|
604
620
|
if (interfaces[k] != 'lo') {
|
|
@@ -611,7 +627,7 @@ class Utils {
|
|
|
611
627
|
* address
|
|
612
628
|
*/
|
|
613
629
|
static address() {
|
|
614
|
-
const interfaces =
|
|
630
|
+
const interfaces = os.networkInterfaces();
|
|
615
631
|
let address = '';
|
|
616
632
|
if (interfaces !== undefined) {
|
|
617
633
|
for (const devName in interfaces) {
|
|
@@ -636,7 +652,7 @@ class Utils {
|
|
|
636
652
|
* netmask
|
|
637
653
|
*/
|
|
638
654
|
static netmask() {
|
|
639
|
-
const interfaces =
|
|
655
|
+
const interfaces = os.networkInterfaces();
|
|
640
656
|
let netmask = '';
|
|
641
657
|
if (interfaces !== undefined) {
|
|
642
658
|
for (const devName in interfaces) {
|
|
@@ -661,7 +677,7 @@ class Utils {
|
|
|
661
677
|
* cidr
|
|
662
678
|
*/
|
|
663
679
|
static cidr() {
|
|
664
|
-
const interfaces =
|
|
680
|
+
const interfaces = os.networkInterfaces();
|
|
665
681
|
let cidr = '';
|
|
666
682
|
if (interfaces !== undefined) {
|
|
667
683
|
for (const devName in interfaces) {
|
|
@@ -689,27 +705,27 @@ class Utils {
|
|
|
689
705
|
* broadcast
|
|
690
706
|
*/
|
|
691
707
|
static broadcast() {
|
|
692
|
-
let n = new
|
|
708
|
+
let n = new Netmask(Utils.cidr());
|
|
693
709
|
return n.broadcast;
|
|
694
710
|
}
|
|
695
711
|
/**
|
|
696
712
|
* dns
|
|
697
713
|
*/
|
|
698
714
|
static getDns() {
|
|
699
|
-
return
|
|
715
|
+
return dns.getServers();
|
|
700
716
|
}
|
|
701
717
|
/**
|
|
702
718
|
* getDomain
|
|
703
719
|
*/
|
|
704
720
|
static getDomain() {
|
|
705
|
-
return
|
|
721
|
+
return shx.exec('domainname', { silent: true }).stdout.trim();
|
|
706
722
|
// return shx.exec(`route -n | grep 'UG[ \t]' | awk '{print $2}'`, { silent: true }).stdout.trim()
|
|
707
723
|
}
|
|
708
724
|
/**
|
|
709
725
|
* @returns gateway
|
|
710
726
|
*/
|
|
711
727
|
static gateway() {
|
|
712
|
-
return
|
|
728
|
+
return shx.exec(`ip r | grep 'default' | awk '{print $3}'`, { silent: true }).stdout.trim();
|
|
713
729
|
//return shx.exec(`route -n | grep 'UG[ \t]' | awk '{print $2}'`, { silent: true }).stdout.trim()
|
|
714
730
|
}
|
|
715
731
|
/**
|
|
@@ -721,7 +737,7 @@ class Utils {
|
|
|
721
737
|
text = text.trim() + '\n';
|
|
722
738
|
text = text.trim() + '\n';
|
|
723
739
|
file = file.trim();
|
|
724
|
-
|
|
740
|
+
fs.writeFileSync(file, text);
|
|
725
741
|
}
|
|
726
742
|
/**
|
|
727
743
|
*
|
|
@@ -735,7 +751,7 @@ class Utils {
|
|
|
735
751
|
text += `# ==> Perri\'s Brewery edition <== \n\n`;
|
|
736
752
|
text += cmd;
|
|
737
753
|
Utils.write(file, text);
|
|
738
|
-
|
|
754
|
+
shx.chmod('+x', file);
|
|
739
755
|
}
|
|
740
756
|
/**
|
|
741
757
|
*
|
|
@@ -813,7 +829,7 @@ class Utils {
|
|
|
813
829
|
msg = 'Press a key to continue...';
|
|
814
830
|
}
|
|
815
831
|
console.log(msg);
|
|
816
|
-
const pressKeyToExit =
|
|
832
|
+
const pressKeyToExit = spawnSync('read _ ', { shell: true, stdio: [0, 1, 2] });
|
|
817
833
|
if (!procContinue) {
|
|
818
834
|
process.exit(0);
|
|
819
835
|
}
|
|
@@ -828,16 +844,16 @@ class Utils {
|
|
|
828
844
|
console.log(' E G G S: the reproductive system of penguins');
|
|
829
845
|
console.log('');
|
|
830
846
|
console.log(Utils.flag());
|
|
831
|
-
console.log('command: ' +
|
|
847
|
+
console.log('command: ' + chalk.bgBlack.white(command) + '\n');
|
|
832
848
|
}
|
|
833
849
|
/**
|
|
834
850
|
*
|
|
835
851
|
* @returns flag
|
|
836
852
|
*/
|
|
837
853
|
static flag() {
|
|
838
|
-
return
|
|
839
|
-
|
|
840
|
-
|
|
854
|
+
return chalk.bgGreen.whiteBright(' ' + pjson.name + ' ') +
|
|
855
|
+
chalk.bgWhite.blue(" Perri's Brewery edition ") +
|
|
856
|
+
chalk.bgRed.whiteBright(' ver. ' + pjson.version + ' ');
|
|
841
857
|
}
|
|
842
858
|
/**
|
|
843
859
|
*
|
|
@@ -870,11 +886,10 @@ class Utils {
|
|
|
870
886
|
* @returns wardrobe
|
|
871
887
|
*/
|
|
872
888
|
static async wardrobe() {
|
|
873
|
-
let wardrobe = `${
|
|
889
|
+
let wardrobe = `${os.homedir()}/.wardrobe`;
|
|
874
890
|
if (Utils.isRoot()) {
|
|
875
891
|
wardrobe = `/home/${await Utils.getPrimaryUser()}/.wardrobe`;
|
|
876
892
|
}
|
|
877
893
|
return wardrobe;
|
|
878
894
|
}
|
|
879
895
|
}
|
|
880
|
-
exports.default = Utils;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/xdg.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
|
+
* Xdg: xdg-user-dirs, etc
|
|
10
|
+
* @remarks all the utilities
|
|
11
|
+
*/
|
|
12
|
+
export default class Xdg {
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* @param olduser
|
|
16
|
+
* @param newuser
|
|
17
|
+
* @param chroot
|
|
18
|
+
*/
|
|
19
|
+
static autologin(olduser: string, newuser: string, chroot?: string): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @param user
|
|
23
|
+
* @param chroot
|
|
24
|
+
* @param verbose
|
|
25
|
+
*/
|
|
26
|
+
static create(user: string, chroot: string, traduce?: boolean, verbose?: boolean): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
* @param chroot
|
|
30
|
+
* @param path
|
|
31
|
+
* @param verbose
|
|
32
|
+
*/
|
|
33
|
+
static mk(chroot: string, path: string, verbose?: boolean): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Copia della configurazione in /etc/skel
|
|
36
|
+
* @param user
|
|
37
|
+
* @param verbose
|
|
38
|
+
*/
|
|
39
|
+
static skel(user: string, verbose?: boolean): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
*
|
|
42
|
+
* @param xdg_dir
|
|
43
|
+
*/
|
|
44
|
+
static traduce(xdg_dir?: string, traduce?: boolean): string;
|
|
45
|
+
}
|