penguins-eggs 9.8.1 → 10.0.1
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 +62 -62
- package/README.md +43 -40
- package/bin/dev.cmd +1 -1
- package/bin/dev.js +6 -6
- package/bin/run.js +3 -5
- package/conf/tools.yaml +1 -1
- 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 +42 -47
- package/dist/classes/daddy.d.ts +18 -0
- package/dist/classes/daddy.js +92 -98
- package/dist/classes/distro.d.ts +26 -0
- package/dist/classes/distro.js +36 -37
- package/dist/classes/families/archlinux.d.ts +61 -0
- package/dist/classes/families/archlinux.js +52 -107
- package/dist/classes/families/debian.d.ts +65 -0
- package/dist/classes/families/debian.js +67 -142
- package/dist/classes/families/fedora.d.ts +52 -0
- package/dist/classes/families/fedora.js +42 -98
- 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 +44 -96
- package/dist/classes/incubation/branding.d.ts +17 -0
- package/dist/classes/incubation/branding.js +32 -36
- package/dist/classes/incubation/distros/bionic.d.ts +32 -0
- package/dist/classes/incubation/distros/bionic.js +11 -16
- package/dist/classes/incubation/distros/buster.d.ts +32 -0
- package/dist/classes/incubation/distros/buster.js +13 -18
- package/dist/classes/incubation/distros/focal.d.ts +32 -0
- package/dist/classes/incubation/distros/focal.js +11 -16
- package/dist/classes/incubation/distros/jessie.d.ts +31 -0
- package/dist/classes/incubation/distros/jessie.js +8 -13
- package/dist/classes/incubation/distros/rolling.d.ts +32 -0
- package/dist/classes/incubation/distros/rolling.js +11 -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 -20
- 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 +135 -131
- package/dist/classes/incubation/incubator.d.ts +40 -0
- package/dist/classes/incubation/incubator.js +90 -89
- 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 +40 -42
- package/dist/classes/keyboards.d.ts +50 -0
- package/dist/classes/keyboards.js +108 -105
- 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 +14 -18
- package/dist/classes/ovary.d.ts +205 -0
- package/dist/classes/ovary.js +1281 -1294
- package/dist/classes/pacman.d.ts +149 -0
- package/dist/classes/pacman.js +344 -418
- package/dist/classes/pve-live.d.ts +17 -0
- package/dist/classes/pve-live.js +22 -24
- package/dist/classes/pxe.d.ts +65 -0
- package/dist/classes/pxe.js +204 -206
- package/dist/classes/settings.d.ts +53 -0
- package/dist/classes/settings.js +91 -94
- 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 +34 -38
- package/dist/classes/tailor.d.ts +46 -0
- package/dist/classes/tailor.js +223 -239
- package/dist/classes/tools.d.ts +30 -0
- package/dist/classes/tools.js +18 -22
- package/dist/classes/users.d.ts +28 -0
- package/dist/classes/users.js +18 -22
- package/dist/classes/utils.d.ts +318 -0
- package/dist/classes/utils.js +78 -78
- 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 +53 -57
- package/dist/commands/adapt.d.ts +17 -0
- package/dist/commands/adapt.js +17 -21
- package/dist/commands/analyze.d.ts +26 -0
- package/dist/commands/analyze.js +56 -67
- package/dist/commands/calamares.d.ts +29 -0
- package/dist/commands/calamares.js +44 -48
- package/dist/commands/config.d.ts +36 -0
- package/dist/commands/config.js +115 -137
- package/dist/commands/cuckoo.d.ts +16 -0
- package/dist/commands/cuckoo.js +20 -24
- package/dist/commands/dad.d.ts +19 -0
- package/dist/commands/dad.js +20 -24
- package/dist/commands/export/deb.d.ts +19 -0
- package/dist/commands/export/deb.js +19 -23
- package/dist/commands/export/iso.d.ts +19 -0
- package/dist/commands/export/iso.js +19 -23
- package/dist/commands/install.d.ts +37 -0
- package/dist/commands/install.js +46 -50
- package/dist/commands/kill.d.ts +24 -0
- package/dist/commands/kill.js +25 -29
- package/dist/commands/mom.d.ts +16 -0
- package/dist/commands/mom.js +16 -18
- package/dist/commands/produce.d.ts +33 -0
- package/dist/commands/produce.js +64 -66
- package/dist/commands/status.d.ts +23 -0
- package/dist/commands/status.js +10 -14
- package/dist/commands/syncfrom.d.ts +45 -0
- package/dist/commands/syncfrom.js +85 -89
- package/dist/commands/syncto.d.ts +40 -0
- package/dist/commands/syncto.js +91 -95
- package/dist/commands/tools/clean.d.ts +18 -0
- package/dist/commands/tools/clean.js +17 -21
- package/dist/commands/tools/ppa.d.ts +26 -0
- package/dist/commands/tools/ppa.js +41 -45
- package/dist/commands/tools/skel.d.ts +18 -0
- package/dist/commands/tools/skel.js +22 -26
- package/dist/commands/tools/stat.d.ts +31 -0
- package/dist/commands/tools/stat.js +15 -19
- package/dist/commands/tools/yolk.d.ts +24 -0
- package/dist/commands/tools/yolk.js +19 -23
- package/dist/commands/update.d.ts +47 -0
- package/dist/commands/update.js +62 -66
- package/dist/commands/wardrobe/get.d.ts +23 -0
- package/dist/commands/wardrobe/get.js +19 -23
- package/dist/commands/wardrobe/list.d.ts +24 -0
- package/dist/commands/wardrobe/list.js +61 -60
- package/dist/commands/wardrobe/show.d.ts +25 -0
- package/dist/commands/wardrobe/show.js +50 -47
- package/dist/commands/wardrobe/wear.d.ts +26 -0
- package/dist/commands/wardrobe/wear.js +32 -36
- 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 +50 -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 +7 -10
- 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 -2
- 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 +33 -37
- 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 +10 -13
- 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 +16 -20
- 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 +78 -84
- 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} +118 -124
- package/dist/krill/sequence.d.ts +156 -0
- package/dist/krill/{krill-sequence.js → sequence.js} +166 -170
- 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 +15 -18
- 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 +10 -10
- package/package.json +48 -69
- package/LICENSE +0 -339
- package/bin/dev +0 -17
- package/bin/run +0 -5
- 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/lib/dependencies.js +0 -121
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,15 +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 = '';
|
|
112
113
|
// patch per raspberry arm64
|
|
113
114
|
// find vmlinuz in /proc/cmdline
|
|
114
|
-
const cmdline =
|
|
115
|
+
const cmdline = fs.readFileSync('/proc/cmdline', 'utf8').split(" ");
|
|
115
116
|
cmdline.forEach(cmd => {
|
|
116
117
|
if (cmd.includes('BOOT_IMAGE')) {
|
|
117
118
|
vmlinuz = cmd.substring(cmd.indexOf('=') + 1);
|
|
118
|
-
if (!
|
|
119
|
+
if (!fs.existsSync(vmlinuz) && fs.existsSync(`/boot${vmlinuz}`)) {
|
|
119
120
|
vmlinuz = `/boot${vmlinuz}`;
|
|
120
121
|
}
|
|
121
122
|
}
|
|
@@ -129,12 +130,12 @@ class Utils {
|
|
|
129
130
|
* but =/vmlinuz-linux exists in /boot/
|
|
130
131
|
*/
|
|
131
132
|
if (vmlinuz === '/vmlinuz-linux' || vmlinuz === '/vmlinuz-linux-zen') {
|
|
132
|
-
if (
|
|
133
|
+
if (fs.existsSync(`/boot${vmlinuz}`)) {
|
|
133
134
|
vmlinuz = `/boot${vmlinuz}`;
|
|
134
135
|
}
|
|
135
136
|
}
|
|
136
137
|
if (process.arch === 'arm64') {
|
|
137
|
-
const kernelVersion =
|
|
138
|
+
const kernelVersion = shx.exec('uname -r', { silent: true }).stdout.trim();
|
|
138
139
|
vmlinuz = `/boot/vmlinuz-${kernelVersion}`;
|
|
139
140
|
}
|
|
140
141
|
/**
|
|
@@ -161,7 +162,7 @@ class Utils {
|
|
|
161
162
|
/**
|
|
162
163
|
* if not exists exit
|
|
163
164
|
*/
|
|
164
|
-
if (!
|
|
165
|
+
if (!fs.existsSync(vmlinuz)) {
|
|
165
166
|
console.log(vmlinuz + ' not exists!');
|
|
166
167
|
process.exit();
|
|
167
168
|
}
|
|
@@ -176,7 +177,7 @@ class Utils {
|
|
|
176
177
|
let initrd = 'initrd.img';
|
|
177
178
|
let version = 'linux';
|
|
178
179
|
let suffix = '';
|
|
179
|
-
let distro = new
|
|
180
|
+
let distro = new Distro();
|
|
180
181
|
if (distro.familyId === 'debian') {
|
|
181
182
|
version = vmlinuz.substring(vmlinuz.indexOf('-') + 1);
|
|
182
183
|
}
|
|
@@ -195,11 +196,11 @@ class Utils {
|
|
|
195
196
|
*/
|
|
196
197
|
static machineId() {
|
|
197
198
|
let result = '';
|
|
198
|
-
if (
|
|
199
|
-
result =
|
|
199
|
+
if (fs.existsSync('/etc/machine-id')) {
|
|
200
|
+
result = fs.readFileSync('/etc/machine-id', 'utf-8').trim();
|
|
200
201
|
}
|
|
201
|
-
else if (
|
|
202
|
-
result =
|
|
202
|
+
else if (fs.existsSync('/var/lib/dbus/machine-id')) {
|
|
203
|
+
result = fs.readFileSync('/var/lib/dbus/machine-id', 'utf-8').trim();
|
|
203
204
|
}
|
|
204
205
|
return result;
|
|
205
206
|
}
|
|
@@ -208,19 +209,19 @@ class Utils {
|
|
|
208
209
|
* @param msg
|
|
209
210
|
*/
|
|
210
211
|
static warning(msg = '') {
|
|
211
|
-
console.log(pjson.shortName + ' >>> ' +
|
|
212
|
+
console.log(pjson.shortName + ' >>> ' + chalk.cyanBright(msg) + '.');
|
|
212
213
|
}
|
|
213
214
|
static error(msg = '') {
|
|
214
|
-
console.error(pjson.shortName + ' >>> ' +
|
|
215
|
+
console.error(pjson.shortName + ' >>> ' + chalk.bgMagentaBright(chalk.whiteBright(msg)) + '.');
|
|
215
216
|
}
|
|
216
217
|
/**
|
|
217
218
|
* Return the primary user's name
|
|
218
219
|
*/
|
|
219
220
|
static async getPrimaryUser() {
|
|
220
|
-
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();
|
|
221
222
|
// if logname don't work seem we get '' so:
|
|
222
223
|
if (primaryUser === '') {
|
|
223
|
-
primaryUser =
|
|
224
|
+
primaryUser = shx.exec('echo $SUDO_USER', { silent: true }).stdout.trim();
|
|
224
225
|
}
|
|
225
226
|
if (primaryUser === '') {
|
|
226
227
|
console.log(`Cannot find your user name...`);
|
|
@@ -233,7 +234,7 @@ class Utils {
|
|
|
233
234
|
* @param device
|
|
234
235
|
*/
|
|
235
236
|
static uuid(device) {
|
|
236
|
-
const uuid =
|
|
237
|
+
const uuid = shx.exec(`blkid -s UUID -o value ${device}`).stdout.trim();
|
|
237
238
|
return uuid;
|
|
238
239
|
}
|
|
239
240
|
/**
|
|
@@ -273,8 +274,8 @@ class Utils {
|
|
|
273
274
|
* @returns {number} Numero degli snapshot presenti
|
|
274
275
|
*/
|
|
275
276
|
static getSnapshotCount(snapshot_dir = '/') {
|
|
276
|
-
if (
|
|
277
|
-
const files =
|
|
277
|
+
if (fs.existsSync(snapshot_dir)) {
|
|
278
|
+
const files = fs.readdirSync(snapshot_dir);
|
|
278
279
|
let nIsos = 0;
|
|
279
280
|
for (const f of files) {
|
|
280
281
|
if (f.endsWith('.iso')) {
|
|
@@ -291,7 +292,7 @@ class Utils {
|
|
|
291
292
|
*/
|
|
292
293
|
static getSnapshotSize(snapshot_dir = '/') {
|
|
293
294
|
let fileSizeInBytes = 0;
|
|
294
|
-
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();
|
|
295
296
|
if (size === '') {
|
|
296
297
|
fileSizeInBytes = 0;
|
|
297
298
|
}
|
|
@@ -309,7 +310,7 @@ class Utils {
|
|
|
309
310
|
if (process.arch === 'ia32') {
|
|
310
311
|
arch = 'i386';
|
|
311
312
|
//
|
|
312
|
-
if (
|
|
313
|
+
if (shx.exec('uname -m', { silent: true }).stdout.trim() === 'x86_64') {
|
|
313
314
|
arch = 'amd64';
|
|
314
315
|
}
|
|
315
316
|
}
|
|
@@ -330,7 +331,7 @@ class Utils {
|
|
|
330
331
|
let format = '';
|
|
331
332
|
if (process.arch === 'ia32') {
|
|
332
333
|
format = 'i386-efi';
|
|
333
|
-
if (
|
|
334
|
+
if (shx.exec('uname -m', { silent: true }).stdout.trim() === 'x86_64') {
|
|
334
335
|
format = 'x86_64-efi';
|
|
335
336
|
}
|
|
336
337
|
}
|
|
@@ -417,7 +418,7 @@ class Utils {
|
|
|
417
418
|
fileSizeInBytes = 0; // this.getLiveRootSpace()
|
|
418
419
|
}
|
|
419
420
|
else {
|
|
420
|
-
fileSizeInBytes = Number(
|
|
421
|
+
fileSizeInBytes = Number(shx.exec(`df /home | /usr/bin/awk 'NR==2 {print $3}'`, {
|
|
421
422
|
silent: true
|
|
422
423
|
}).stdout);
|
|
423
424
|
}
|
|
@@ -435,9 +436,9 @@ class Utils {
|
|
|
435
436
|
squashFs = '/live/boot-dev/antiX/linuxfs';
|
|
436
437
|
}
|
|
437
438
|
// Ottengo la dimensione del file compresso
|
|
438
|
-
const compressedFs =
|
|
439
|
+
const compressedFs = fs.statSync(squashFs).size;
|
|
439
440
|
// get compression factor by reading the linuxfs squasfs file, if available
|
|
440
|
-
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`);
|
|
441
442
|
let compression_factor = 0;
|
|
442
443
|
if (compressedFs_compression_type === '1') {
|
|
443
444
|
compression_factor = 37; // gzip
|
|
@@ -458,9 +459,9 @@ class Utils {
|
|
|
458
459
|
compression_factor = 30; // anything else or linuxfs not reachable (toram), should be pretty conservative
|
|
459
460
|
}
|
|
460
461
|
let rootfs_file_size = 0;
|
|
461
|
-
const linuxfs_file_size = (Number(
|
|
462
|
-
if (
|
|
463
|
-
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;
|
|
464
465
|
}
|
|
465
466
|
let rootSpaceNeeded;
|
|
466
467
|
if (type === 'mx') {
|
|
@@ -514,7 +515,7 @@ class Utils {
|
|
|
514
515
|
*
|
|
515
516
|
*/
|
|
516
517
|
static rootPenguin() {
|
|
517
|
-
return
|
|
518
|
+
return path.resolve(__dirname, '../../');
|
|
518
519
|
}
|
|
519
520
|
/**
|
|
520
521
|
* return the short name of the package: eggs
|
|
@@ -542,7 +543,7 @@ class Utils {
|
|
|
542
543
|
*/
|
|
543
544
|
static getDebianVersion() {
|
|
544
545
|
const cmd = "cat /etc/debian_version | /usr/bin/cut -f1 -d'.'";
|
|
545
|
-
const version = Number(
|
|
546
|
+
const version = Number(shx.exec(cmd, { silent: true }).stdout);
|
|
546
547
|
return version;
|
|
547
548
|
}
|
|
548
549
|
/**
|
|
@@ -572,7 +573,7 @@ class Utils {
|
|
|
572
573
|
static isMountpoint(path = '') {
|
|
573
574
|
const cmd = `mountpoint -q ${path}`;
|
|
574
575
|
// return 0 if the directory is a mountpoint, non-zero if not.
|
|
575
|
-
const result =
|
|
576
|
+
const result = shx.exec(cmd, { silent: true }).code;
|
|
576
577
|
return result === 0;
|
|
577
578
|
}
|
|
578
579
|
/**
|
|
@@ -582,7 +583,7 @@ class Utils {
|
|
|
582
583
|
*/
|
|
583
584
|
static isBlockDevice(device = '') {
|
|
584
585
|
const cmd = `lsblk -d -o name | grep ${device}`;
|
|
585
|
-
const result =
|
|
586
|
+
const result = shx.exec(cmd, { silent: true }).code;
|
|
586
587
|
return result === 0;
|
|
587
588
|
}
|
|
588
589
|
/**
|
|
@@ -606,14 +607,14 @@ class Utils {
|
|
|
606
607
|
* get the kernel version
|
|
607
608
|
*/
|
|
608
609
|
static kernelVersion() {
|
|
609
|
-
return
|
|
610
|
+
return os.release();
|
|
610
611
|
}
|
|
611
612
|
/**
|
|
612
613
|
* return the name of network device
|
|
613
614
|
*/
|
|
614
615
|
static async iface() {
|
|
615
616
|
// return shx.exec(`ifconfig | awk 'FNR==1 { print $1 }' | tr --d :`, { silent: true }).stdout.trim()
|
|
616
|
-
const interfaces = Object.keys(
|
|
617
|
+
const interfaces = Object.keys(os.networkInterfaces());
|
|
617
618
|
let netDeviceName = '';
|
|
618
619
|
for (const k in interfaces) {
|
|
619
620
|
if (interfaces[k] != 'lo') {
|
|
@@ -626,7 +627,7 @@ class Utils {
|
|
|
626
627
|
* address
|
|
627
628
|
*/
|
|
628
629
|
static address() {
|
|
629
|
-
const interfaces =
|
|
630
|
+
const interfaces = os.networkInterfaces();
|
|
630
631
|
let address = '';
|
|
631
632
|
if (interfaces !== undefined) {
|
|
632
633
|
for (const devName in interfaces) {
|
|
@@ -651,7 +652,7 @@ class Utils {
|
|
|
651
652
|
* netmask
|
|
652
653
|
*/
|
|
653
654
|
static netmask() {
|
|
654
|
-
const interfaces =
|
|
655
|
+
const interfaces = os.networkInterfaces();
|
|
655
656
|
let netmask = '';
|
|
656
657
|
if (interfaces !== undefined) {
|
|
657
658
|
for (const devName in interfaces) {
|
|
@@ -676,7 +677,7 @@ class Utils {
|
|
|
676
677
|
* cidr
|
|
677
678
|
*/
|
|
678
679
|
static cidr() {
|
|
679
|
-
const interfaces =
|
|
680
|
+
const interfaces = os.networkInterfaces();
|
|
680
681
|
let cidr = '';
|
|
681
682
|
if (interfaces !== undefined) {
|
|
682
683
|
for (const devName in interfaces) {
|
|
@@ -704,27 +705,27 @@ class Utils {
|
|
|
704
705
|
* broadcast
|
|
705
706
|
*/
|
|
706
707
|
static broadcast() {
|
|
707
|
-
let n = new
|
|
708
|
+
let n = new Netmask(Utils.cidr());
|
|
708
709
|
return n.broadcast;
|
|
709
710
|
}
|
|
710
711
|
/**
|
|
711
712
|
* dns
|
|
712
713
|
*/
|
|
713
714
|
static getDns() {
|
|
714
|
-
return
|
|
715
|
+
return dns.getServers();
|
|
715
716
|
}
|
|
716
717
|
/**
|
|
717
718
|
* getDomain
|
|
718
719
|
*/
|
|
719
720
|
static getDomain() {
|
|
720
|
-
return
|
|
721
|
+
return shx.exec('domainname', { silent: true }).stdout.trim();
|
|
721
722
|
// return shx.exec(`route -n | grep 'UG[ \t]' | awk '{print $2}'`, { silent: true }).stdout.trim()
|
|
722
723
|
}
|
|
723
724
|
/**
|
|
724
725
|
* @returns gateway
|
|
725
726
|
*/
|
|
726
727
|
static gateway() {
|
|
727
|
-
return
|
|
728
|
+
return shx.exec(`ip r | grep 'default' | awk '{print $3}'`, { silent: true }).stdout.trim();
|
|
728
729
|
//return shx.exec(`route -n | grep 'UG[ \t]' | awk '{print $2}'`, { silent: true }).stdout.trim()
|
|
729
730
|
}
|
|
730
731
|
/**
|
|
@@ -736,7 +737,7 @@ class Utils {
|
|
|
736
737
|
text = text.trim() + '\n';
|
|
737
738
|
text = text.trim() + '\n';
|
|
738
739
|
file = file.trim();
|
|
739
|
-
|
|
740
|
+
fs.writeFileSync(file, text);
|
|
740
741
|
}
|
|
741
742
|
/**
|
|
742
743
|
*
|
|
@@ -750,7 +751,7 @@ class Utils {
|
|
|
750
751
|
text += `# ==> Perri\'s Brewery edition <== \n\n`;
|
|
751
752
|
text += cmd;
|
|
752
753
|
Utils.write(file, text);
|
|
753
|
-
|
|
754
|
+
shx.chmod('+x', file);
|
|
754
755
|
}
|
|
755
756
|
/**
|
|
756
757
|
*
|
|
@@ -828,7 +829,7 @@ class Utils {
|
|
|
828
829
|
msg = 'Press a key to continue...';
|
|
829
830
|
}
|
|
830
831
|
console.log(msg);
|
|
831
|
-
const pressKeyToExit =
|
|
832
|
+
const pressKeyToExit = spawnSync('read _ ', { shell: true, stdio: [0, 1, 2] });
|
|
832
833
|
if (!procContinue) {
|
|
833
834
|
process.exit(0);
|
|
834
835
|
}
|
|
@@ -843,16 +844,16 @@ class Utils {
|
|
|
843
844
|
console.log(' E G G S: the reproductive system of penguins');
|
|
844
845
|
console.log('');
|
|
845
846
|
console.log(Utils.flag());
|
|
846
|
-
console.log('command: ' +
|
|
847
|
+
console.log('command: ' + chalk.bgBlack.white(command) + '\n');
|
|
847
848
|
}
|
|
848
849
|
/**
|
|
849
850
|
*
|
|
850
851
|
* @returns flag
|
|
851
852
|
*/
|
|
852
853
|
static flag() {
|
|
853
|
-
return
|
|
854
|
-
|
|
855
|
-
|
|
854
|
+
return chalk.bgGreen.whiteBright(' ' + pjson.name + ' ') +
|
|
855
|
+
chalk.bgWhite.blue(" Perri's Brewery edition ") +
|
|
856
|
+
chalk.bgRed.whiteBright(' ver. ' + pjson.version + ' ');
|
|
856
857
|
}
|
|
857
858
|
/**
|
|
858
859
|
*
|
|
@@ -885,11 +886,10 @@ class Utils {
|
|
|
885
886
|
* @returns wardrobe
|
|
886
887
|
*/
|
|
887
888
|
static async wardrobe() {
|
|
888
|
-
let wardrobe = `${
|
|
889
|
+
let wardrobe = `${os.homedir()}/.wardrobe`;
|
|
889
890
|
if (Utils.isRoot()) {
|
|
890
891
|
wardrobe = `/home/${await Utils.getPrimaryUser()}/.wardrobe`;
|
|
891
892
|
}
|
|
892
893
|
return wardrobe;
|
|
893
894
|
}
|
|
894
895
|
}
|
|
895
|
-
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
|
+
}
|