penguins-eggs 10.0.53 → 10.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.oclif.manifest.json +1548 -2
- package/README.md +788 -0
- package/addons/eggs/theme/livecd/grub.main.simple.cfg +49 -0
- package/addons/eggs/theme/livecd/isolinux.theme.cfg +6 -5
- package/conf/distros/fedora/calamares/settings.yml +0 -6
- package/dist/classes/bleach.d.ts +32 -0
- package/dist/classes/bleach.js +135 -0
- package/dist/classes/cfs.d.ts +17 -0
- package/dist/classes/cfs.js +39 -0
- package/dist/classes/cli-autologin.d.ts +52 -0
- package/dist/classes/cli-autologin.js +247 -0
- package/dist/classes/compressors.d.ts +54 -0
- package/dist/classes/compressors.js +109 -0
- package/dist/classes/daddy.d.ts +26 -0
- package/dist/classes/daddy.js +167 -0
- package/dist/classes/distro.d.ts +32 -0
- package/dist/classes/distro.js +341 -0
- package/dist/classes/diversions.d.ts +48 -0
- package/dist/classes/diversions.js +116 -0
- package/dist/classes/incubation/branding.d.ts +17 -0
- package/dist/classes/incubation/branding.js +85 -0
- package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
- package/dist/classes/incubation/fisherman-helper/displaymanager.js +40 -0
- package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
- package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
- package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
- package/dist/classes/incubation/fisherman-helper/settings.js +83 -0
- package/dist/classes/incubation/fisherman.d.ts +70 -0
- package/dist/classes/incubation/fisherman.js +263 -0
- package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/alpine.js +78 -0
- package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/bionic.js +83 -0
- package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/buster.js +85 -0
- package/dist/classes/incubation/incubator.d/jessie.d.ts +31 -0
- package/dist/classes/incubation/incubator.d/jessie.js +44 -0
- package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/noble.js +85 -0
- package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
- package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
- package/dist/classes/incubation/incubator.d/rolling.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/rolling.js +80 -0
- package/dist/classes/incubation/incubator.d.ts +44 -0
- package/dist/classes/incubation/incubator.js +382 -0
- package/dist/classes/incubation/installer.d.ts +13 -0
- package/dist/classes/incubation/installer.js +52 -0
- package/dist/classes/keyboards.d.ts +50 -0
- package/dist/classes/keyboards.js +287 -0
- package/dist/classes/locales.d.ts +21 -0
- package/dist/classes/locales.js +77 -0
- package/dist/classes/network.d.ts +37 -0
- package/dist/classes/network.js +98 -0
- package/dist/classes/ovary.d.ts +198 -0
- package/dist/classes/ovary.js +1849 -0
- package/dist/classes/pacman.d/aldos.d.ts +52 -0
- package/dist/classes/pacman.d/aldos.js +100 -0
- package/dist/classes/pacman.d/alpine.d.ts +56 -0
- package/dist/classes/pacman.d/alpine.js +162 -0
- package/dist/classes/pacman.d/archlinux.d.ts +62 -0
- package/dist/classes/pacman.d/archlinux.js +137 -0
- package/dist/classes/pacman.d/debian.d.ts +65 -0
- package/dist/classes/pacman.d/debian.js +143 -0
- package/dist/classes/pacman.d/fedora.d.ts +53 -0
- package/dist/classes/pacman.d/fedora.js +101 -0
- package/dist/classes/pacman.d/openmamba.d.ts +52 -0
- package/dist/classes/pacman.d/openmamba.js +100 -0
- package/dist/classes/pacman.d/opensuse.d.ts +53 -0
- package/dist/classes/pacman.d/opensuse.js +102 -0
- package/dist/classes/pacman.d/voidlinux.d.ts +52 -0
- package/dist/classes/pacman.d/voidlinux.js +90 -0
- package/dist/classes/pacman.d.ts +139 -0
- package/dist/classes/pacman.js +775 -0
- package/dist/classes/pve-live.d.ts +17 -0
- package/dist/classes/pve-live.js +52 -0
- package/dist/classes/pxe.d.ts +74 -0
- package/dist/classes/pxe.js +410 -0
- package/dist/classes/settings.d.ts +53 -0
- package/dist/classes/settings.js +185 -0
- package/dist/classes/sources_list.d.ts +28 -0
- package/dist/classes/sources_list.js +89 -0
- package/dist/classes/systemctl.d.ts +47 -0
- package/dist/classes/systemctl.js +86 -0
- package/dist/classes/tailor.d.ts +50 -0
- package/dist/classes/tailor.js +526 -0
- package/dist/classes/tools.d.ts +26 -0
- package/dist/classes/tools.js +50 -0
- package/dist/classes/users.d.ts +28 -0
- package/dist/classes/users.js +143 -0
- package/dist/classes/utils.d.ts +324 -0
- package/dist/classes/utils.js +984 -0
- package/dist/classes/xdg.d.ts +45 -0
- package/dist/classes/xdg.js +337 -0
- package/dist/classes/yolk.d.ts +33 -0
- package/dist/classes/yolk.js +114 -0
- package/dist/commands/adapt.d.ts +17 -0
- package/dist/commands/adapt.js +33 -0
- package/dist/commands/analyze.d.ts +26 -0
- package/dist/commands/analyze.js +95 -0
- package/dist/commands/calamares.d.ts +29 -0
- package/dist/commands/calamares.js +112 -0
- package/dist/commands/config.d.ts +35 -0
- package/dist/commands/config.js +120 -0
- package/dist/commands/cuckoo.d.ts +16 -0
- package/dist/commands/cuckoo.js +62 -0
- package/dist/commands/dad.d.ts +20 -0
- package/dist/commands/dad.js +46 -0
- package/dist/commands/export/iso.d.ts +19 -0
- package/dist/commands/export/iso.js +55 -0
- package/dist/commands/export/pkg.d.ts +29 -0
- package/dist/commands/export/pkg.js +163 -0
- package/dist/commands/export/tarballs.d.ts +27 -0
- package/dist/commands/export/tarballs.js +84 -0
- package/dist/commands/install.d.ts +37 -0
- package/dist/commands/install.js +88 -0
- package/dist/commands/kill.d.ts +24 -0
- package/dist/commands/kill.js +50 -0
- package/dist/commands/love.d.ts +20 -0
- package/dist/commands/love.js +59 -0
- package/dist/commands/mom.d.ts +16 -0
- package/dist/commands/mom.js +30 -0
- package/dist/commands/produce.d.ts +34 -0
- package/dist/commands/produce.js +201 -0
- package/dist/commands/status.d.ts +23 -0
- package/dist/commands/status.js +31 -0
- package/dist/commands/syncfrom.d.ts +45 -0
- package/dist/commands/syncfrom.js +152 -0
- package/dist/commands/syncto.d.ts +40 -0
- package/dist/commands/syncto.js +175 -0
- package/dist/commands/tools/clean.d.ts +18 -0
- package/dist/commands/tools/clean.js +37 -0
- package/dist/commands/tools/ppa.d.ts +26 -0
- package/dist/commands/tools/ppa.js +138 -0
- package/dist/commands/tools/skel.d.ts +18 -0
- package/dist/commands/tools/skel.js +44 -0
- package/dist/commands/tools/stat.d.ts +31 -0
- package/dist/commands/tools/stat.js +70 -0
- package/dist/commands/tools/yolk.d.ts +24 -0
- package/dist/commands/tools/yolk.js +45 -0
- package/dist/commands/update.d.ts +51 -0
- package/dist/commands/update.js +219 -0
- package/dist/commands/wardrobe/get.d.ts +23 -0
- package/dist/commands/wardrobe/get.js +52 -0
- package/dist/commands/wardrobe/list.d.ts +24 -0
- package/dist/commands/wardrobe/list.js +125 -0
- package/dist/commands/wardrobe/show.d.ts +25 -0
- package/dist/commands/wardrobe/show.js +97 -0
- package/dist/commands/wardrobe/wear.d.ts +26 -0
- package/dist/commands/wardrobe/wear.js +84 -0
- package/dist/components/finished.d.ts +16 -0
- package/dist/components/finished.js +56 -0
- package/dist/components/information.d.ts +8 -0
- package/dist/components/information.js +154 -0
- package/dist/components/install.d.ts +15 -0
- package/dist/components/install.js +60 -0
- package/dist/components/keyboard.d.ts +16 -0
- package/dist/components/keyboard.js +54 -0
- package/dist/components/location.d.ts +16 -0
- package/dist/components/location.js +59 -0
- package/dist/components/network.d.ts +19 -0
- package/dist/components/network.js +65 -0
- package/dist/components/partitions.d.ts +16 -0
- package/dist/components/partitions.js +73 -0
- package/dist/components/steps.d.ts +13 -0
- package/dist/components/steps.js +148 -0
- package/dist/components/summary.d.ts +24 -0
- package/dist/components/summary.js +81 -0
- package/dist/components/title.d.ts +11 -0
- package/dist/components/title.js +35 -0
- package/dist/components/users.d.ts +24 -0
- package/dist/components/users.js +80 -0
- package/dist/components/welcome.d.ts +13 -0
- package/dist/components/welcome.js +63 -0
- package/dist/index-old.d.ts +8 -0
- package/dist/index-old.js +8 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.js +147 -0
- package/dist/interfaces/i-addons.d.ts +12 -0
- package/dist/interfaces/i-addons.js +8 -0
- package/dist/interfaces/i-analyze.d.ts +17 -0
- package/dist/interfaces/i-analyze.js +17 -0
- package/dist/interfaces/i-app.d.ts +14 -0
- package/dist/interfaces/i-app.js +8 -0
- package/dist/interfaces/i-branding.d.ts +36 -0
- package/dist/interfaces/i-branding.js +8 -0
- package/dist/interfaces/i-calamares-displaymanager.d.ts +17 -0
- package/dist/interfaces/i-calamares-displaymanager.js +1 -0
- package/dist/interfaces/i-calamares-finished.d.ts +12 -0
- package/dist/interfaces/i-calamares-finished.js +1 -0
- package/dist/interfaces/i-calamares-packages.d.ts +28 -0
- package/dist/interfaces/i-calamares-packages.js +1 -0
- package/dist/interfaces/i-calamares-partition.d.ts +40 -0
- package/dist/interfaces/i-calamares-partition.js +1 -0
- package/dist/interfaces/i-config-tools.d.ts +15 -0
- package/dist/interfaces/i-config-tools.js +8 -0
- package/dist/interfaces/i-devices.d.ts +20 -0
- package/dist/interfaces/i-devices.js +8 -0
- package/dist/interfaces/i-distro.d.ts +23 -0
- package/dist/interfaces/i-distro.js +8 -0
- package/dist/interfaces/i-drive-list.d.ts +33 -0
- package/dist/interfaces/i-drive-list.js +8 -0
- package/dist/interfaces/i-eggs-config.d.ts +32 -0
- package/dist/interfaces/i-eggs-config.js +8 -0
- package/dist/interfaces/i-excludes.d.ts +14 -0
- package/dist/interfaces/i-excludes.js +8 -0
- package/dist/interfaces/i-exec.d.ts +11 -0
- package/dist/interfaces/i-exec.js +8 -0
- package/dist/interfaces/i-initrd.d.ts +13 -0
- package/dist/interfaces/i-initrd.js +8 -0
- package/dist/interfaces/i-install.d.ts +16 -0
- package/dist/interfaces/i-install.js +8 -0
- package/dist/interfaces/i-installer.d.ts +17 -0
- package/dist/interfaces/i-installer.js +8 -0
- package/dist/interfaces/i-krill-config.d.ts +33 -0
- package/dist/interfaces/i-krill-config.js +8 -0
- package/dist/interfaces/i-krill.d.ts +42 -0
- package/dist/interfaces/i-krill.js +8 -0
- package/dist/interfaces/i-materia.d.ts +36 -0
- package/dist/interfaces/i-materia.js +8 -0
- package/dist/interfaces/i-net.d.ts +16 -0
- package/dist/interfaces/i-net.js +8 -0
- package/dist/interfaces/i-packages.d.ts +16 -0
- package/dist/interfaces/i-packages.js +8 -0
- package/dist/interfaces/i-partitions.d.ts +16 -0
- package/dist/interfaces/i-partitions.js +8 -0
- package/dist/interfaces/i-pxe.d.ts +45 -0
- package/dist/interfaces/i-pxe.js +1 -0
- package/dist/interfaces/i-remix.d.ts +21 -0
- package/dist/interfaces/i-remix.js +8 -0
- package/dist/interfaces/i-settings.d.ts +33 -0
- package/dist/interfaces/i-settings.js +8 -0
- package/dist/interfaces/i-user.d.ts +14 -0
- package/dist/interfaces/i-user.js +8 -0
- package/dist/interfaces/i-workdir.d.ts +14 -0
- package/dist/interfaces/i-workdir.js +8 -0
- package/dist/interfaces/i-xkb-model.d.ts +24 -0
- package/dist/interfaces/i-xkb-model.js +8 -0
- package/dist/interfaces/index.d.ts +25 -0
- package/dist/interfaces/index.js +8 -0
- package/dist/krill/modules/add-user.d.ts +20 -0
- package/dist/krill/modules/add-user.js +48 -0
- package/dist/krill/modules/bootloader-config.d.ts +14 -0
- package/dist/krill/modules/bootloader-config.js +165 -0
- package/dist/krill/modules/bootloader.d.ts +14 -0
- package/dist/krill/modules/bootloader.js +157 -0
- package/dist/krill/modules/change-password.d.ts +15 -0
- package/dist/krill/modules/change-password.js +18 -0
- package/dist/krill/modules/del-live-user.d.ts +14 -0
- package/dist/krill/modules/del-live-user.js +39 -0
- package/dist/krill/modules/fstab.d.ts +14 -0
- package/dist/krill/modules/fstab.js +123 -0
- package/dist/krill/modules/grubcfg.d.ts +17 -0
- package/dist/krill/modules/grubcfg.js +29 -0
- package/dist/krill/modules/hostname.d.ts +13 -0
- package/dist/krill/modules/hostname.js +50 -0
- package/dist/krill/modules/initramfs-cfg.d.ts +14 -0
- package/dist/krill/modules/initramfs-cfg.js +22 -0
- package/dist/krill/modules/initramfs.d.ts +13 -0
- package/dist/krill/modules/initramfs.js +54 -0
- package/dist/krill/modules/locale-cfg.d.ts +10 -0
- package/dist/krill/modules/locale-cfg.js +58 -0
- package/dist/krill/modules/locale.d.ts +13 -0
- package/dist/krill/modules/locale.js +91 -0
- package/dist/krill/modules/m-keyboard.d.ts +14 -0
- package/dist/krill/modules/m-keyboard.js +58 -0
- package/dist/krill/modules/machine-id.d.ts +15 -0
- package/dist/krill/modules/machine-id.js +33 -0
- package/dist/krill/modules/mkfs.d.ts +15 -0
- package/dist/krill/modules/mkfs.js +50 -0
- package/dist/krill/modules/mount-fs.d.ts +17 -0
- package/dist/krill/modules/mount-fs.js +62 -0
- package/dist/krill/modules/mount-vfs.d.ts +17 -0
- package/dist/krill/modules/mount-vfs.js +40 -0
- package/dist/krill/modules/network-cfg.d.ts +19 -0
- package/dist/krill/modules/network-cfg.js +64 -0
- package/dist/krill/modules/packages.d.ts +14 -0
- package/dist/krill/modules/packages.js +111 -0
- package/dist/krill/modules/partition.d.ts +20 -0
- package/dist/krill/modules/partition.js +324 -0
- package/dist/krill/modules/remove-installer-link.d.ts +13 -0
- package/dist/krill/modules/remove-installer-link.js +35 -0
- package/dist/krill/modules/umount.d.ts +14 -0
- package/dist/krill/modules/umount.js +28 -0
- package/dist/krill/modules/unpackfs.d.ts +13 -0
- package/dist/krill/modules/unpackfs.js +20 -0
- package/dist/krill/prepare.d.ts +78 -0
- package/dist/krill/prepare.js +624 -0
- package/dist/krill/sequence.d.ts +154 -0
- package/dist/krill/sequence.js +652 -0
- package/dist/lib/get_address.d.ts +8 -0
- package/dist/lib/get_address.js +23 -0
- package/dist/lib/get_dns.d.ts +8 -0
- package/dist/lib/get_dns.js +23 -0
- package/dist/lib/get_domain.d.ts +8 -0
- package/dist/lib/get_domain.js +23 -0
- package/dist/lib/get_gateway.d.ts +8 -0
- package/dist/lib/get_gateway.js +23 -0
- package/dist/lib/get_hostname.d.ts +8 -0
- package/dist/lib/get_hostname.js +23 -0
- package/dist/lib/get_netmask.d.ts +8 -0
- package/dist/lib/get_netmask.js +23 -0
- package/dist/lib/get_password.d.ts +8 -0
- package/dist/lib/get_password.js +36 -0
- package/dist/lib/get_userfullname.d.ts +8 -0
- package/dist/lib/get_userfullname.js +23 -0
- package/dist/lib/get_username.d.ts +8 -0
- package/dist/lib/get_username.js +23 -0
- package/dist/lib/kill_me_softly.d.ts +11 -0
- package/dist/lib/kill_me_softly.js +61 -0
- package/dist/lib/select_address_type.d.ts +8 -0
- package/dist/lib/select_address_type.js +24 -0
- package/dist/lib/select_filesystem_type.d.ts +8 -0
- package/dist/lib/select_filesystem_type.js +46 -0
- package/dist/lib/select_installation_device.d.ts +8 -0
- package/dist/lib/select_installation_device.js +30 -0
- package/dist/lib/select_installation_mode.d.ts +8 -0
- package/dist/lib/select_installation_mode.js +24 -0
- package/dist/lib/select_interface.d.ts +8 -0
- package/dist/lib/select_interface.js +24 -0
- package/dist/lib/select_keyboard_layout.d.ts +11 -0
- package/dist/lib/select_keyboard_layout.js +36 -0
- package/dist/lib/select_keyboard_model.d.ts +11 -0
- package/dist/lib/select_keyboard_model.js +34 -0
- package/dist/lib/select_keyboard_option.d.ts +11 -0
- package/dist/lib/select_keyboard_option.js +34 -0
- package/dist/lib/select_keyboard_variant.d.ts +11 -0
- package/dist/lib/select_keyboard_variant.js +35 -0
- package/dist/lib/select_languages.d.ts +8 -0
- package/dist/lib/select_languages.js +28 -0
- package/dist/lib/select_regions.d.ts +8 -0
- package/dist/lib/select_regions.js +24 -0
- package/dist/lib/select_user_swap_choice.d.ts +8 -0
- package/dist/lib/select_user_swap_choice.js +34 -0
- package/dist/lib/select_zones.d.ts +8 -0
- package/dist/lib/select_zones.js +518 -0
- package/dist/lib/utils.d.ts +34 -0
- package/dist/lib/utils.js +79 -0
- package/dist/penguins-eggs-tarball-10.0.54-1-linux-x64.tar.gz +0 -0
- package/package.json +11 -7
- package/scripts/_eggs +10 -1
- package/scripts/eggs.bash +1 -0
- /package/addons/eggs/theme/livecd/{grub.main.cfg → grub.main.full.cfg} +0 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/export/deb.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, Flags } from '@oclif/core';
|
|
9
|
+
import Distro from '../../classes/distro.js';
|
|
10
|
+
import Diversions from '../../classes/diversions.js';
|
|
11
|
+
import Tools from '../../classes/tools.js';
|
|
12
|
+
import Utils from '../../classes/utils.js';
|
|
13
|
+
import { exec } from '../../lib/utils.js';
|
|
14
|
+
import os from 'node:os';
|
|
15
|
+
import { execSync } from 'node:child_process';
|
|
16
|
+
export default class ExportPkg extends Command {
|
|
17
|
+
static description = 'export pkg/iso to the destination host';
|
|
18
|
+
static examples = ['eggs export pkg', 'eggs export pkg --clean', 'eggs export pkg --all'];
|
|
19
|
+
static flags = {
|
|
20
|
+
all: Flags.boolean({ char: 'a', description: 'export all archs' }),
|
|
21
|
+
clean: Flags.boolean({ char: 'c', description: 'remove old .deb before to copy' }),
|
|
22
|
+
help: Flags.help({ char: 'h' }),
|
|
23
|
+
verbose: Flags.boolean({ char: 'v', description: 'verbose' })
|
|
24
|
+
};
|
|
25
|
+
user = '';
|
|
26
|
+
all = false;
|
|
27
|
+
clean = false;
|
|
28
|
+
verbose = false;
|
|
29
|
+
echo = {};
|
|
30
|
+
Tu = new Tools();
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
async run() {
|
|
35
|
+
const { args, flags } = await this.parse(ExportPkg);
|
|
36
|
+
Utils.titles(this.id + ' ' + this.argv);
|
|
37
|
+
Utils.warning(ExportPkg.description);
|
|
38
|
+
// Ora servono in più parti
|
|
39
|
+
this.user = os.userInfo().username;
|
|
40
|
+
if (this.user === 'root') {
|
|
41
|
+
this.user = execSync('echo $SUDO_USER', { encoding: 'utf-8' }).trim();
|
|
42
|
+
if (this.user === '') {
|
|
43
|
+
this.user = execSync('echo $DOAS_USER', { encoding: 'utf-8' }).trim();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
this.all = flags.all;
|
|
47
|
+
this.clean = flags.clean;
|
|
48
|
+
this.verbose = flags.verbose;
|
|
49
|
+
this.echo = Utils.setEcho(this.verbose);
|
|
50
|
+
await this.Tu.loadSettings();
|
|
51
|
+
let distro = new Distro();
|
|
52
|
+
const familyId = distro.familyId;
|
|
53
|
+
const distroId = distro.distroId;
|
|
54
|
+
const remoteMountpoint = `/tmp/eggs-${(Math.random() + 1).toString(36).slice(7)}`;
|
|
55
|
+
let localPath = '';
|
|
56
|
+
let remotePath = '';
|
|
57
|
+
let filter = '';
|
|
58
|
+
/**
|
|
59
|
+
* aldos
|
|
60
|
+
*/
|
|
61
|
+
if (familyId === 'aldos') {
|
|
62
|
+
Utils.warning("aldos rpm");
|
|
63
|
+
process.exit();
|
|
64
|
+
/**
|
|
65
|
+
* alpine
|
|
66
|
+
*/
|
|
67
|
+
}
|
|
68
|
+
else if (familyId === 'alpine') {
|
|
69
|
+
Utils.warning("alpine apk");
|
|
70
|
+
let arch = 'x86_64';
|
|
71
|
+
if (process.arch === 'ia32') {
|
|
72
|
+
arch = 'i386';
|
|
73
|
+
}
|
|
74
|
+
localPath = `/home/${this.user}/packages/alpine/${arch}`;
|
|
75
|
+
remotePath = `${this.Tu.config.remotePathPackages}/alpine/`;
|
|
76
|
+
filter = `penguins-eggs*10.?.*-r*.apk`;
|
|
77
|
+
/**
|
|
78
|
+
* Arch/Manjaro
|
|
79
|
+
*/
|
|
80
|
+
}
|
|
81
|
+
else if (familyId === 'archlinux') {
|
|
82
|
+
/**
|
|
83
|
+
* Manjaro
|
|
84
|
+
*/
|
|
85
|
+
if (Diversions.isManjaroBased(distroId)) {
|
|
86
|
+
Utils.warning("manjaro PKGBUILD");
|
|
87
|
+
localPath = `/home/${this.user}/penguins-eggs-pkgbuilds/manjaro/penguins-eggs`;
|
|
88
|
+
remotePath = this.Tu.config.remotePathPackages + "/manjaro";
|
|
89
|
+
filter = `penguins-eggs-10.?.*-?-any.pkg.tar.*`;
|
|
90
|
+
/**
|
|
91
|
+
* Arch
|
|
92
|
+
*/
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
Utils.warning("aur PKGBUILD");
|
|
96
|
+
localPath = `/home/${this.user}/penguins-eggs-pkgbuilds/aur/penguins-eggs`;
|
|
97
|
+
remotePath = this.Tu.config.remotePathPackages + "/aur";
|
|
98
|
+
filter = `penguins-eggs-10.?.*-?-any.pkg.tar.zst`;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Debian
|
|
102
|
+
*/
|
|
103
|
+
}
|
|
104
|
+
else if (familyId === "debian") {
|
|
105
|
+
Utils.warning("debian deb");
|
|
106
|
+
localPath = `/home/${this.user}/penguins-eggs/perrisbrewery/workdir`;
|
|
107
|
+
remotePath = this.Tu.config.remotePathPackages + "/debs";
|
|
108
|
+
let arch = Utils.uefiArch();
|
|
109
|
+
if (this.all) {
|
|
110
|
+
arch = '*';
|
|
111
|
+
}
|
|
112
|
+
filter = `penguins-eggs_10.?.*-?_${arch}.deb`;
|
|
113
|
+
/**
|
|
114
|
+
* fedora
|
|
115
|
+
*/
|
|
116
|
+
}
|
|
117
|
+
else if (familyId === 'fedora') {
|
|
118
|
+
Utils.warning("fedora rpm packages");
|
|
119
|
+
localPath = `/home/${this.user}/rpmbuild/RPMS/x86_64`;
|
|
120
|
+
remotePath = this.Tu.config.remotePathPackages + "/fedora";
|
|
121
|
+
filter = `penguins-eggs-10.?.*-?fedora.*.rpm`;
|
|
122
|
+
/**
|
|
123
|
+
* openmamba
|
|
124
|
+
*/
|
|
125
|
+
}
|
|
126
|
+
else if (familyId === 'openmamba') {
|
|
127
|
+
Utils.warning("openmamba rpm packages");
|
|
128
|
+
localPath = `/usr/src/RPM/RPMS/x86_64`;
|
|
129
|
+
remotePath = this.Tu.config.remotePathPackages + "/openmamba";
|
|
130
|
+
filter = `penguins-eggs-10.?.*-?mamba.*.rpm`;
|
|
131
|
+
/**
|
|
132
|
+
* opensuse
|
|
133
|
+
*/
|
|
134
|
+
}
|
|
135
|
+
else if (familyId === 'opensuse') {
|
|
136
|
+
Utils.warning("opensuse rpm packages");
|
|
137
|
+
process.exit();
|
|
138
|
+
/**
|
|
139
|
+
* voidlinux
|
|
140
|
+
*/
|
|
141
|
+
}
|
|
142
|
+
else if (familyId === 'voidlinux') {
|
|
143
|
+
Utils.warning("voidlinux packages");
|
|
144
|
+
process.exit();
|
|
145
|
+
}
|
|
146
|
+
let cmd = `mkdir ${remoteMountpoint}\n`;
|
|
147
|
+
cmd += `sshfs ${this.Tu.config.remoteUser}@${this.Tu.config.remoteHost}:${remotePath} ${remoteMountpoint}\n`;
|
|
148
|
+
if (this.clean) {
|
|
149
|
+
cmd += `rm -f ${remoteMountpoint}/${filter}\n`;
|
|
150
|
+
}
|
|
151
|
+
cmd += `cp ${localPath}/${filter} ${remoteMountpoint}\n`;
|
|
152
|
+
cmd += 'sync\n';
|
|
153
|
+
cmd += `umount ${remoteMountpoint}\n`;
|
|
154
|
+
cmd += `rm -rf ${remoteMountpoint}\n`;
|
|
155
|
+
if (!this.verbose) {
|
|
156
|
+
if (this.clean) {
|
|
157
|
+
console.log(`remove: ${this.Tu.config.remoteUser}@${this.Tu.config.remoteHost}:${filter}`);
|
|
158
|
+
}
|
|
159
|
+
console.log(`copy: ${localPath}/${filter} to ${this.Tu.config.remoteUser}@${this.Tu.config.remoteHost}:${remotePath}`);
|
|
160
|
+
}
|
|
161
|
+
await exec(cmd, this.echo);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/export/deb.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 Tools from '../../classes/tools.js';
|
|
10
|
+
export default class ExportTarballs extends Command {
|
|
11
|
+
static description: string;
|
|
12
|
+
static examples: string[];
|
|
13
|
+
static flags: {
|
|
14
|
+
clean: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
help: import("@oclif/core/interfaces").BooleanFlag<void>;
|
|
16
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
17
|
+
};
|
|
18
|
+
user: string;
|
|
19
|
+
clean: boolean;
|
|
20
|
+
verbose: boolean;
|
|
21
|
+
echo: {};
|
|
22
|
+
Tu: Tools;
|
|
23
|
+
/**
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
run(): Promise<void>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/export/deb.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, Flags } from '@oclif/core';
|
|
9
|
+
import Tools from '../../classes/tools.js';
|
|
10
|
+
import Utils from '../../classes/utils.js';
|
|
11
|
+
import { exec } from '../../lib/utils.js';
|
|
12
|
+
import os from 'node:os';
|
|
13
|
+
import fs from 'fs';
|
|
14
|
+
// pjson
|
|
15
|
+
import { createRequire } from 'module';
|
|
16
|
+
const require = createRequire(import.meta.url);
|
|
17
|
+
const pjson = require('../../../package.json');
|
|
18
|
+
import { execSync } from 'node:child_process';
|
|
19
|
+
export default class ExportTarballs extends Command {
|
|
20
|
+
static description = 'export pkg/iso/tarballs to the destination host';
|
|
21
|
+
static examples = ['eggs export tarballs', 'eggs export tarballs --clean'];
|
|
22
|
+
static flags = {
|
|
23
|
+
clean: Flags.boolean({ char: 'c', description: 'remove old .deb before to copy' }),
|
|
24
|
+
help: Flags.help({ char: 'h' }),
|
|
25
|
+
verbose: Flags.boolean({ char: 'v', description: 'verbose' })
|
|
26
|
+
};
|
|
27
|
+
user = '';
|
|
28
|
+
clean = false;
|
|
29
|
+
verbose = false;
|
|
30
|
+
echo = {};
|
|
31
|
+
Tu = new Tools();
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
*/
|
|
35
|
+
async run() {
|
|
36
|
+
const { args, flags } = await this.parse(ExportTarballs);
|
|
37
|
+
Utils.titles(this.id + ' ' + this.argv);
|
|
38
|
+
Utils.warning(ExportTarballs.description);
|
|
39
|
+
// Ora servono in più parti
|
|
40
|
+
this.user = os.userInfo().username;
|
|
41
|
+
if (this.user === 'root') {
|
|
42
|
+
this.user = execSync('echo $SUDO_USER', { encoding: 'utf-8' }).trim();
|
|
43
|
+
if (this.user === '') {
|
|
44
|
+
this.user = execSync('echo $DOAS_USER', { encoding: 'utf-8' }).trim();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
this.clean = flags.clean;
|
|
48
|
+
this.verbose = flags.verbose;
|
|
49
|
+
this.echo = Utils.setEcho(this.verbose);
|
|
50
|
+
await this.Tu.loadSettings();
|
|
51
|
+
const remoteMountpoint = `/tmp/eggs-${(Math.random() + 1).toString(36).slice(7)}`;
|
|
52
|
+
const localPath = `/home/${this.user}/penguins-eggs/dist/`;
|
|
53
|
+
const remotePath = `${this.Tu.config.remotePathPackages}/tarballs/`;
|
|
54
|
+
const filter = `eggs-v10.?.*-*-linux-x64.tar.gz`;
|
|
55
|
+
const tarName = `penguins-eggs-tarball-${pjson.version}-1-linux-x64.tar.gz`;
|
|
56
|
+
// remove old tarball
|
|
57
|
+
let cmd = `rm -f ${localPath}${tarName}`;
|
|
58
|
+
await exec(cmd, this.echo);
|
|
59
|
+
// rename new tarball
|
|
60
|
+
cmd = `mv ${localPath}${filter} ${localPath}${tarName}`;
|
|
61
|
+
await exec(cmd, this.echo);
|
|
62
|
+
// check if new tarball exists
|
|
63
|
+
if (!fs.existsSync(`${localPath}${tarName}`)) {
|
|
64
|
+
console.log(`No ${tarName} exists!`);
|
|
65
|
+
console.log(`Create it using: pnpm tarballs`);
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
cmd = `mkdir ${remoteMountpoint}\n`;
|
|
69
|
+
cmd += `sshfs ${this.Tu.config.remoteUser}@${this.Tu.config.remoteHost}:${remotePath} ${remoteMountpoint}\n`;
|
|
70
|
+
if (this.clean) {
|
|
71
|
+
cmd += `rm -f ${remoteMountpoint}/*\n`;
|
|
72
|
+
}
|
|
73
|
+
cmd += `cp ${localPath}${tarName} ${remoteMountpoint}/${tarName}\n`;
|
|
74
|
+
cmd += 'sync\n';
|
|
75
|
+
cmd += `umount ${remoteMountpoint}\n`;
|
|
76
|
+
cmd += `rm -rf ${remoteMountpoint}\n`;
|
|
77
|
+
if (!this.verbose) {
|
|
78
|
+
if (this.clean) {
|
|
79
|
+
console.log(`remove: ${this.Tu.config.remoteUser}@${this.Tu.config.remoteHost}:${remotePath}*`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
await exec(cmd, this.echo);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/install.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
|
+
* Class Krill
|
|
11
|
+
*/
|
|
12
|
+
export default class Install extends Command {
|
|
13
|
+
static aliases: string[];
|
|
14
|
+
static description: string;
|
|
15
|
+
static examples: string[];
|
|
16
|
+
static flags: {
|
|
17
|
+
btrfs: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
18
|
+
chroot: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
19
|
+
crypted: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
20
|
+
domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
halt: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
22
|
+
help: import("@oclif/core/interfaces").BooleanFlag<void>;
|
|
23
|
+
ip: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
24
|
+
nointeractive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
25
|
+
none: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
26
|
+
pve: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
27
|
+
random: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
28
|
+
small: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
29
|
+
suspend: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
30
|
+
unattended: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
31
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Execute
|
|
35
|
+
*/
|
|
36
|
+
run(): Promise<void>;
|
|
37
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/install.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, Flags } from '@oclif/core';
|
|
9
|
+
import yaml from 'js-yaml';
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import https from 'node:https';
|
|
12
|
+
import Utils from '../classes/utils.js';
|
|
13
|
+
import Krill from '../krill/prepare.js';
|
|
14
|
+
const agent = new https.Agent({
|
|
15
|
+
rejectUnauthorized: false
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* Class Krill
|
|
19
|
+
*/
|
|
20
|
+
export default class Install extends Command {
|
|
21
|
+
static aliases = ['krill'];
|
|
22
|
+
static description = 'krill: the CLI system installer - the egg became a penguin!';
|
|
23
|
+
static examples = ['sudo eggs install', 'sudo eggs install --unattended --halt', 'sudo eggs install --chroot'];
|
|
24
|
+
static flags = {
|
|
25
|
+
btrfs: Flags.boolean({ char: 'b', description: 'Format btrfs' }),
|
|
26
|
+
chroot: Flags.boolean({ char: 'c', description: 'chroot before to end' }),
|
|
27
|
+
crypted: Flags.boolean({ char: 'k', description: 'Crypted CLI installation' }),
|
|
28
|
+
domain: Flags.string({ char: 'd', description: 'Domain name, defult: .local' }),
|
|
29
|
+
halt: Flags.boolean({ char: 'H', description: 'Halt the system after installation' }),
|
|
30
|
+
help: Flags.help({ char: 'h' }),
|
|
31
|
+
ip: Flags.boolean({ char: 'i', description: 'hostname as ip, eg: ip-192-168-1-33' }),
|
|
32
|
+
nointeractive: Flags.boolean({ char: 'n', description: 'no user interaction' }),
|
|
33
|
+
none: Flags.boolean({ char: 'N', description: 'Swap none: 256M' }),
|
|
34
|
+
pve: Flags.boolean({ char: 'p', description: 'Proxmox VE install' }),
|
|
35
|
+
random: Flags.boolean({ char: 'r', description: 'Add random to hostname, eg: colibri-ay412dt' }),
|
|
36
|
+
small: Flags.boolean({ char: 's', description: 'Swap small: RAM' }),
|
|
37
|
+
suspend: Flags.boolean({ char: 'S', description: 'Swap suspend: RAM x 2' }),
|
|
38
|
+
unattended: Flags.boolean({ char: 'u', description: 'Unattended installation' }),
|
|
39
|
+
verbose: Flags.boolean({ char: 'v', description: 'Verbose' })
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Execute
|
|
43
|
+
*/
|
|
44
|
+
async run() {
|
|
45
|
+
Utils.titles(this.id + ' ' + this.argv);
|
|
46
|
+
const { flags } = await this.parse(Install);
|
|
47
|
+
const { unattended } = flags;
|
|
48
|
+
// krillConfig
|
|
49
|
+
let krillConfig = {};
|
|
50
|
+
const content = fs.readFileSync('/etc/penguins-eggs.d/krill.yaml', 'utf8');
|
|
51
|
+
krillConfig = yaml.load(content);
|
|
52
|
+
// nointeractive
|
|
53
|
+
const { nointeractive } = flags;
|
|
54
|
+
// halt
|
|
55
|
+
const { halt } = flags;
|
|
56
|
+
// hostname
|
|
57
|
+
const { ip } = flags;
|
|
58
|
+
const { random } = flags;
|
|
59
|
+
// chroot before to end
|
|
60
|
+
const { chroot } = flags;
|
|
61
|
+
let domain = '';
|
|
62
|
+
if (flags.domain) {
|
|
63
|
+
domain = flags.domain;
|
|
64
|
+
}
|
|
65
|
+
// swap
|
|
66
|
+
const { suspend } = flags;
|
|
67
|
+
const { small } = flags;
|
|
68
|
+
const { none } = flags;
|
|
69
|
+
let { crypted } = flags;
|
|
70
|
+
const { pve } = flags;
|
|
71
|
+
if (pve) {
|
|
72
|
+
crypted = false;
|
|
73
|
+
}
|
|
74
|
+
const { verbose } = flags;
|
|
75
|
+
if (Utils.isRoot()) {
|
|
76
|
+
if (Utils.isLive()) {
|
|
77
|
+
const krill = new Krill(unattended, nointeractive, halt, chroot);
|
|
78
|
+
await krill.prepare(krillConfig, ip, random, domain, suspend, small, none, crypted, pve, flags.btrfs, verbose);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
Utils.warning('You are in an installed system!');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
Utils.useRoot(this.id);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/kill.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 Kill extends Command {
|
|
13
|
+
static description: string;
|
|
14
|
+
static examples: string[];
|
|
15
|
+
static flags: {
|
|
16
|
+
help: import("@oclif/core/interfaces").BooleanFlag<void>;
|
|
17
|
+
isos: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
18
|
+
nointeractive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
19
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
20
|
+
};
|
|
21
|
+
config_file: string;
|
|
22
|
+
snapshot_dir: string;
|
|
23
|
+
run(): Promise<void>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/kill.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, Flags } from '@oclif/core';
|
|
9
|
+
import Settings from '../classes/settings.js';
|
|
10
|
+
import Utils from '../classes/utils.js';
|
|
11
|
+
import killMeSoftly from '../lib/kill_me_softly.js';
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
*/
|
|
15
|
+
export default class Kill extends Command {
|
|
16
|
+
static description = 'kill the eggs/free the nest';
|
|
17
|
+
static examples = ['sudo eggs kill'];
|
|
18
|
+
static flags = {
|
|
19
|
+
help: Flags.help({ char: 'h' }),
|
|
20
|
+
isos: Flags.boolean({ char: 'i', description: 'erase all ISOs on remote mount' }),
|
|
21
|
+
nointeractive: Flags.boolean({ char: 'n', description: 'no user interaction' }),
|
|
22
|
+
verbose: Flags.boolean({ char: 'v', description: 'verbose' })
|
|
23
|
+
};
|
|
24
|
+
config_file = '/etc/penguins-eggs.d/eggs.yaml';
|
|
25
|
+
snapshot_dir = '';
|
|
26
|
+
async run() {
|
|
27
|
+
Utils.titles(this.id + ' ' + this.argv);
|
|
28
|
+
const { flags } = await this.parse(Kill);
|
|
29
|
+
const { verbose } = flags;
|
|
30
|
+
const { isos } = flags;
|
|
31
|
+
const { nointeractive } = flags;
|
|
32
|
+
const echo = Utils.setEcho(verbose);
|
|
33
|
+
if (Utils.isRoot()) {
|
|
34
|
+
const settings = new Settings();
|
|
35
|
+
await settings.load();
|
|
36
|
+
await settings.listFreeSpace();
|
|
37
|
+
if (Utils.isMountpoint(settings.config.snapshot_mnt)) {
|
|
38
|
+
console.log('==========================================');
|
|
39
|
+
Utils.warning('You are working on a mountpoint');
|
|
40
|
+
console.log('==========================================');
|
|
41
|
+
}
|
|
42
|
+
if (nointeractive || (await Utils.customConfirm())) {
|
|
43
|
+
await killMeSoftly(settings.config.snapshot_dir, settings.config.snapshot_mnt, isos);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
Utils.useRoot(this.id);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/adapt.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 Love extends Command {
|
|
13
|
+
static description: string;
|
|
14
|
+
static examples: string[];
|
|
15
|
+
static flags: {
|
|
16
|
+
help: import("@oclif/core/interfaces").BooleanFlag<void>;
|
|
17
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
18
|
+
};
|
|
19
|
+
run(): Promise<void>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/adapt.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, Flags } from '@oclif/core';
|
|
9
|
+
import yaml from 'js-yaml';
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import Utils from '../classes/utils.js';
|
|
13
|
+
import { exec } from '../lib/utils.js';
|
|
14
|
+
// _dirname
|
|
15
|
+
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
export default class Love extends Command {
|
|
20
|
+
static description = 'the simplest way to get an egg!';
|
|
21
|
+
static examples = ['eggs auto'];
|
|
22
|
+
static flags = {
|
|
23
|
+
help: Flags.help({ char: 'h' }),
|
|
24
|
+
verbose: Flags.boolean({ char: 'v' })
|
|
25
|
+
};
|
|
26
|
+
async run() {
|
|
27
|
+
const { args, flags } = await this.parse(Love);
|
|
28
|
+
let verbose = false;
|
|
29
|
+
if (flags.verbose) {
|
|
30
|
+
verbose = true;
|
|
31
|
+
}
|
|
32
|
+
const echo = Utils.setEcho(verbose);
|
|
33
|
+
Utils.titles(this.id + ' ' + this.argv);
|
|
34
|
+
// No sudo!
|
|
35
|
+
if (process.getuid && process.getuid() === 0) {
|
|
36
|
+
Utils.warning(`You must be kind in love, please don't use sudo!`);
|
|
37
|
+
process.exit(0);
|
|
38
|
+
}
|
|
39
|
+
let loveConf = '/etc/penguins-eggs.d/love.yaml';
|
|
40
|
+
if (!fs.existsSync(loveConf)) {
|
|
41
|
+
loveConf = __dirname + '/../../conf/love.yaml';
|
|
42
|
+
}
|
|
43
|
+
const cmds = yaml.load(fs.readFileSync(loveConf, 'utf8'));
|
|
44
|
+
console.log('The following commands will be executed:');
|
|
45
|
+
console.log();
|
|
46
|
+
for (const cmd of cmds) {
|
|
47
|
+
console.log(`- ${cmd}`);
|
|
48
|
+
}
|
|
49
|
+
console.log();
|
|
50
|
+
if (await Utils.customConfirm()) {
|
|
51
|
+
for (const cmd of cmds) {
|
|
52
|
+
await exec(cmd);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.log('Aborted!');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/mom.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
|
+
export default class Mom extends Command {
|
|
10
|
+
static description: string;
|
|
11
|
+
static examples: string[];
|
|
12
|
+
static flags: {
|
|
13
|
+
help: import("@oclif/core/interfaces").BooleanFlag<void>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/mom.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, Flags } from '@oclif/core';
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
import Utils from '../classes/utils.js';
|
|
11
|
+
import { exec } from '../lib/utils.js';
|
|
12
|
+
// _dirname
|
|
13
|
+
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
14
|
+
export default class Mom extends Command {
|
|
15
|
+
static description = 'ask help from mommy - TUI helper';
|
|
16
|
+
static examples = ['eggs mom'];
|
|
17
|
+
static flags = {
|
|
18
|
+
help: Flags.help({ char: 'h' })
|
|
19
|
+
};
|
|
20
|
+
async run() {
|
|
21
|
+
Utils.titles(this.id + ' ' + this.argv);
|
|
22
|
+
// No sudo!
|
|
23
|
+
if (process.getuid && process.getuid() === 0) {
|
|
24
|
+
Utils.warning('You must to be kind with your mom! Call her without sudo');
|
|
25
|
+
process.exit(0);
|
|
26
|
+
}
|
|
27
|
+
const cmd = path.resolve(__dirname, '../../scripts/mom.sh');
|
|
28
|
+
await exec(cmd);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/commands/produce.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
|
+
export default class Produce extends Command {
|
|
10
|
+
static description: string;
|
|
11
|
+
static examples: string[];
|
|
12
|
+
static flags: {
|
|
13
|
+
addons: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
basename: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
clone: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
cryptedclone: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
17
|
+
excludes: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
help: import("@oclif/core/interfaces").BooleanFlag<void>;
|
|
19
|
+
links: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
max: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
21
|
+
noicon: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
22
|
+
nointeractive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
23
|
+
pendrive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
24
|
+
prefix: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
25
|
+
release: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
26
|
+
script: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
27
|
+
standard: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
28
|
+
theme: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
29
|
+
unsecure: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
30
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
31
|
+
yolk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
32
|
+
};
|
|
33
|
+
run(): Promise<void>;
|
|
34
|
+
}
|