penguins-eggs 9.8.1 → 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 +242 -242
- 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 +49 -70
- 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/commands/produce.js
CHANGED
|
@@ -1,42 +1,21 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
1
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* ./src/commands/produce.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
7
4
|
* author: Piero Proietti
|
|
8
5
|
* email: piero.proietti@gmail.com
|
|
9
6
|
* license: MIT
|
|
10
7
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
basename: core_1.Flags.string({ description: 'basename' }),
|
|
23
|
-
clone: core_1.Flags.boolean({ char: 'c', description: 'clone' }),
|
|
24
|
-
cryptedclone: core_1.Flags.boolean({ char: 'C', description: 'crypted clone' }),
|
|
25
|
-
excludes: core_1.Flags.string({ multiple: true, description: 'use: custom, home, mine, usr, var' }),
|
|
26
|
-
help: core_1.Flags.help({ char: 'h' }),
|
|
27
|
-
links: core_1.Flags.string({ multiple: true, description: 'desktop links' }),
|
|
28
|
-
max: core_1.Flags.boolean({ char: 'm', description: 'max compression' }),
|
|
29
|
-
noicons: core_1.Flags.boolean({ char: 'N', description: 'no icons on desktop' }),
|
|
30
|
-
nointeractive: core_1.Flags.boolean({ char: 'n', description: 'no user interaction' }),
|
|
31
|
-
prefix: core_1.Flags.string({ char: 'p', description: 'prefix' }),
|
|
32
|
-
release: core_1.Flags.boolean({ description: 'release: max compression, remove penguins-eggs and calamares after installation' }),
|
|
33
|
-
script: core_1.Flags.boolean({ char: 's', description: 'script mode. Generate scripts to manage iso build' }),
|
|
34
|
-
standard: core_1.Flags.boolean({ char: 'f', description: 'standard compression' }),
|
|
35
|
-
theme: core_1.Flags.string({ description: 'theme for livecd, calamares branding and partitions' }),
|
|
36
|
-
unsecure: core_1.Flags.boolean({ char: 'u', description: '/root contents are included on live' }),
|
|
37
|
-
verbose: core_1.Flags.boolean({ char: 'v', description: 'verbose' }),
|
|
38
|
-
yolk: core_1.Flags.boolean({ char: 'y', description: 'force yolk renew' }),
|
|
39
|
-
};
|
|
8
|
+
import { Command, Flags } from '@oclif/core';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import Compressors from '../classes/compressors.js';
|
|
13
|
+
import Ovary from '../classes/ovary.js';
|
|
14
|
+
import Utils from '../classes/utils.js';
|
|
15
|
+
import Config from './config.js';
|
|
16
|
+
// _dirname
|
|
17
|
+
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
18
|
+
export default class Produce extends Command {
|
|
40
19
|
static description = 'produce a live image from your system whithout your data';
|
|
41
20
|
static examples = [
|
|
42
21
|
'sudo eggs produce',
|
|
@@ -50,26 +29,46 @@ class Produce extends core_1.Command {
|
|
|
50
29
|
'sudo eggs produce --excludes=usr var',
|
|
51
30
|
'sudo eggs produce --excludes=static'
|
|
52
31
|
];
|
|
32
|
+
static flags = {
|
|
33
|
+
addons: Flags.string({ description: 'addons to be used: adapt, ichoice, pve, rsupport', multiple: true }),
|
|
34
|
+
basename: Flags.string({ description: 'basename' }),
|
|
35
|
+
clone: Flags.boolean({ char: 'c', description: 'clone' }),
|
|
36
|
+
cryptedclone: Flags.boolean({ char: 'C', description: 'crypted clone' }),
|
|
37
|
+
excludes: Flags.string({ description: 'use: custom, home, mine, usr, var', multiple: true }),
|
|
38
|
+
help: Flags.help({ char: 'h' }),
|
|
39
|
+
links: Flags.string({ description: 'desktop links', multiple: true }),
|
|
40
|
+
max: Flags.boolean({ char: 'm', description: 'max compression' }),
|
|
41
|
+
noicons: Flags.boolean({ char: 'N', description: 'no icons on desktop' }),
|
|
42
|
+
nointeractive: Flags.boolean({ char: 'n', description: 'no user interaction' }),
|
|
43
|
+
prefix: Flags.string({ char: 'p', description: 'prefix' }),
|
|
44
|
+
release: Flags.boolean({ description: 'release: max compression, remove penguins-eggs and calamares after installation' }),
|
|
45
|
+
script: Flags.boolean({ char: 's', description: 'script mode. Generate scripts to manage iso build' }),
|
|
46
|
+
standard: Flags.boolean({ char: 'f', description: 'standard compression' }),
|
|
47
|
+
theme: Flags.string({ description: 'theme for livecd, calamares branding and partitions' }),
|
|
48
|
+
unsecure: Flags.boolean({ char: 'u', description: '/root contents are included on live' }),
|
|
49
|
+
verbose: Flags.boolean({ char: 'v', description: 'verbose' }),
|
|
50
|
+
yolk: Flags.boolean({ char: 'y', description: 'force yolk renew' }),
|
|
51
|
+
};
|
|
53
52
|
async run() {
|
|
54
|
-
|
|
53
|
+
Utils.titles(this.id + ' ' + this.argv);
|
|
55
54
|
const { flags } = await this.parse(Produce);
|
|
56
|
-
if (
|
|
55
|
+
if (Utils.isRoot()) {
|
|
57
56
|
/**
|
|
58
57
|
* ADDONS dei vendors
|
|
59
58
|
* Fino a 3
|
|
60
59
|
*/
|
|
61
60
|
const addons = [];
|
|
62
61
|
if (flags.addons) {
|
|
63
|
-
const addons = flags
|
|
62
|
+
const { addons } = flags; // array
|
|
64
63
|
for (let addon of addons) {
|
|
65
64
|
// se non viene specificato il vendor il default è eggs
|
|
66
65
|
if (!addon.includes('//')) {
|
|
67
66
|
addon = 'eggs/' + addon;
|
|
68
67
|
}
|
|
69
|
-
const dirAddon =
|
|
70
|
-
if (!
|
|
68
|
+
const dirAddon = path.resolve(__dirname, `../../addons/${addon}`);
|
|
69
|
+
if (!fs.existsSync(dirAddon)) {
|
|
71
70
|
console.log(dirAddon);
|
|
72
|
-
|
|
71
|
+
Utils.warning('addon: ' + chalk.white(addon) + ' not found, terminate!');
|
|
73
72
|
process.exit();
|
|
74
73
|
}
|
|
75
74
|
const vendorAddon = addon.slice(0, Math.max(0, addon.search('/')));
|
|
@@ -80,15 +79,15 @@ class Produce extends core_1.Command {
|
|
|
80
79
|
}
|
|
81
80
|
}
|
|
82
81
|
// links check
|
|
83
|
-
|
|
82
|
+
const myLinks = [];
|
|
84
83
|
if (flags.links) {
|
|
85
|
-
const links = flags
|
|
86
|
-
for (
|
|
87
|
-
if (
|
|
88
|
-
myLinks.push(
|
|
84
|
+
const { links } = flags;
|
|
85
|
+
for (const link_ of links) {
|
|
86
|
+
if (fs.existsSync(`/usr/share/applications/${link_}.desktop`)) {
|
|
87
|
+
myLinks.push(link_);
|
|
89
88
|
}
|
|
90
89
|
else {
|
|
91
|
-
|
|
90
|
+
Utils.warning('desktop link: ' + chalk.white('/usr/share/applications/' + link_ + '.desktop') + ' not found!');
|
|
92
91
|
}
|
|
93
92
|
}
|
|
94
93
|
}
|
|
@@ -127,7 +126,7 @@ class Produce extends core_1.Command {
|
|
|
127
126
|
if (flags.basename !== undefined) {
|
|
128
127
|
basename = flags.basename;
|
|
129
128
|
}
|
|
130
|
-
const compressors = new
|
|
129
|
+
const compressors = new Compressors();
|
|
131
130
|
await compressors.populate();
|
|
132
131
|
let compression = compressors.fast();
|
|
133
132
|
if (flags.max) {
|
|
@@ -136,14 +135,14 @@ class Produce extends core_1.Command {
|
|
|
136
135
|
else if (flags.standard) {
|
|
137
136
|
compression = compressors.standard();
|
|
138
137
|
}
|
|
139
|
-
const release = flags
|
|
140
|
-
|
|
141
|
-
const clone = flags
|
|
142
|
-
const verbose = flags
|
|
138
|
+
const { release } = flags;
|
|
139
|
+
const { cryptedclone } = flags;
|
|
140
|
+
const { clone } = flags;
|
|
141
|
+
const { verbose } = flags;
|
|
143
142
|
const scriptOnly = flags.script;
|
|
144
143
|
const yolkRenew = flags.yolk;
|
|
145
|
-
const nointeractive = flags
|
|
146
|
-
const noicons = flags
|
|
144
|
+
const { nointeractive } = flags;
|
|
145
|
+
const { noicons } = flags;
|
|
147
146
|
// if clone or cryptedclone unsecure = true
|
|
148
147
|
const unsecure = flags.unsecure || clone || cryptedclone;
|
|
149
148
|
/**
|
|
@@ -154,22 +153,22 @@ class Produce extends core_1.Command {
|
|
|
154
153
|
theme = flags.theme;
|
|
155
154
|
if (theme.includes('/')) {
|
|
156
155
|
if (theme.endsWith('/')) {
|
|
157
|
-
theme = theme.
|
|
156
|
+
theme = theme.slice(0, Math.max(0, theme.length - 1));
|
|
158
157
|
}
|
|
159
158
|
}
|
|
160
159
|
else {
|
|
161
|
-
const wpath = `/home/${await
|
|
160
|
+
const wpath = `/home/${await Utils.getPrimaryUser()}/.wardrobe/vendors/`;
|
|
162
161
|
theme = wpath + flags.theme;
|
|
163
162
|
}
|
|
164
|
-
theme =
|
|
165
|
-
if (!
|
|
163
|
+
theme = path.resolve(theme);
|
|
164
|
+
if (!fs.existsSync(theme + '/theme')) {
|
|
166
165
|
console.log('Cannot find theme: ' + theme);
|
|
167
166
|
process.exit();
|
|
168
167
|
}
|
|
169
168
|
}
|
|
170
|
-
const i = await
|
|
171
|
-
if ((i.needApt || i.configurationInstall || i.configurationRefresh || i.distroTemplate) && (await
|
|
172
|
-
await
|
|
169
|
+
const i = await Config.thatWeNeed(nointeractive, noicons, verbose, cryptedclone);
|
|
170
|
+
if ((i.needApt || i.configurationInstall || i.configurationRefresh || i.distroTemplate) && (await Utils.customConfirm('Select yes to continue...'))) {
|
|
171
|
+
await Config.install(i, nointeractive, noicons, verbose);
|
|
173
172
|
}
|
|
174
173
|
const myAddons = {};
|
|
175
174
|
if (flags.addons != undefined) {
|
|
@@ -186,21 +185,20 @@ class Produce extends core_1.Command {
|
|
|
186
185
|
myAddons.rsupport = true;
|
|
187
186
|
}
|
|
188
187
|
}
|
|
189
|
-
|
|
190
|
-
const ovary = new
|
|
191
|
-
|
|
188
|
+
Utils.titles(this.id + ' ' + this.argv);
|
|
189
|
+
const ovary = new Ovary();
|
|
190
|
+
Utils.warning('Produce an egg...');
|
|
192
191
|
if (await ovary.fertilization(prefix, basename, theme, compression, !nointeractive)) {
|
|
193
192
|
await ovary.produce(clone, cryptedclone, scriptOnly, yolkRenew, release, myAddons, myLinks, excludes, nointeractive, noicons, unsecure, verbose);
|
|
194
193
|
ovary.finished(scriptOnly);
|
|
195
194
|
}
|
|
196
195
|
}
|
|
197
196
|
else {
|
|
198
|
-
|
|
197
|
+
Utils.useRoot(this.id);
|
|
199
198
|
}
|
|
200
199
|
}
|
|
201
200
|
}
|
|
202
|
-
|
|
203
|
-
const validSizePattern = /^(\d+)([MG]?)$/;
|
|
201
|
+
const validSizePattern = /^(\d+)([GM]?)$/;
|
|
204
202
|
function isValidSize(input) {
|
|
205
203
|
return validSizePattern.test(input);
|
|
206
204
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/status.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 { Command } from '@oclif/core';
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
export default class Status extends Command {
|
|
13
|
+
static description: string;
|
|
14
|
+
static examples: string[];
|
|
15
|
+
static flags: {
|
|
16
|
+
help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>;
|
|
17
|
+
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
run(): Promise<void>;
|
|
23
|
+
}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
1
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* ./src/commands/status.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
7
4
|
* author: Piero Proietti
|
|
8
5
|
* email: piero.proietti@gmail.com
|
|
9
6
|
* license: MIT
|
|
10
7
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
import { Command, Flags } from '@oclif/core';
|
|
9
|
+
import Information from '../components/information.js';
|
|
13
10
|
/**
|
|
14
11
|
*
|
|
15
12
|
*/
|
|
16
|
-
class Status extends
|
|
17
|
-
static flags = {
|
|
18
|
-
help: core_1.Flags.help({ char: 'h' }),
|
|
19
|
-
verbose: core_1.Flags.boolean({ char: 'v' }),
|
|
20
|
-
};
|
|
13
|
+
export default class Status extends Command {
|
|
21
14
|
static description = 'informations about eggs status';
|
|
22
15
|
static examples = [
|
|
23
16
|
'eggs status',
|
|
24
17
|
];
|
|
18
|
+
static flags = {
|
|
19
|
+
help: Flags.help({ char: 'h' }),
|
|
20
|
+
verbose: Flags.boolean({ char: 'v' }),
|
|
21
|
+
};
|
|
25
22
|
/**
|
|
26
23
|
*
|
|
27
24
|
*/
|
|
@@ -31,7 +28,6 @@ class Status extends core_1.Command {
|
|
|
31
28
|
if (flags.verbose) {
|
|
32
29
|
verbose = true;
|
|
33
30
|
}
|
|
34
|
-
|
|
31
|
+
Information(verbose);
|
|
35
32
|
}
|
|
36
33
|
}
|
|
37
|
-
exports.default = Status;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/syncfrom.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 { Command } from '@oclif/core';
|
|
9
|
+
import { IRemix } from '../interfaces/index.js';
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
export default class Syncfrom extends Command {
|
|
14
|
+
static description: string;
|
|
15
|
+
static examples: string[];
|
|
16
|
+
static flags: {
|
|
17
|
+
delete: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
18
|
+
file: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
19
|
+
help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>;
|
|
20
|
+
rootdir: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
21
|
+
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
22
|
+
};
|
|
23
|
+
echo: {};
|
|
24
|
+
luksName: string;
|
|
25
|
+
luksDevice: string;
|
|
26
|
+
luksFile: string;
|
|
27
|
+
luksMountpoint: string;
|
|
28
|
+
remix: IRemix;
|
|
29
|
+
rootDir: string;
|
|
30
|
+
verbose: boolean;
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
luksClose(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
*/
|
|
38
|
+
luksOpen(): Promise<void>;
|
|
39
|
+
run(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
*
|
|
42
|
+
* @param verbose
|
|
43
|
+
*/
|
|
44
|
+
private restorePrivateData;
|
|
45
|
+
}
|
|
@@ -1,49 +1,80 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
1
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* ./src/commands/syncfrom.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
7
4
|
* author: Piero Proietti
|
|
8
5
|
* email: piero.proietti@gmail.com
|
|
9
6
|
* license: MIT
|
|
10
7
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
import { Command, Flags } from '@oclif/core';
|
|
9
|
+
import fs from 'node:fs';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
import Distro from '../classes/distro.js';
|
|
12
|
+
import Utils from '../classes/utils.js';
|
|
13
|
+
import { exec } from '../lib/utils.js';
|
|
17
14
|
/**
|
|
18
15
|
*
|
|
19
16
|
*/
|
|
20
|
-
class Syncfrom extends
|
|
21
|
-
static flags = {
|
|
22
|
-
delete: core_1.Flags.string({ description: 'rsync --delete delete extraneous files from dest dirs' }),
|
|
23
|
-
file: core_1.Flags.string({ char: 'f', description: 'file containing luks-volume encrypted' }),
|
|
24
|
-
help: core_1.Flags.help({ char: 'h' }),
|
|
25
|
-
rootdir: core_1.Flags.string({ char: 'r', description: 'rootdir of the installed system, when used from live' }),
|
|
26
|
-
verbose: core_1.Flags.boolean({ char: 'v', description: 'verbose' }),
|
|
27
|
-
};
|
|
17
|
+
export default class Syncfrom extends Command {
|
|
28
18
|
static description = 'restore users and user data from a LUKS volumes';
|
|
29
19
|
static examples = [
|
|
30
20
|
'sudo eggs syncfrom',
|
|
31
21
|
'sudo eggs syncfrom --file /path/to/luks-volume',
|
|
32
22
|
];
|
|
33
|
-
|
|
23
|
+
static flags = {
|
|
24
|
+
delete: Flags.string({ description: 'rsync --delete delete extraneous files from dest dirs' }),
|
|
25
|
+
file: Flags.string({ char: 'f', description: 'file containing luks-volume encrypted' }),
|
|
26
|
+
help: Flags.help({ char: 'h' }),
|
|
27
|
+
rootdir: Flags.string({ char: 'r', description: 'rootdir of the installed system, when used from live' }),
|
|
28
|
+
verbose: Flags.boolean({ char: 'v', description: 'verbose' }),
|
|
29
|
+
};
|
|
34
30
|
echo = {};
|
|
35
|
-
rootDir = '/';
|
|
36
31
|
luksName = 'luks-volume';
|
|
37
|
-
luksFile = "";
|
|
38
32
|
luksDevice = `/dev/mapper/${this.luksName}`;
|
|
33
|
+
luksFile = "";
|
|
39
34
|
luksMountpoint = `/tmp/mnt/${this.luksName}`;
|
|
40
35
|
remix = {};
|
|
36
|
+
rootDir = '/';
|
|
37
|
+
verbose = false;
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
async luksClose() {
|
|
42
|
+
if (Utils.isMountpoint(this.luksMountpoint)) {
|
|
43
|
+
await exec(`umount ${this.luksMountpoint}`, this.echo);
|
|
44
|
+
}
|
|
45
|
+
if (fs.existsSync(this.luksDevice)) {
|
|
46
|
+
Utils.warning(`LUKS close volume: ${this.luksName}`);
|
|
47
|
+
await exec(`cryptsetup luksClose ${this.luksName}`, this.echo);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
*
|
|
52
|
+
*/
|
|
53
|
+
async luksOpen() {
|
|
54
|
+
if (fs.existsSync(this.luksDevice)) {
|
|
55
|
+
Utils.warning(`LUKS volume: ${this.luksName} already open`);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
Utils.warning(`LUKS open volume: ${this.luksName}`);
|
|
59
|
+
await exec(`cryptsetup luksOpen --type luks2 ${this.luksFile} ${this.luksName}`, Utils.setEcho(true));
|
|
60
|
+
}
|
|
61
|
+
if (!fs.existsSync(this.luksMountpoint)) {
|
|
62
|
+
await exec(`mkdir -p ${this.luksMountpoint}`, this.echo);
|
|
63
|
+
}
|
|
64
|
+
if (Utils.isMountpoint(this.luksMountpoint)) {
|
|
65
|
+
Utils.warning(`mount volume: ${this.luksDevice} already mounted on ${this.luksMountpoint}`);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
Utils.warning(`mount volume: ${this.luksDevice} on ${this.luksMountpoint}`);
|
|
69
|
+
await exec(`mount ${this.luksDevice} ${this.luksMountpoint}`, this.echo);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
41
72
|
async run() {
|
|
42
73
|
const { flags } = await this.parse(Syncfrom);
|
|
43
74
|
if (flags.verbose) {
|
|
44
75
|
this.verbose = true;
|
|
45
76
|
}
|
|
46
|
-
this.echo =
|
|
77
|
+
this.echo = Utils.setEcho(this.verbose);
|
|
47
78
|
let fileVolume = '';
|
|
48
79
|
if (flags.file) {
|
|
49
80
|
fileVolume = flags.file;
|
|
@@ -52,50 +83,50 @@ class Syncfrom extends core_1.Command {
|
|
|
52
83
|
if (flags.delete) {
|
|
53
84
|
destDelete = true;
|
|
54
85
|
}
|
|
55
|
-
if (
|
|
86
|
+
if (Utils.isLive()) {
|
|
56
87
|
if (flags.rootdir) {
|
|
57
88
|
this.rootDir = flags.rootdir;
|
|
58
89
|
}
|
|
59
90
|
else {
|
|
60
|
-
|
|
91
|
+
Utils.pressKeyToExit('Argument --rootdir is mandatory, when running live! Process will terminate');
|
|
61
92
|
}
|
|
62
93
|
}
|
|
63
|
-
if (
|
|
94
|
+
if (Utils.isRoot()) {
|
|
64
95
|
if (fileVolume === '') {
|
|
65
|
-
|
|
96
|
+
const distro = new Distro(this.remix);
|
|
66
97
|
fileVolume = `${distro.liveMediumPath}live/${this.luksName}`;
|
|
67
98
|
}
|
|
68
|
-
if (
|
|
99
|
+
if (Utils.isLive()) {
|
|
100
|
+
/**
|
|
101
|
+
* WORKING FROM LIVE
|
|
102
|
+
*/
|
|
103
|
+
this.luksName = path.basename(fileVolume);
|
|
104
|
+
this.luksFile = fileVolume;
|
|
105
|
+
this.luksDevice = `/dev/mapper/${this.luksName}`;
|
|
106
|
+
this.luksMountpoint = `/tmp/${this.luksName}`;
|
|
107
|
+
await this.restorePrivateData();
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
69
110
|
/**
|
|
70
111
|
* WORKING FROM INSTALLED
|
|
71
112
|
*/
|
|
72
|
-
if (
|
|
73
|
-
this.luksName =
|
|
113
|
+
if (fs.existsSync(fileVolume)) {
|
|
114
|
+
this.luksName = path.basename(fileVolume);
|
|
74
115
|
this.luksFile = fileVolume;
|
|
75
116
|
this.luksDevice = `/dev/mapper/${this.luksName}`;
|
|
76
117
|
this.luksMountpoint = `/tmp/${this.luksName}`;
|
|
77
118
|
await this.restorePrivateData();
|
|
78
|
-
if (await
|
|
79
|
-
await
|
|
119
|
+
if (await Utils.customConfirm('Your system was updated! Press a key to reboot')) {
|
|
120
|
+
await exec('reboot');
|
|
80
121
|
}
|
|
81
122
|
}
|
|
82
123
|
else {
|
|
83
|
-
|
|
124
|
+
Utils.pressKeyToExit(`Can't find ${this.luksFile}`);
|
|
84
125
|
}
|
|
85
126
|
}
|
|
86
|
-
else {
|
|
87
|
-
/**
|
|
88
|
-
* WORKING FROM LIVE
|
|
89
|
-
*/
|
|
90
|
-
this.luksName = path_1.default.basename(fileVolume);
|
|
91
|
-
this.luksFile = fileVolume;
|
|
92
|
-
this.luksDevice = `/dev/mapper/${this.luksName}`;
|
|
93
|
-
this.luksMountpoint = `/tmp/${this.luksName}`;
|
|
94
|
-
await this.restorePrivateData();
|
|
95
|
-
}
|
|
96
127
|
}
|
|
97
128
|
else {
|
|
98
|
-
|
|
129
|
+
Utils.useRoot(this.id);
|
|
99
130
|
}
|
|
100
131
|
}
|
|
101
132
|
/**
|
|
@@ -103,57 +134,22 @@ class Syncfrom extends core_1.Command {
|
|
|
103
134
|
* @param verbose
|
|
104
135
|
*/
|
|
105
136
|
async restorePrivateData(destDelete = false) {
|
|
106
|
-
if (!
|
|
107
|
-
await
|
|
137
|
+
if (!fs.existsSync(this.luksMountpoint)) {
|
|
138
|
+
await exec(`mkdir ${this.luksMountpoint}`, this.echo);
|
|
108
139
|
}
|
|
109
140
|
await this.luksOpen();
|
|
110
|
-
if (
|
|
111
|
-
|
|
141
|
+
if (Utils.isLive() && this.rootDir !== '/') {
|
|
142
|
+
Utils.warning('Restoring crypted data');
|
|
112
143
|
// Rimozione dei file esistenti
|
|
113
|
-
await
|
|
114
|
-
await
|
|
115
|
-
await
|
|
116
|
-
await
|
|
117
|
-
await
|
|
144
|
+
await exec(`rm -rf ${this.rootDir}/etc/lightdm/lightdm.conf`, this.echo);
|
|
145
|
+
await exec(`rm -rf ${this.rootDir}/etc/passwd`, this.echo);
|
|
146
|
+
await exec(`rm -rf ${this.rootDir}/etc/group`, this.echo);
|
|
147
|
+
await exec(`rm -rf ${this.rootDir}/etc/shadow`, this.echo);
|
|
148
|
+
await exec(`rm -rf ${this.rootDir}/home/*`, this.echo);
|
|
118
149
|
// unsquashfs
|
|
119
150
|
const cmd = `unsquashfs -d ${this.rootDir} -f ${this.luksMountpoint}/private.squashfs`;
|
|
120
|
-
await
|
|
151
|
+
await exec(cmd, Utils.setEcho(true));
|
|
121
152
|
}
|
|
122
153
|
await this.luksClose();
|
|
123
154
|
}
|
|
124
|
-
/**
|
|
125
|
-
*
|
|
126
|
-
*/
|
|
127
|
-
async luksOpen() {
|
|
128
|
-
if (!fs_1.default.existsSync(this.luksDevice)) {
|
|
129
|
-
utils_1.default.warning(`LUKS open volume: ${this.luksName}`);
|
|
130
|
-
await (0, utils_2.exec)(`cryptsetup luksOpen --type luks2 ${this.luksFile} ${this.luksName}`, utils_1.default.setEcho(true));
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
utils_1.default.warning(`LUKS volume: ${this.luksName} already open`);
|
|
134
|
-
}
|
|
135
|
-
if (!fs_1.default.existsSync(this.luksMountpoint)) {
|
|
136
|
-
await (0, utils_2.exec)(`mkdir -p ${this.luksMountpoint}`, this.echo);
|
|
137
|
-
}
|
|
138
|
-
if (!utils_1.default.isMountpoint(this.luksMountpoint)) {
|
|
139
|
-
utils_1.default.warning(`mount volume: ${this.luksDevice} on ${this.luksMountpoint}`);
|
|
140
|
-
await (0, utils_2.exec)(`mount ${this.luksDevice} ${this.luksMountpoint}`, this.echo);
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
utils_1.default.warning(`mount volume: ${this.luksDevice} already mounted on ${this.luksMountpoint}`);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
*
|
|
148
|
-
*/
|
|
149
|
-
async luksClose() {
|
|
150
|
-
if (utils_1.default.isMountpoint(this.luksMountpoint)) {
|
|
151
|
-
await (0, utils_2.exec)(`umount ${this.luksMountpoint}`, this.echo);
|
|
152
|
-
}
|
|
153
|
-
if (fs_1.default.existsSync(this.luksDevice)) {
|
|
154
|
-
utils_1.default.warning(`LUKS close volume: ${this.luksName}`);
|
|
155
|
-
await (0, utils_2.exec)(`cryptsetup luksClose ${this.luksName}`, this.echo);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
155
|
}
|
|
159
|
-
exports.default = Syncfrom;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/syncto.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 { Command } from '@oclif/core';
|
|
9
|
+
import Settings from '../classes/settings.js';
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
export default class Syncto extends Command {
|
|
14
|
+
static description: string;
|
|
15
|
+
static examples: string[];
|
|
16
|
+
static flags: {
|
|
17
|
+
excludes: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
18
|
+
file: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
19
|
+
help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>;
|
|
20
|
+
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
21
|
+
};
|
|
22
|
+
echo: {};
|
|
23
|
+
exclude: boolean;
|
|
24
|
+
excludeHome: string;
|
|
25
|
+
luksName: string;
|
|
26
|
+
luksDevice: string;
|
|
27
|
+
luksFile: string;
|
|
28
|
+
luksMountpoint: string;
|
|
29
|
+
privateSquashfs: string;
|
|
30
|
+
settings: Settings;
|
|
31
|
+
verbose: boolean;
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
*/
|
|
35
|
+
luksCreate(): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
run(): Promise<void>;
|
|
40
|
+
}
|