penguins-eggs 10.1.0 → 10.1.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 +1 -32
- package/README.md +109 -78
- package/conf/derivatives.yaml +3 -0
- package/conf/distros/buster/calamares/modules/users.yml +1 -0
- package/conf/distros/noble/calamares/modules/users.yml +1 -0
- package/dist/classes/bleach.d.ts +32 -0
- package/dist/classes/bleach.js +135 -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 +56 -0
- package/dist/classes/distro.js +413 -0
- package/dist/classes/diversions.d.ts +52 -0
- package/dist/classes/diversions.js +126 -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/bind-live-fs.d.ts +18 -0
- package/dist/classes/ovary.d/bind-live-fs.js +177 -0
- package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
- package/dist/classes/ovary.d/bind-vfs.js +37 -0
- package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
- package/dist/classes/ovary.d/create-xdg-autostart.js +194 -0
- package/dist/classes/ovary.d/edit-live-fs.d.ts +20 -0
- package/dist/classes/ovary.d/edit-live-fs.js +245 -0
- package/dist/classes/ovary.d/fertilization.d.ts +12 -0
- package/dist/classes/ovary.d/fertilization.js +51 -0
- package/dist/classes/ovary.d/finished.d.ts +13 -0
- package/dist/classes/ovary.d/finished.js +41 -0
- package/dist/classes/ovary.d/initrd.d.ts +21 -0
- package/dist/classes/ovary.d/initrd.js +68 -0
- package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
- package/dist/classes/ovary.d/kernel-copy.js +22 -0
- package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
- package/dist/classes/ovary.d/live-create-structure.js +90 -0
- package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
- package/dist/classes/ovary.d/make-dot-disk.js +40 -0
- package/dist/classes/ovary.d/make-efi.d.ts +12 -0
- package/dist/classes/ovary.d/make-efi.js +271 -0
- package/dist/classes/ovary.d/make-iso.d.ts +13 -0
- package/dist/classes/ovary.d/make-iso.js +45 -0
- package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
- package/dist/classes/ovary.d/make-squashfs.js +110 -0
- package/dist/classes/ovary.d/merged.d.ts +27 -0
- package/dist/classes/ovary.d/merged.js +77 -0
- package/dist/classes/ovary.d/produce.d.ts +23 -0
- package/dist/classes/ovary.d/produce.js +293 -0
- package/dist/classes/ovary.d/rexec.d.ts +13 -0
- package/dist/classes/ovary.d/rexec.js +34 -0
- package/dist/classes/ovary.d/syslinux.d.ts +12 -0
- package/dist/classes/ovary.d/syslinux.js +79 -0
- package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
- package/dist/classes/ovary.d/user-create-live.js +93 -0
- package/dist/classes/ovary.d/users-remove.d.ts +9 -0
- package/dist/classes/ovary.d/users-remove.js +38 -0
- package/dist/classes/ovary.d/xorriso-commend.d.ts +14 -0
- package/dist/classes/ovary.d/xorriso-commend.js +119 -0
- package/dist/classes/ovary.d.ts +82 -0
- package/dist/classes/ovary.js +86 -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 +136 -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 +776 -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 +52 -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 +527 -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/architecture.d.ts +41 -0
- package/dist/classes/utils.d/architecture.js +87 -0
- package/dist/classes/utils.d/console-output.d.ts +26 -0
- package/dist/classes/utils.d/console-output.js +46 -0
- package/dist/classes/utils.d/filesystem.d.ts +53 -0
- package/dist/classes/utils.d/filesystem.js +152 -0
- package/dist/classes/utils.d/formatters.d.ts +32 -0
- package/dist/classes/utils.d/formatters.js +64 -0
- package/dist/classes/utils.d/kernel.d.ts +83 -0
- package/dist/classes/utils.d/kernel.js +288 -0
- package/dist/classes/utils.d/network.d.ts +43 -0
- package/dist/classes/utils.d/network.js +133 -0
- package/dist/classes/utils.d/package-info.d.ts +55 -0
- package/dist/classes/utils.d/package-info.js +137 -0
- package/dist/classes/utils.d/snapshot.d.ts +44 -0
- package/dist/classes/utils.d/snapshot.js +102 -0
- package/dist/classes/utils.d/system.d.ts +63 -0
- package/dist/classes/utils.d/system.js +200 -0
- package/dist/classes/utils.d/user-interaction.d.ts +39 -0
- package/dist/classes/utils.d/user-interaction.js +104 -0
- package/dist/classes/utils.d.ts +95 -0
- package/dist/classes/utils.js +111 -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 +21 -0
- package/dist/commands/dad.js +47 -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 +79 -0
- package/dist/commands/install.d.ts +38 -0
- package/dist/commands/install.js +91 -0
- package/dist/commands/kill.d.ts +24 -0
- package/dist/commands/kill.js +50 -0
- package/dist/commands/love.d.ts +21 -0
- package/dist/commands/love.js +73 -0
- package/dist/commands/mom.d.ts +16 -0
- package/dist/commands/mom.js +30 -0
- package/dist/commands/pods.d.ts +22 -0
- package/dist/commands/pods.js +92 -0
- package/dist/commands/produce.d.ts +35 -0
- package/dist/commands/produce.js +221 -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/index.d.ts +8 -0
- package/dist/index.js +8 -0
- package/dist/index_old.d.ts +8 -0
- package/dist/index_old.js +8 -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-luks-passphrase.d.ts +11 -0
- package/dist/interfaces/i-luks-passphrase.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-os-release.d.ts +5 -0
- package/dist/interfaces/i-os-release.js +1 -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 +26 -0
- package/dist/interfaces/index.js +8 -0
- package/dist/krill/classes/cfs.d.ts +17 -0
- package/dist/krill/classes/cfs.js +39 -0
- package/dist/krill/classes/krill_enums.d.ts +37 -0
- package/dist/krill/classes/krill_enums.js +41 -0
- package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
- package/dist/krill/classes/prepare.d/confirm.js +30 -0
- package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
- package/dist/krill/classes/prepare.d/keyboard.js +62 -0
- package/dist/krill/classes/prepare.d/location.d.ts +17 -0
- package/dist/krill/classes/prepare.d/location.js +59 -0
- package/dist/krill/classes/prepare.d/network.d.ts +14 -0
- package/dist/krill/classes/prepare.d/network.js +68 -0
- package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
- package/dist/krill/classes/prepare.d/partitions.js +86 -0
- package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
- package/dist/krill/classes/prepare.d/summary.js +69 -0
- package/dist/krill/classes/prepare.d/users.d.ts +6 -0
- package/dist/krill/classes/prepare.d/users.js +63 -0
- package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
- package/dist/krill/classes/prepare.d/welcome.js +30 -0
- package/dist/krill/classes/prepare.d.ts +89 -0
- package/dist/krill/classes/prepare.js +314 -0
- package/dist/krill/classes/sequence.d/add_user.d.ts +20 -0
- package/dist/krill/classes/sequence.d/add_user.js +66 -0
- package/dist/krill/classes/sequence.d/bootloader.d.ts +14 -0
- package/dist/krill/classes/sequence.d/bootloader.js +95 -0
- package/dist/krill/classes/sequence.d/bootloader_config.d.ts +14 -0
- package/dist/krill/classes/sequence.d/bootloader_config.js +165 -0
- package/dist/krill/classes/sequence.d/change_password.d.ts +15 -0
- package/dist/krill/classes/sequence.d/change_password.js +18 -0
- package/dist/krill/classes/sequence.d/del_live_user.d.ts +14 -0
- package/dist/krill/classes/sequence.d/del_live_user.js +39 -0
- package/dist/krill/classes/sequence.d/fstab.d.ts +14 -0
- package/dist/krill/classes/sequence.d/fstab.js +189 -0
- package/dist/krill/classes/sequence.d/grubcfg.d.ts +17 -0
- package/dist/krill/classes/sequence.d/grubcfg.js +33 -0
- package/dist/krill/classes/sequence.d/hostname.d.ts +13 -0
- package/dist/krill/classes/sequence.d/hostname.js +50 -0
- package/dist/krill/classes/sequence.d/initramfs.d.ts +13 -0
- package/dist/krill/classes/sequence.d/initramfs.js +54 -0
- package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +14 -0
- package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
- package/dist/krill/classes/sequence.d/locale.d.ts +13 -0
- package/dist/krill/classes/sequence.d/locale.js +91 -0
- package/dist/krill/classes/sequence.d/locale_cfg.d.ts +10 -0
- package/dist/krill/classes/sequence.d/locale_cfg.js +58 -0
- package/dist/krill/classes/sequence.d/m_keyboard.d.ts +14 -0
- package/dist/krill/classes/sequence.d/m_keyboard.js +58 -0
- package/dist/krill/classes/sequence.d/machine_id.d.ts +15 -0
- package/dist/krill/classes/sequence.d/machine_id.js +33 -0
- package/dist/krill/classes/sequence.d/mkfs.d.ts +15 -0
- package/dist/krill/classes/sequence.d/mkfs.js +72 -0
- package/dist/krill/classes/sequence.d/mount_fs.d.ts +17 -0
- package/dist/krill/classes/sequence.d/mount_fs.js +68 -0
- package/dist/krill/classes/sequence.d/mount_vfs.d.ts +17 -0
- package/dist/krill/classes/sequence.d/mount_vfs.js +40 -0
- package/dist/krill/classes/sequence.d/network_cfg.d.ts +19 -0
- package/dist/krill/classes/sequence.d/network_cfg.js +73 -0
- package/dist/krill/classes/sequence.d/packages.d.ts +14 -0
- package/dist/krill/classes/sequence.d/packages.js +111 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +17 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +17 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +36 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +78 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +32 -0
- package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
- package/dist/krill/classes/sequence.d/partition.js +84 -0
- package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +13 -0
- package/dist/krill/classes/sequence.d/remove_installer_link.js +35 -0
- package/dist/krill/classes/sequence.d/umount.d.ts +14 -0
- package/dist/krill/classes/sequence.d/umount.js +28 -0
- package/dist/krill/classes/sequence.d/unpackfs.d.ts +13 -0
- package/dist/krill/classes/sequence.d/unpackfs.js +20 -0
- package/dist/krill/classes/sequence.d.ts +133 -0
- package/dist/krill/classes/sequence.js +396 -0
- package/dist/krill/components/finished.d.ts +16 -0
- package/dist/krill/components/finished.js +56 -0
- package/dist/krill/components/information.d.ts +8 -0
- package/dist/krill/components/information.js +162 -0
- package/dist/krill/components/install.d.ts +15 -0
- package/dist/krill/components/install.js +60 -0
- package/dist/krill/components/keyboard.d.ts +16 -0
- package/dist/krill/components/keyboard.js +54 -0
- package/dist/krill/components/location.d.ts +16 -0
- package/dist/krill/components/location.js +59 -0
- package/dist/krill/components/network.d.ts +19 -0
- package/dist/krill/components/network.js +65 -0
- package/dist/krill/components/partitions.d.ts +18 -0
- package/dist/krill/components/partitions.js +89 -0
- package/dist/krill/components/steps.d.ts +13 -0
- package/dist/krill/components/steps.js +148 -0
- package/dist/krill/components/summary.d.ts +25 -0
- package/dist/krill/components/summary.js +77 -0
- package/dist/krill/components/title.d.ts +11 -0
- package/dist/krill/components/title.js +35 -0
- package/dist/krill/components/users.d.ts +24 -0
- package/dist/krill/components/users.js +80 -0
- package/dist/krill/components/welcome.d.ts +13 -0
- package/dist/krill/components/welcome.js +63 -0
- package/dist/krill/interfaces/i_krill.d.ts +44 -0
- package/dist/krill/interfaces/i_krill.js +8 -0
- package/dist/krill/interfaces/i_krill_config.d.ts +35 -0
- package/dist/krill/interfaces/i_krill_config.js +8 -0
- package/dist/krill/lib/get_address.d.ts +8 -0
- package/dist/krill/lib/get_address.js +23 -0
- package/dist/krill/lib/get_dns.d.ts +8 -0
- package/dist/krill/lib/get_dns.js +23 -0
- package/dist/krill/lib/get_domain.d.ts +8 -0
- package/dist/krill/lib/get_domain.js +23 -0
- package/dist/krill/lib/get_gateway.d.ts +8 -0
- package/dist/krill/lib/get_gateway.js +23 -0
- package/dist/krill/lib/get_hostname.d.ts +8 -0
- package/dist/krill/lib/get_hostname.js +23 -0
- package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
- package/dist/krill/lib/get_luks_passphrase.js +40 -0
- package/dist/krill/lib/get_netmask.d.ts +8 -0
- package/dist/krill/lib/get_netmask.js +23 -0
- package/dist/krill/lib/get_password.d.ts +8 -0
- package/dist/krill/lib/get_password.js +36 -0
- package/dist/krill/lib/get_userfullname.d.ts +8 -0
- package/dist/krill/lib/get_userfullname.js +23 -0
- package/dist/krill/lib/get_username.d.ts +8 -0
- package/dist/krill/lib/get_username.js +23 -0
- package/dist/krill/lib/select_address_type.d.ts +8 -0
- package/dist/krill/lib/select_address_type.js +24 -0
- package/dist/krill/lib/select_filesystem_type.d.ts +8 -0
- package/dist/krill/lib/select_filesystem_type.js +39 -0
- package/dist/krill/lib/select_installation_device.d.ts +8 -0
- package/dist/krill/lib/select_installation_device.js +40 -0
- package/dist/krill/lib/select_installation_mode.d.ts +9 -0
- package/dist/krill/lib/select_installation_mode.js +25 -0
- package/dist/krill/lib/select_interface.d.ts +8 -0
- package/dist/krill/lib/select_interface.js +24 -0
- package/dist/krill/lib/select_keyboard_layout.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_layout.js +36 -0
- package/dist/krill/lib/select_keyboard_model.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_model.js +34 -0
- package/dist/krill/lib/select_keyboard_option.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_option.js +34 -0
- package/dist/krill/lib/select_keyboard_variant.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_variant.js +35 -0
- package/dist/krill/lib/select_languages.d.ts +8 -0
- package/dist/krill/lib/select_languages.js +28 -0
- package/dist/krill/lib/select_regions.d.ts +8 -0
- package/dist/krill/lib/select_regions.js +24 -0
- package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
- package/dist/krill/lib/select_replaced_partition.js +31 -0
- package/dist/krill/lib/select_user_swap_choice.d.ts +9 -0
- package/dist/krill/lib/select_user_swap_choice.js +35 -0
- package/dist/krill/lib/select_zones.d.ts +8 -0
- package/dist/krill/lib/select_zones.js +518 -0
- package/dist/lib/kill_me_softly.d.ts +11 -0
- package/dist/lib/kill_me_softly.js +61 -0
- package/dist/lib/utils.d.ts +42 -0
- package/dist/lib/utils.js +87 -0
- package/dist/penguins-eggs_10.1.1-0_amd64.deb +0 -0
- package/dist/penguins-eggs_10.1.1-0_amd64.deb.sha256 +1 -0
- package/package.json +25 -23
- package/scripts/_eggs +6 -12
- package/scripts/eggs.bash +1 -2
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/daddy.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import inquirer from 'inquirer';
|
|
10
|
+
import yaml from 'js-yaml';
|
|
11
|
+
import fs from 'node:fs';
|
|
12
|
+
// _dirname
|
|
13
|
+
import path from 'node:path';
|
|
14
|
+
// We need to remove .js extension from import
|
|
15
|
+
import Pacman from '../classes/pacman.js';
|
|
16
|
+
import Settings from '../classes/settings.js';
|
|
17
|
+
import Utils from '../classes/utils.js';
|
|
18
|
+
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
19
|
+
export default class Daddy {
|
|
20
|
+
settings = {};
|
|
21
|
+
/**
|
|
22
|
+
* editConfif
|
|
23
|
+
* @param c
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
async editConfig(c) {
|
|
27
|
+
// Utils.titles('dad')
|
|
28
|
+
console.log(chalk.cyan('Edit and save Live system parameters'));
|
|
29
|
+
console.log();
|
|
30
|
+
let compressionOpt = 0;
|
|
31
|
+
if (c.compression === 'xz') {
|
|
32
|
+
compressionOpt = 1;
|
|
33
|
+
}
|
|
34
|
+
else if (c.compression === 'xz -Xbcj x86') {
|
|
35
|
+
compressionOpt = 2;
|
|
36
|
+
}
|
|
37
|
+
if (c.snapshot_prefix === '') {
|
|
38
|
+
c.snapshot_prefix = Utils.snapshotPrefix(this.settings.distro.distroId, this.settings.distro.codenameId);
|
|
39
|
+
}
|
|
40
|
+
return new Promise((resolve) => {
|
|
41
|
+
const questions = [
|
|
42
|
+
{
|
|
43
|
+
default: c.snapshot_prefix,
|
|
44
|
+
message: 'LiveCD iso prefix: ',
|
|
45
|
+
name: 'snapshot_prefix',
|
|
46
|
+
type: 'input'
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
default: c.snapshot_basename,
|
|
50
|
+
message: 'LiveCD iso basename: ',
|
|
51
|
+
name: 'snapshot_basename',
|
|
52
|
+
type: 'input'
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
default: c.user_opt,
|
|
56
|
+
message: 'LiveCD user:',
|
|
57
|
+
name: 'user_opt',
|
|
58
|
+
type: 'input'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
default: c.user_opt_passwd,
|
|
62
|
+
message: 'LiveCD user password: ',
|
|
63
|
+
name: 'user_opt_passwd',
|
|
64
|
+
type: 'input'
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
default: c.root_passwd,
|
|
68
|
+
message: 'LiveCD root password: ',
|
|
69
|
+
name: 'root_passwd',
|
|
70
|
+
type: 'input'
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
choices: ['fast', 'max'],
|
|
74
|
+
default: compressionOpt,
|
|
75
|
+
message: 'LiveCD compression: ',
|
|
76
|
+
name: 'compression',
|
|
77
|
+
type: 'list'
|
|
78
|
+
}
|
|
79
|
+
];
|
|
80
|
+
inquirer.prompt(questions).then((options) => {
|
|
81
|
+
resolve(JSON.stringify(options));
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
*
|
|
87
|
+
* @param reset
|
|
88
|
+
* @param isCustom
|
|
89
|
+
* @param fileCustom
|
|
90
|
+
* @param verbose
|
|
91
|
+
*/
|
|
92
|
+
async helpMe(reset = false, isCustom = false, fileCustom = '', verbose = false) {
|
|
93
|
+
if (isCustom) {
|
|
94
|
+
console.log('using custom file:', fileCustom);
|
|
95
|
+
}
|
|
96
|
+
// Controllo configurazione
|
|
97
|
+
if (!Pacman.configurationCheck()) {
|
|
98
|
+
console.log('- creating configuration dir...');
|
|
99
|
+
await Pacman.configurationInstall(verbose);
|
|
100
|
+
}
|
|
101
|
+
// Templates
|
|
102
|
+
if (!Pacman.distroTemplateCheck()) {
|
|
103
|
+
console.log('- distro template install...');
|
|
104
|
+
await Pacman.distroTemplateInstall(verbose);
|
|
105
|
+
}
|
|
106
|
+
//Calamares
|
|
107
|
+
if (!Pacman.calamaresExists() &&
|
|
108
|
+
Pacman.isInstalledGui() &&
|
|
109
|
+
Pacman.isCalamaresAvailable()) {
|
|
110
|
+
console.log('- this is a GUI system, calamares is available, but NOT installed');
|
|
111
|
+
}
|
|
112
|
+
// show and edit configuration
|
|
113
|
+
this.settings = new Settings();
|
|
114
|
+
let config = {};
|
|
115
|
+
let jsonConf = '';
|
|
116
|
+
if (await this.settings.load()) {
|
|
117
|
+
config = this.settings.config;
|
|
118
|
+
config.compression = 'fast';
|
|
119
|
+
if (reset || isCustom) {
|
|
120
|
+
if (config.snapshot_prefix === '') {
|
|
121
|
+
config.snapshot_prefix = Utils.snapshotPrefix(this.settings.distro.distroId, this.settings.distro.codenameId);
|
|
122
|
+
}
|
|
123
|
+
jsonConf = JSON.stringify(config);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
jsonConf = await this.editConfig(config);
|
|
127
|
+
}
|
|
128
|
+
// Custom configuration
|
|
129
|
+
if (isCustom) {
|
|
130
|
+
const conf = fs.readFileSync(fileCustom, 'utf8');
|
|
131
|
+
const confCustom = yaml.load(conf);
|
|
132
|
+
config.snapshot_basename = confCustom.snapshot_basename;
|
|
133
|
+
config.snapshot_prefix = confCustom.snapshot_prefix;
|
|
134
|
+
config.user_opt = confCustom.user_opt;
|
|
135
|
+
config.user_opt_passwd = confCustom.user_opt_passwd;
|
|
136
|
+
config.root_passwd = confCustom.root_passwd;
|
|
137
|
+
config.theme = confCustom.theme;
|
|
138
|
+
jsonConf = JSON.stringify(config);
|
|
139
|
+
}
|
|
140
|
+
// Save new configuration
|
|
141
|
+
const confNew = JSON.parse(jsonConf);
|
|
142
|
+
config.snapshot_basename = confNew.snapshot_basename;
|
|
143
|
+
config.snapshot_prefix = confNew.snapshot_prefix;
|
|
144
|
+
config.user_opt = confNew.user_opt;
|
|
145
|
+
config.user_opt_passwd = confNew.user_opt_passwd;
|
|
146
|
+
config.root_passwd = confNew.root_passwd;
|
|
147
|
+
config.theme = confNew.theme;
|
|
148
|
+
await this.settings.save(config);
|
|
149
|
+
}
|
|
150
|
+
console.log();
|
|
151
|
+
console.log(chalk.cyan('Your configuration was saved on: /etc/penguins-eggs.d'));
|
|
152
|
+
console.log();
|
|
153
|
+
console.log(chalk.cyan(`You can create a clean ISO with: `) + chalk.white(`sudo eggs produce`));
|
|
154
|
+
console.log(chalk.cyan(`or a full personal clone: `) + chalk.white(`sudo eggs produce --clone`));
|
|
155
|
+
console.log();
|
|
156
|
+
console.log(chalk.cyan(`If you don't have enough space to remaster, you can mount`));
|
|
157
|
+
console.log(chalk.cyan(`some remote or local space. Follow the samples:`));
|
|
158
|
+
console.log(chalk.cyan(`- first, create an hidden mountpoint under the nest:`));
|
|
159
|
+
console.log(chalk.white(`sudo mkdir /home/eggs/.mnt -p`));
|
|
160
|
+
console.log(chalk.cyan(`- then, mount remote space:`));
|
|
161
|
+
console.log(chalk.white(`sudo sshfs -o allow_other root@192.168.1.2:/zfs/iso /home/eggs/.mnt`));
|
|
162
|
+
console.log(chalk.cyan('- or, mount a local partition:'));
|
|
163
|
+
console.log(chalk.white(`sudo mount /dev/sdx1 /home/eggs/.mnt`));
|
|
164
|
+
console.log();
|
|
165
|
+
console.log(chalk.cyan('More help? ') + chalk.white('eggs mom'));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* penguins-eggs - Refactored distros.ts
|
|
3
|
+
* class: distro.ts
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
import { IDistro } from '../interfaces/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Main Distro class - Refactored
|
|
11
|
+
*/
|
|
12
|
+
declare class Distro implements IDistro {
|
|
13
|
+
bugReportUrl: string;
|
|
14
|
+
codenameId: string;
|
|
15
|
+
codenameLikeId: string;
|
|
16
|
+
distroId: string;
|
|
17
|
+
distroLike: string;
|
|
18
|
+
familyId: string;
|
|
19
|
+
homeUrl: string;
|
|
20
|
+
isCalamaresAvailable: boolean;
|
|
21
|
+
liveMediumPath: string;
|
|
22
|
+
releaseId: string;
|
|
23
|
+
squashfs: string;
|
|
24
|
+
supportUrl: string;
|
|
25
|
+
syslinuxPath: string;
|
|
26
|
+
usrLibPath: string;
|
|
27
|
+
/**
|
|
28
|
+
* Constructor - Now much cleaner and focused
|
|
29
|
+
*/
|
|
30
|
+
constructor();
|
|
31
|
+
/**
|
|
32
|
+
* Initialize with default values
|
|
33
|
+
*/
|
|
34
|
+
private initializeDefaults;
|
|
35
|
+
/**
|
|
36
|
+
* Main configuration logic
|
|
37
|
+
*/
|
|
38
|
+
private configure;
|
|
39
|
+
/**
|
|
40
|
+
* Apply family-based configuration
|
|
41
|
+
*/
|
|
42
|
+
private applyFamilyConfig;
|
|
43
|
+
/**
|
|
44
|
+
* Apply custom configuration from derivatives
|
|
45
|
+
*/
|
|
46
|
+
private applyCustomConfig;
|
|
47
|
+
/**
|
|
48
|
+
* Apply codename-specific configurations
|
|
49
|
+
*/
|
|
50
|
+
private applyCodenameConfig;
|
|
51
|
+
/**
|
|
52
|
+
* Handle unknown distribution
|
|
53
|
+
*/
|
|
54
|
+
private handleUnknownDistro;
|
|
55
|
+
}
|
|
56
|
+
export default Distro;
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* penguins-eggs - Refactored distros.ts
|
|
3
|
+
* class: distro.ts
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
import yaml from 'js-yaml';
|
|
9
|
+
import fs from 'node:fs';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
import shell from 'shelljs';
|
|
12
|
+
import Utils from './utils.js';
|
|
13
|
+
import Diversions from './diversions.js';
|
|
14
|
+
// _dirname
|
|
15
|
+
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
16
|
+
/**
|
|
17
|
+
* Default configurations for each family
|
|
18
|
+
*/
|
|
19
|
+
const FAMILY_CONFIGS = {
|
|
20
|
+
debian: {
|
|
21
|
+
familyId: 'debian',
|
|
22
|
+
distroLike: 'Debian',
|
|
23
|
+
codenameId: '',
|
|
24
|
+
codenameLikeId: '',
|
|
25
|
+
liveMediumPath: '/run/live/medium/',
|
|
26
|
+
isCalamaresAvailable: true
|
|
27
|
+
},
|
|
28
|
+
archlinux: {
|
|
29
|
+
familyId: 'archlinux',
|
|
30
|
+
distroLike: 'Arch',
|
|
31
|
+
codenameId: 'rolling',
|
|
32
|
+
codenameLikeId: 'rolling',
|
|
33
|
+
liveMediumPath: '/run/archiso/bootmnt/',
|
|
34
|
+
squashfs: 'arch/x86_64/airootfs.sfs'
|
|
35
|
+
},
|
|
36
|
+
fedora: {
|
|
37
|
+
familyId: 'fedora',
|
|
38
|
+
distroLike: 'Fedora',
|
|
39
|
+
codenameId: 'rolling',
|
|
40
|
+
codenameLikeId: 'fedora',
|
|
41
|
+
liveMediumPath: '/run/initramfs/live/'
|
|
42
|
+
},
|
|
43
|
+
alpine: {
|
|
44
|
+
familyId: 'alpine',
|
|
45
|
+
distroLike: 'Alpine',
|
|
46
|
+
codenameId: 'rolling',
|
|
47
|
+
codenameLikeId: 'alpine',
|
|
48
|
+
liveMediumPath: '/mnt/'
|
|
49
|
+
},
|
|
50
|
+
opensuse: {
|
|
51
|
+
familyId: 'opensuse',
|
|
52
|
+
distroLike: 'Opensuse',
|
|
53
|
+
codenameId: 'rolling',
|
|
54
|
+
codenameLikeId: 'opensuse',
|
|
55
|
+
liveMediumPath: '/run/initramfs/live/',
|
|
56
|
+
usrLibPath: '/usr/lib64/'
|
|
57
|
+
},
|
|
58
|
+
openmamba: {
|
|
59
|
+
familyId: 'openmamba',
|
|
60
|
+
distroLike: 'openmamba',
|
|
61
|
+
codenameId: 'rolling',
|
|
62
|
+
codenameLikeId: 'openmamba',
|
|
63
|
+
liveMediumPath: '/run/initramfs/live/'
|
|
64
|
+
},
|
|
65
|
+
aldus: {
|
|
66
|
+
familyId: 'aldus',
|
|
67
|
+
distroLike: 'Aldus',
|
|
68
|
+
codenameId: 'rolling',
|
|
69
|
+
codenameLikeId: 'aldus',
|
|
70
|
+
liveMediumPath: '/run/initramfs/live/'
|
|
71
|
+
},
|
|
72
|
+
voidlinux: {
|
|
73
|
+
familyId: 'voidlinux',
|
|
74
|
+
distroLike: 'Voidlinux',
|
|
75
|
+
codenameId: 'rolling',
|
|
76
|
+
codenameLikeId: 'voidlinux',
|
|
77
|
+
liveMediumPath: '/run/initramfs/live/'
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Special codename configurations
|
|
82
|
+
*/
|
|
83
|
+
const CODENAME_CONFIGS = {
|
|
84
|
+
// Debian versions
|
|
85
|
+
jessie: { distroLike: 'Debian', codenameLikeId: 'jessie', liveMediumPath: '/lib/live/mount/medium/', isCalamaresAvailable: false },
|
|
86
|
+
stretch: { distroLike: 'Debian', codenameLikeId: 'stretch', liveMediumPath: '/lib/live/mount/medium/', isCalamaresAvailable: false },
|
|
87
|
+
buster: { distroLike: 'Debian', codenameLikeId: 'buster' },
|
|
88
|
+
bullseye: { distroLike: 'Debian', codenameLikeId: 'bullseye' },
|
|
89
|
+
bookworm: { distroLike: 'Debian', codenameLikeId: 'bookworm' },
|
|
90
|
+
trixie: { distroLike: 'Debian', codenameLikeId: 'trixie' },
|
|
91
|
+
// Devuan versions
|
|
92
|
+
beowulf: { distroLike: 'Devuan', codenameLikeId: 'beowulf' },
|
|
93
|
+
chimaera: { distroLike: 'Devuan', codenameLikeId: 'chimaera' },
|
|
94
|
+
daedalus: { distroLike: 'Devuan', codenameLikeId: 'daedalus' },
|
|
95
|
+
excalibur: { distroLike: 'Devuan', codenameLikeId: 'excalibur' },
|
|
96
|
+
// Ubuntu versions
|
|
97
|
+
bionic: { distroLike: 'Ubuntu', codenameLikeId: 'bionic', liveMediumPath: '/lib/live/mount/medium/' },
|
|
98
|
+
focal: { distroLike: 'Ubuntu', codenameLikeId: 'focal' },
|
|
99
|
+
jammy: { distroLike: 'Ubuntu', codenameLikeId: 'jammy' },
|
|
100
|
+
noble: { distroLike: 'Ubuntu', codenameLikeId: 'noble' },
|
|
101
|
+
devel: { distroLike: 'Ubuntu', codenameLikeId: 'devel' }
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Distribution family detector
|
|
105
|
+
*/
|
|
106
|
+
class DistroDetector {
|
|
107
|
+
static detectByDistroId(distroId) {
|
|
108
|
+
const fedoraDistros = ['Almalinux', 'Fedora', 'Nobara', 'Rocky'];
|
|
109
|
+
if (distroId === 'Alpine')
|
|
110
|
+
return 'alpine';
|
|
111
|
+
if (fedoraDistros.includes(distroId))
|
|
112
|
+
return 'fedora';
|
|
113
|
+
if (distroId === 'Openmamba')
|
|
114
|
+
return 'openmamba';
|
|
115
|
+
if (distroId.includes('Opensuse'))
|
|
116
|
+
return 'opensuse';
|
|
117
|
+
if (distroId === 'Voidlinux')
|
|
118
|
+
return 'voidlinux';
|
|
119
|
+
if (distroId === 'Aldus')
|
|
120
|
+
return 'aldus';
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
static detectByCodename(codenameId) {
|
|
124
|
+
if (codenameId === 'rolling' || codenameId === 'n/a')
|
|
125
|
+
return 'archlinux';
|
|
126
|
+
if (CODENAME_CONFIGS[codenameId])
|
|
127
|
+
return 'debian'; // All debian-family codenames
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
static detectFromDerivatives(distroId, codenameId) {
|
|
131
|
+
// Check debian/arch derivatives
|
|
132
|
+
const derivativesPath = this.getDerivativesPath('derivatives.yaml');
|
|
133
|
+
if (fs.existsSync(derivativesPath)) {
|
|
134
|
+
const result = this.searchInDerivatives(derivativesPath, codenameId);
|
|
135
|
+
if (result)
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
// Check fedora derivatives
|
|
139
|
+
const fedoraDerivativesPath = this.getDerivativesPath('derivatives_fedora.yaml');
|
|
140
|
+
if (fs.existsSync(fedoraDerivativesPath)) {
|
|
141
|
+
const result = this.searchInFedoraDerivatives(fedoraDerivativesPath, distroId);
|
|
142
|
+
if (result)
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
static getDerivativesPath(filename) {
|
|
148
|
+
const userPath = `/etc/penguins-eggs.d/${filename}`;
|
|
149
|
+
const defaultPath = path.resolve(__dirname, `../../conf/${filename}`);
|
|
150
|
+
return fs.existsSync(userPath) ? userPath : defaultPath;
|
|
151
|
+
}
|
|
152
|
+
static searchInDerivatives(filePath, codenameId) {
|
|
153
|
+
try {
|
|
154
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
155
|
+
const distros = yaml.load(content);
|
|
156
|
+
for (const distro of distros) {
|
|
157
|
+
if (distro.ids?.includes(codenameId)) {
|
|
158
|
+
return {
|
|
159
|
+
familyId: distro.family,
|
|
160
|
+
config: {
|
|
161
|
+
distroLike: distro.distroLike,
|
|
162
|
+
codenameLikeId: distro.id,
|
|
163
|
+
familyId: distro.family
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
console.warn(`Warning: Could not read derivatives file ${filePath}:`, error);
|
|
171
|
+
}
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
static searchInFedoraDerivatives(filePath, distroId) {
|
|
175
|
+
try {
|
|
176
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
177
|
+
const distros = yaml.load(content);
|
|
178
|
+
if (distros.includes(distroId)) {
|
|
179
|
+
return {
|
|
180
|
+
familyId: 'fedora',
|
|
181
|
+
config: {
|
|
182
|
+
familyId: 'fedora',
|
|
183
|
+
distroLike: 'Fedora',
|
|
184
|
+
codenameId: 'rolling',
|
|
185
|
+
codenameLikeId: 'fedora',
|
|
186
|
+
liveMediumPath: '/run/initramfs/live/'
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
console.warn(`Warning: Could not read fedora derivatives file ${filePath}:`, error);
|
|
193
|
+
}
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* OS Release parser
|
|
199
|
+
*/
|
|
200
|
+
class OsReleaseParser {
|
|
201
|
+
static parseUrls() {
|
|
202
|
+
const defaultUrls = {
|
|
203
|
+
homeUrl: 'https://penguins-eggs.net',
|
|
204
|
+
supportUrl: 'https://penguins-eggs.net',
|
|
205
|
+
bugReportUrl: 'https://github.com/pieroproietti/penguins-eggs/issues'
|
|
206
|
+
};
|
|
207
|
+
const osReleasePath = '/etc/os-release';
|
|
208
|
+
if (!fs.existsSync(osReleasePath)) {
|
|
209
|
+
return defaultUrls;
|
|
210
|
+
}
|
|
211
|
+
try {
|
|
212
|
+
const data = fs.readFileSync(osReleasePath, 'utf8');
|
|
213
|
+
const lines = data.split('\n');
|
|
214
|
+
const result = { ...defaultUrls };
|
|
215
|
+
for (const line of lines) {
|
|
216
|
+
if (line.startsWith('HOME_URL=')) {
|
|
217
|
+
result.homeUrl = line.slice('HOME_URL='.length).replaceAll('"', '');
|
|
218
|
+
}
|
|
219
|
+
else if (line.startsWith('SUPPORT_URL=')) {
|
|
220
|
+
result.supportUrl = line.slice('SUPPORT_URL='.length).replaceAll('"', '');
|
|
221
|
+
}
|
|
222
|
+
else if (line.startsWith('BUG_REPORT_URL=')) {
|
|
223
|
+
result.bugReportUrl = line.slice('BUG_REPORT_URL='.length).replaceAll('"', '');
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
console.warn('Warning: Could not parse /etc/os-release:', error);
|
|
230
|
+
return defaultUrls;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Distribution configurator
|
|
236
|
+
*/
|
|
237
|
+
class DistroConfigurator {
|
|
238
|
+
static applySpecialConfigurations(config) {
|
|
239
|
+
// Apply family-specific configurations
|
|
240
|
+
this.applyFamilySpecificConfig(config);
|
|
241
|
+
// Apply distro-specific configurations
|
|
242
|
+
this.applyDistroSpecificConfig(config);
|
|
243
|
+
}
|
|
244
|
+
static applyFamilySpecificConfig(config) {
|
|
245
|
+
// Debian family: dynamic usrLibPath
|
|
246
|
+
if (config.familyId === 'debian') {
|
|
247
|
+
config.usrLibPath = '/usr/lib/' + Utils.usrLibPath();
|
|
248
|
+
}
|
|
249
|
+
// OpenSUSE: specific usrLibPath
|
|
250
|
+
if (config.familyId === 'opensuse') {
|
|
251
|
+
config.usrLibPath = '/usr/lib64/';
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
static applyDistroSpecificConfig(config) {
|
|
255
|
+
// Manjaro-based distributions
|
|
256
|
+
if (Diversions.isManjaroBased(config.distroId)) {
|
|
257
|
+
config.liveMediumPath = '/run/miso/bootmnt/';
|
|
258
|
+
config.squashfs = 'manjaro/x86_64/livefs.sfs';
|
|
259
|
+
config.codenameId = shell.exec('lsb_release -cs', { silent: true }).stdout.toString().trim();
|
|
260
|
+
}
|
|
261
|
+
// BigLinux variants
|
|
262
|
+
if (config.distroId.includes('Biglinux')) {
|
|
263
|
+
config.distroId = 'Biglinux';
|
|
264
|
+
}
|
|
265
|
+
if (config.distroId.includes('Bigcommunity')) {
|
|
266
|
+
config.distroId = 'Bigcommunity';
|
|
267
|
+
}
|
|
268
|
+
// Debian sid → trixie
|
|
269
|
+
if (config.distroId === 'Debian' && config.codenameId === 'sid') {
|
|
270
|
+
config.codenameId = 'trixie';
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Main Distro class - Refactored
|
|
276
|
+
*/
|
|
277
|
+
class Distro {
|
|
278
|
+
bugReportUrl;
|
|
279
|
+
codenameId;
|
|
280
|
+
codenameLikeId;
|
|
281
|
+
distroId;
|
|
282
|
+
distroLike;
|
|
283
|
+
familyId;
|
|
284
|
+
homeUrl;
|
|
285
|
+
isCalamaresAvailable;
|
|
286
|
+
liveMediumPath;
|
|
287
|
+
releaseId;
|
|
288
|
+
squashfs;
|
|
289
|
+
supportUrl;
|
|
290
|
+
syslinuxPath;
|
|
291
|
+
usrLibPath;
|
|
292
|
+
/**
|
|
293
|
+
* Constructor - Now much cleaner and focused
|
|
294
|
+
*/
|
|
295
|
+
constructor() {
|
|
296
|
+
// Initialize with defaults
|
|
297
|
+
this.initializeDefaults();
|
|
298
|
+
// Get OS information
|
|
299
|
+
const osInfo = Utils.getOsRelease();
|
|
300
|
+
this.distroId = osInfo.ID;
|
|
301
|
+
this.codenameId = osInfo.VERSION_CODENAME;
|
|
302
|
+
this.releaseId = osInfo.VERSION_ID;
|
|
303
|
+
// Configure the distribution
|
|
304
|
+
this.configure();
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Initialize with default values
|
|
308
|
+
*/
|
|
309
|
+
initializeDefaults() {
|
|
310
|
+
const defaultConfig = FAMILY_CONFIGS.debian;
|
|
311
|
+
const urls = OsReleaseParser.parseUrls();
|
|
312
|
+
Object.assign(this, defaultConfig, urls, {
|
|
313
|
+
squashfs: 'live/filesystem.squashfs',
|
|
314
|
+
syslinuxPath: path.resolve(__dirname, '../../syslinux'),
|
|
315
|
+
usrLibPath: '/usr/lib',
|
|
316
|
+
isCalamaresAvailable: true
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Main configuration logic
|
|
321
|
+
*/
|
|
322
|
+
configure() {
|
|
323
|
+
try {
|
|
324
|
+
// Step 1: Detect family by distro ID
|
|
325
|
+
let familyId = DistroDetector.detectByDistroId(this.distroId);
|
|
326
|
+
// Step 2: If not found, detect by codename
|
|
327
|
+
if (!familyId) {
|
|
328
|
+
familyId = DistroDetector.detectByCodename(this.codenameId);
|
|
329
|
+
}
|
|
330
|
+
// Step 3: Apply family configuration
|
|
331
|
+
if (familyId && FAMILY_CONFIGS[familyId]) {
|
|
332
|
+
this.applyFamilyConfig(familyId);
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
// Step 4: Check derivatives
|
|
336
|
+
const derivativeResult = DistroDetector.detectFromDerivatives(this.distroId, this.codenameId);
|
|
337
|
+
if (derivativeResult) {
|
|
338
|
+
this.applyCustomConfig(derivativeResult.familyId, derivativeResult.config);
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
this.handleUnknownDistro();
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// Step 5: Apply codename-specific configurations
|
|
346
|
+
this.applyCodenameConfig();
|
|
347
|
+
// Step 6: Apply special configurations
|
|
348
|
+
DistroConfigurator.applySpecialConfigurations(this);
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
console.error('Error during distro configuration:', error);
|
|
352
|
+
this.handleUnknownDistro();
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Apply family-based configuration
|
|
357
|
+
*/
|
|
358
|
+
applyFamilyConfig(familyId) {
|
|
359
|
+
const config = FAMILY_CONFIGS[familyId];
|
|
360
|
+
this.familyId = config.familyId;
|
|
361
|
+
this.distroLike = config.distroLike;
|
|
362
|
+
if (config.codenameId)
|
|
363
|
+
this.codenameId = config.codenameId;
|
|
364
|
+
if (config.codenameLikeId)
|
|
365
|
+
this.codenameLikeId = config.codenameLikeId;
|
|
366
|
+
if (config.liveMediumPath)
|
|
367
|
+
this.liveMediumPath = config.liveMediumPath;
|
|
368
|
+
if (config.squashfs)
|
|
369
|
+
this.squashfs = config.squashfs;
|
|
370
|
+
if (config.usrLibPath)
|
|
371
|
+
this.usrLibPath = config.usrLibPath;
|
|
372
|
+
if (config.isCalamaresAvailable !== undefined)
|
|
373
|
+
this.isCalamaresAvailable = config.isCalamaresAvailable;
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Apply custom configuration from derivatives
|
|
377
|
+
*/
|
|
378
|
+
applyCustomConfig(familyId, config) {
|
|
379
|
+
this.familyId = familyId;
|
|
380
|
+
// Apply base family config first
|
|
381
|
+
if (FAMILY_CONFIGS[familyId]) {
|
|
382
|
+
this.applyFamilyConfig(familyId);
|
|
383
|
+
}
|
|
384
|
+
// Then override with custom config
|
|
385
|
+
Object.assign(this, config);
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Apply codename-specific configurations
|
|
389
|
+
*/
|
|
390
|
+
applyCodenameConfig() {
|
|
391
|
+
const codenameConfig = CODENAME_CONFIGS[this.codenameId];
|
|
392
|
+
if (codenameConfig) {
|
|
393
|
+
Object.assign(this, codenameConfig);
|
|
394
|
+
// Set familyId to debian for debian-family codenames
|
|
395
|
+
if (!this.familyId || this.familyId === 'debian') {
|
|
396
|
+
this.familyId = 'debian';
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Handle unknown distribution
|
|
402
|
+
*/
|
|
403
|
+
handleUnknownDistro() {
|
|
404
|
+
console.log(`This distro ${this.distroId}/${this.codenameId} is not yet recognized!`);
|
|
405
|
+
console.log('');
|
|
406
|
+
console.log('You can edit /usr/lib/penguins-eggs/conf/derivatives.yaml to add it -');
|
|
407
|
+
console.log('after that - run: sudo eggs dad -d to re-configure eggs.');
|
|
408
|
+
console.log('If you can create your new iso, you can contribute to the project');
|
|
409
|
+
console.log('by suggesting your modification.');
|
|
410
|
+
process.exit(0);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
export default Distro;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/diversions.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
|
+
* contiene le variazione di nome
|
|
10
|
+
* per ogni famiglia
|
|
11
|
+
*/
|
|
12
|
+
import { IDistro } from '../interfaces/index.js';
|
|
13
|
+
export default class Diversions {
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
* @param familyId
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
static isSystemDBoot(familyId: string, isEfi: boolean): boolean;
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @param familyId
|
|
23
|
+
* @returns deluser
|
|
24
|
+
*/
|
|
25
|
+
static deluser(familyId: string): string;
|
|
26
|
+
/**
|
|
27
|
+
*
|
|
28
|
+
* @param familyId
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
static grubName(familyId: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* grubForce
|
|
34
|
+
*/
|
|
35
|
+
static grubForce(familyId: string): string;
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @param familyId
|
|
39
|
+
* @param volid
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
static kernelParameters(familyId: string, volid: string): string;
|
|
43
|
+
/**
|
|
44
|
+
*
|
|
45
|
+
* @returns
|
|
46
|
+
*/
|
|
47
|
+
static distro(): IDistro;
|
|
48
|
+
/**
|
|
49
|
+
* isManjaroBased
|
|
50
|
+
*/
|
|
51
|
+
static isManjaroBased(distro: string): boolean;
|
|
52
|
+
}
|