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.
Files changed (440) hide show
  1. package/.oclif.manifest.json +1 -32
  2. package/README.md +109 -78
  3. package/conf/derivatives.yaml +3 -0
  4. package/conf/distros/buster/calamares/modules/users.yml +1 -0
  5. package/conf/distros/noble/calamares/modules/users.yml +1 -0
  6. package/dist/classes/bleach.d.ts +32 -0
  7. package/dist/classes/bleach.js +135 -0
  8. package/dist/classes/cli-autologin.d.ts +52 -0
  9. package/dist/classes/cli-autologin.js +247 -0
  10. package/dist/classes/compressors.d.ts +54 -0
  11. package/dist/classes/compressors.js +109 -0
  12. package/dist/classes/daddy.d.ts +26 -0
  13. package/dist/classes/daddy.js +167 -0
  14. package/dist/classes/distro.d.ts +56 -0
  15. package/dist/classes/distro.js +413 -0
  16. package/dist/classes/diversions.d.ts +52 -0
  17. package/dist/classes/diversions.js +126 -0
  18. package/dist/classes/incubation/branding.d.ts +17 -0
  19. package/dist/classes/incubation/branding.js +85 -0
  20. package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
  21. package/dist/classes/incubation/fisherman-helper/displaymanager.js +40 -0
  22. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  23. package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
  24. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  25. package/dist/classes/incubation/fisherman-helper/settings.js +83 -0
  26. package/dist/classes/incubation/fisherman.d.ts +70 -0
  27. package/dist/classes/incubation/fisherman.js +263 -0
  28. package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
  29. package/dist/classes/incubation/incubator.d/alpine.js +78 -0
  30. package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
  31. package/dist/classes/incubation/incubator.d/bionic.js +83 -0
  32. package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
  33. package/dist/classes/incubation/incubator.d/buster.js +85 -0
  34. package/dist/classes/incubation/incubator.d/jessie.d.ts +31 -0
  35. package/dist/classes/incubation/incubator.d/jessie.js +44 -0
  36. package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
  37. package/dist/classes/incubation/incubator.d/noble.js +85 -0
  38. package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
  39. package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
  40. package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
  41. package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
  42. package/dist/classes/incubation/incubator.d/rolling.d.ts +32 -0
  43. package/dist/classes/incubation/incubator.d/rolling.js +80 -0
  44. package/dist/classes/incubation/incubator.d.ts +44 -0
  45. package/dist/classes/incubation/incubator.js +382 -0
  46. package/dist/classes/incubation/installer.d.ts +13 -0
  47. package/dist/classes/incubation/installer.js +52 -0
  48. package/dist/classes/keyboards.d.ts +50 -0
  49. package/dist/classes/keyboards.js +287 -0
  50. package/dist/classes/locales.d.ts +21 -0
  51. package/dist/classes/locales.js +77 -0
  52. package/dist/classes/network.d.ts +37 -0
  53. package/dist/classes/network.js +98 -0
  54. package/dist/classes/ovary.d/bind-live-fs.d.ts +18 -0
  55. package/dist/classes/ovary.d/bind-live-fs.js +177 -0
  56. package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
  57. package/dist/classes/ovary.d/bind-vfs.js +37 -0
  58. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
  59. package/dist/classes/ovary.d/create-xdg-autostart.js +194 -0
  60. package/dist/classes/ovary.d/edit-live-fs.d.ts +20 -0
  61. package/dist/classes/ovary.d/edit-live-fs.js +245 -0
  62. package/dist/classes/ovary.d/fertilization.d.ts +12 -0
  63. package/dist/classes/ovary.d/fertilization.js +51 -0
  64. package/dist/classes/ovary.d/finished.d.ts +13 -0
  65. package/dist/classes/ovary.d/finished.js +41 -0
  66. package/dist/classes/ovary.d/initrd.d.ts +21 -0
  67. package/dist/classes/ovary.d/initrd.js +68 -0
  68. package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
  69. package/dist/classes/ovary.d/kernel-copy.js +22 -0
  70. package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
  71. package/dist/classes/ovary.d/live-create-structure.js +90 -0
  72. package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
  73. package/dist/classes/ovary.d/make-dot-disk.js +40 -0
  74. package/dist/classes/ovary.d/make-efi.d.ts +12 -0
  75. package/dist/classes/ovary.d/make-efi.js +271 -0
  76. package/dist/classes/ovary.d/make-iso.d.ts +13 -0
  77. package/dist/classes/ovary.d/make-iso.js +45 -0
  78. package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
  79. package/dist/classes/ovary.d/make-squashfs.js +110 -0
  80. package/dist/classes/ovary.d/merged.d.ts +27 -0
  81. package/dist/classes/ovary.d/merged.js +77 -0
  82. package/dist/classes/ovary.d/produce.d.ts +23 -0
  83. package/dist/classes/ovary.d/produce.js +293 -0
  84. package/dist/classes/ovary.d/rexec.d.ts +13 -0
  85. package/dist/classes/ovary.d/rexec.js +34 -0
  86. package/dist/classes/ovary.d/syslinux.d.ts +12 -0
  87. package/dist/classes/ovary.d/syslinux.js +79 -0
  88. package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
  89. package/dist/classes/ovary.d/user-create-live.js +93 -0
  90. package/dist/classes/ovary.d/users-remove.d.ts +9 -0
  91. package/dist/classes/ovary.d/users-remove.js +38 -0
  92. package/dist/classes/ovary.d/xorriso-commend.d.ts +14 -0
  93. package/dist/classes/ovary.d/xorriso-commend.js +119 -0
  94. package/dist/classes/ovary.d.ts +82 -0
  95. package/dist/classes/ovary.js +86 -0
  96. package/dist/classes/pacman.d/aldos.d.ts +52 -0
  97. package/dist/classes/pacman.d/aldos.js +100 -0
  98. package/dist/classes/pacman.d/alpine.d.ts +56 -0
  99. package/dist/classes/pacman.d/alpine.js +162 -0
  100. package/dist/classes/pacman.d/archlinux.d.ts +62 -0
  101. package/dist/classes/pacman.d/archlinux.js +136 -0
  102. package/dist/classes/pacman.d/debian.d.ts +65 -0
  103. package/dist/classes/pacman.d/debian.js +143 -0
  104. package/dist/classes/pacman.d/fedora.d.ts +53 -0
  105. package/dist/classes/pacman.d/fedora.js +101 -0
  106. package/dist/classes/pacman.d/openmamba.d.ts +52 -0
  107. package/dist/classes/pacman.d/openmamba.js +100 -0
  108. package/dist/classes/pacman.d/opensuse.d.ts +53 -0
  109. package/dist/classes/pacman.d/opensuse.js +102 -0
  110. package/dist/classes/pacman.d/voidlinux.d.ts +52 -0
  111. package/dist/classes/pacman.d/voidlinux.js +90 -0
  112. package/dist/classes/pacman.d.ts +139 -0
  113. package/dist/classes/pacman.js +776 -0
  114. package/dist/classes/pve-live.d.ts +17 -0
  115. package/dist/classes/pve-live.js +52 -0
  116. package/dist/classes/pxe.d.ts +74 -0
  117. package/dist/classes/pxe.js +410 -0
  118. package/dist/classes/settings.d.ts +52 -0
  119. package/dist/classes/settings.js +185 -0
  120. package/dist/classes/sources_list.d.ts +28 -0
  121. package/dist/classes/sources_list.js +89 -0
  122. package/dist/classes/systemctl.d.ts +47 -0
  123. package/dist/classes/systemctl.js +86 -0
  124. package/dist/classes/tailor.d.ts +50 -0
  125. package/dist/classes/tailor.js +527 -0
  126. package/dist/classes/tools.d.ts +26 -0
  127. package/dist/classes/tools.js +50 -0
  128. package/dist/classes/users.d.ts +28 -0
  129. package/dist/classes/users.js +143 -0
  130. package/dist/classes/utils.d/architecture.d.ts +41 -0
  131. package/dist/classes/utils.d/architecture.js +87 -0
  132. package/dist/classes/utils.d/console-output.d.ts +26 -0
  133. package/dist/classes/utils.d/console-output.js +46 -0
  134. package/dist/classes/utils.d/filesystem.d.ts +53 -0
  135. package/dist/classes/utils.d/filesystem.js +152 -0
  136. package/dist/classes/utils.d/formatters.d.ts +32 -0
  137. package/dist/classes/utils.d/formatters.js +64 -0
  138. package/dist/classes/utils.d/kernel.d.ts +83 -0
  139. package/dist/classes/utils.d/kernel.js +288 -0
  140. package/dist/classes/utils.d/network.d.ts +43 -0
  141. package/dist/classes/utils.d/network.js +133 -0
  142. package/dist/classes/utils.d/package-info.d.ts +55 -0
  143. package/dist/classes/utils.d/package-info.js +137 -0
  144. package/dist/classes/utils.d/snapshot.d.ts +44 -0
  145. package/dist/classes/utils.d/snapshot.js +102 -0
  146. package/dist/classes/utils.d/system.d.ts +63 -0
  147. package/dist/classes/utils.d/system.js +200 -0
  148. package/dist/classes/utils.d/user-interaction.d.ts +39 -0
  149. package/dist/classes/utils.d/user-interaction.js +104 -0
  150. package/dist/classes/utils.d.ts +95 -0
  151. package/dist/classes/utils.js +111 -0
  152. package/dist/classes/xdg.d.ts +45 -0
  153. package/dist/classes/xdg.js +337 -0
  154. package/dist/classes/yolk.d.ts +33 -0
  155. package/dist/classes/yolk.js +114 -0
  156. package/dist/commands/adapt.d.ts +17 -0
  157. package/dist/commands/adapt.js +33 -0
  158. package/dist/commands/analyze.d.ts +26 -0
  159. package/dist/commands/analyze.js +95 -0
  160. package/dist/commands/calamares.d.ts +29 -0
  161. package/dist/commands/calamares.js +112 -0
  162. package/dist/commands/config.d.ts +35 -0
  163. package/dist/commands/config.js +120 -0
  164. package/dist/commands/cuckoo.d.ts +16 -0
  165. package/dist/commands/cuckoo.js +62 -0
  166. package/dist/commands/dad.d.ts +21 -0
  167. package/dist/commands/dad.js +47 -0
  168. package/dist/commands/export/iso.d.ts +19 -0
  169. package/dist/commands/export/iso.js +55 -0
  170. package/dist/commands/export/pkg.d.ts +29 -0
  171. package/dist/commands/export/pkg.js +163 -0
  172. package/dist/commands/export/tarballs.d.ts +27 -0
  173. package/dist/commands/export/tarballs.js +79 -0
  174. package/dist/commands/install.d.ts +38 -0
  175. package/dist/commands/install.js +91 -0
  176. package/dist/commands/kill.d.ts +24 -0
  177. package/dist/commands/kill.js +50 -0
  178. package/dist/commands/love.d.ts +21 -0
  179. package/dist/commands/love.js +73 -0
  180. package/dist/commands/mom.d.ts +16 -0
  181. package/dist/commands/mom.js +30 -0
  182. package/dist/commands/pods.d.ts +22 -0
  183. package/dist/commands/pods.js +92 -0
  184. package/dist/commands/produce.d.ts +35 -0
  185. package/dist/commands/produce.js +221 -0
  186. package/dist/commands/status.d.ts +23 -0
  187. package/dist/commands/status.js +31 -0
  188. package/dist/commands/syncfrom.d.ts +45 -0
  189. package/dist/commands/syncfrom.js +152 -0
  190. package/dist/commands/syncto.d.ts +40 -0
  191. package/dist/commands/syncto.js +175 -0
  192. package/dist/commands/tools/clean.d.ts +18 -0
  193. package/dist/commands/tools/clean.js +37 -0
  194. package/dist/commands/tools/ppa.d.ts +26 -0
  195. package/dist/commands/tools/ppa.js +138 -0
  196. package/dist/commands/tools/skel.d.ts +18 -0
  197. package/dist/commands/tools/skel.js +44 -0
  198. package/dist/commands/tools/stat.d.ts +31 -0
  199. package/dist/commands/tools/stat.js +70 -0
  200. package/dist/commands/tools/yolk.d.ts +24 -0
  201. package/dist/commands/tools/yolk.js +45 -0
  202. package/dist/commands/update.d.ts +51 -0
  203. package/dist/commands/update.js +219 -0
  204. package/dist/commands/wardrobe/get.d.ts +23 -0
  205. package/dist/commands/wardrobe/get.js +52 -0
  206. package/dist/commands/wardrobe/list.d.ts +24 -0
  207. package/dist/commands/wardrobe/list.js +125 -0
  208. package/dist/commands/wardrobe/show.d.ts +25 -0
  209. package/dist/commands/wardrobe/show.js +97 -0
  210. package/dist/commands/wardrobe/wear.d.ts +26 -0
  211. package/dist/commands/wardrobe/wear.js +84 -0
  212. package/dist/index.d.ts +8 -0
  213. package/dist/index.js +8 -0
  214. package/dist/index_old.d.ts +8 -0
  215. package/dist/index_old.js +8 -0
  216. package/dist/interfaces/i-addons.d.ts +12 -0
  217. package/dist/interfaces/i-addons.js +8 -0
  218. package/dist/interfaces/i-analyze.d.ts +17 -0
  219. package/dist/interfaces/i-analyze.js +17 -0
  220. package/dist/interfaces/i-app.d.ts +14 -0
  221. package/dist/interfaces/i-app.js +8 -0
  222. package/dist/interfaces/i-branding.d.ts +36 -0
  223. package/dist/interfaces/i-branding.js +8 -0
  224. package/dist/interfaces/i-calamares-displaymanager.d.ts +17 -0
  225. package/dist/interfaces/i-calamares-displaymanager.js +1 -0
  226. package/dist/interfaces/i-calamares-finished.d.ts +12 -0
  227. package/dist/interfaces/i-calamares-finished.js +1 -0
  228. package/dist/interfaces/i-calamares-packages.d.ts +28 -0
  229. package/dist/interfaces/i-calamares-packages.js +1 -0
  230. package/dist/interfaces/i-calamares-partition.d.ts +40 -0
  231. package/dist/interfaces/i-calamares-partition.js +1 -0
  232. package/dist/interfaces/i-config-tools.d.ts +15 -0
  233. package/dist/interfaces/i-config-tools.js +8 -0
  234. package/dist/interfaces/i-devices.d.ts +20 -0
  235. package/dist/interfaces/i-devices.js +8 -0
  236. package/dist/interfaces/i-distro.d.ts +23 -0
  237. package/dist/interfaces/i-distro.js +8 -0
  238. package/dist/interfaces/i-drive-list.d.ts +33 -0
  239. package/dist/interfaces/i-drive-list.js +8 -0
  240. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  241. package/dist/interfaces/i-eggs-config.js +8 -0
  242. package/dist/interfaces/i-excludes.d.ts +14 -0
  243. package/dist/interfaces/i-excludes.js +8 -0
  244. package/dist/interfaces/i-exec.d.ts +11 -0
  245. package/dist/interfaces/i-exec.js +8 -0
  246. package/dist/interfaces/i-initrd.d.ts +13 -0
  247. package/dist/interfaces/i-initrd.js +8 -0
  248. package/dist/interfaces/i-install.d.ts +16 -0
  249. package/dist/interfaces/i-install.js +8 -0
  250. package/dist/interfaces/i-installer.d.ts +17 -0
  251. package/dist/interfaces/i-installer.js +8 -0
  252. package/dist/interfaces/i-luks-passphrase.d.ts +11 -0
  253. package/dist/interfaces/i-luks-passphrase.js +8 -0
  254. package/dist/interfaces/i-materia.d.ts +36 -0
  255. package/dist/interfaces/i-materia.js +8 -0
  256. package/dist/interfaces/i-net.d.ts +16 -0
  257. package/dist/interfaces/i-net.js +8 -0
  258. package/dist/interfaces/i-os-release.d.ts +5 -0
  259. package/dist/interfaces/i-os-release.js +1 -0
  260. package/dist/interfaces/i-packages.d.ts +16 -0
  261. package/dist/interfaces/i-packages.js +8 -0
  262. package/dist/interfaces/i-partitions.d.ts +16 -0
  263. package/dist/interfaces/i-partitions.js +8 -0
  264. package/dist/interfaces/i-pxe.d.ts +45 -0
  265. package/dist/interfaces/i-pxe.js +1 -0
  266. package/dist/interfaces/i-remix.d.ts +21 -0
  267. package/dist/interfaces/i-remix.js +8 -0
  268. package/dist/interfaces/i-settings.d.ts +33 -0
  269. package/dist/interfaces/i-settings.js +8 -0
  270. package/dist/interfaces/i-user.d.ts +14 -0
  271. package/dist/interfaces/i-user.js +8 -0
  272. package/dist/interfaces/i-workdir.d.ts +14 -0
  273. package/dist/interfaces/i-workdir.js +8 -0
  274. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  275. package/dist/interfaces/i-xkb-model.js +8 -0
  276. package/dist/interfaces/index.d.ts +26 -0
  277. package/dist/interfaces/index.js +8 -0
  278. package/dist/krill/classes/cfs.d.ts +17 -0
  279. package/dist/krill/classes/cfs.js +39 -0
  280. package/dist/krill/classes/krill_enums.d.ts +37 -0
  281. package/dist/krill/classes/krill_enums.js +41 -0
  282. package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
  283. package/dist/krill/classes/prepare.d/confirm.js +30 -0
  284. package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
  285. package/dist/krill/classes/prepare.d/keyboard.js +62 -0
  286. package/dist/krill/classes/prepare.d/location.d.ts +17 -0
  287. package/dist/krill/classes/prepare.d/location.js +59 -0
  288. package/dist/krill/classes/prepare.d/network.d.ts +14 -0
  289. package/dist/krill/classes/prepare.d/network.js +68 -0
  290. package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
  291. package/dist/krill/classes/prepare.d/partitions.js +86 -0
  292. package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
  293. package/dist/krill/classes/prepare.d/summary.js +69 -0
  294. package/dist/krill/classes/prepare.d/users.d.ts +6 -0
  295. package/dist/krill/classes/prepare.d/users.js +63 -0
  296. package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
  297. package/dist/krill/classes/prepare.d/welcome.js +30 -0
  298. package/dist/krill/classes/prepare.d.ts +89 -0
  299. package/dist/krill/classes/prepare.js +314 -0
  300. package/dist/krill/classes/sequence.d/add_user.d.ts +20 -0
  301. package/dist/krill/classes/sequence.d/add_user.js +66 -0
  302. package/dist/krill/classes/sequence.d/bootloader.d.ts +14 -0
  303. package/dist/krill/classes/sequence.d/bootloader.js +95 -0
  304. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +14 -0
  305. package/dist/krill/classes/sequence.d/bootloader_config.js +165 -0
  306. package/dist/krill/classes/sequence.d/change_password.d.ts +15 -0
  307. package/dist/krill/classes/sequence.d/change_password.js +18 -0
  308. package/dist/krill/classes/sequence.d/del_live_user.d.ts +14 -0
  309. package/dist/krill/classes/sequence.d/del_live_user.js +39 -0
  310. package/dist/krill/classes/sequence.d/fstab.d.ts +14 -0
  311. package/dist/krill/classes/sequence.d/fstab.js +189 -0
  312. package/dist/krill/classes/sequence.d/grubcfg.d.ts +17 -0
  313. package/dist/krill/classes/sequence.d/grubcfg.js +33 -0
  314. package/dist/krill/classes/sequence.d/hostname.d.ts +13 -0
  315. package/dist/krill/classes/sequence.d/hostname.js +50 -0
  316. package/dist/krill/classes/sequence.d/initramfs.d.ts +13 -0
  317. package/dist/krill/classes/sequence.d/initramfs.js +54 -0
  318. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +14 -0
  319. package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
  320. package/dist/krill/classes/sequence.d/locale.d.ts +13 -0
  321. package/dist/krill/classes/sequence.d/locale.js +91 -0
  322. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +10 -0
  323. package/dist/krill/classes/sequence.d/locale_cfg.js +58 -0
  324. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +14 -0
  325. package/dist/krill/classes/sequence.d/m_keyboard.js +58 -0
  326. package/dist/krill/classes/sequence.d/machine_id.d.ts +15 -0
  327. package/dist/krill/classes/sequence.d/machine_id.js +33 -0
  328. package/dist/krill/classes/sequence.d/mkfs.d.ts +15 -0
  329. package/dist/krill/classes/sequence.d/mkfs.js +72 -0
  330. package/dist/krill/classes/sequence.d/mount_fs.d.ts +17 -0
  331. package/dist/krill/classes/sequence.d/mount_fs.js +68 -0
  332. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +17 -0
  333. package/dist/krill/classes/sequence.d/mount_vfs.js +40 -0
  334. package/dist/krill/classes/sequence.d/network_cfg.d.ts +19 -0
  335. package/dist/krill/classes/sequence.d/network_cfg.js +73 -0
  336. package/dist/krill/classes/sequence.d/packages.d.ts +14 -0
  337. package/dist/krill/classes/sequence.d/packages.js +111 -0
  338. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +17 -0
  339. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
  340. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +17 -0
  341. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +36 -0
  342. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
  343. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +78 -0
  344. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
  345. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +32 -0
  346. package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
  347. package/dist/krill/classes/sequence.d/partition.js +84 -0
  348. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +13 -0
  349. package/dist/krill/classes/sequence.d/remove_installer_link.js +35 -0
  350. package/dist/krill/classes/sequence.d/umount.d.ts +14 -0
  351. package/dist/krill/classes/sequence.d/umount.js +28 -0
  352. package/dist/krill/classes/sequence.d/unpackfs.d.ts +13 -0
  353. package/dist/krill/classes/sequence.d/unpackfs.js +20 -0
  354. package/dist/krill/classes/sequence.d.ts +133 -0
  355. package/dist/krill/classes/sequence.js +396 -0
  356. package/dist/krill/components/finished.d.ts +16 -0
  357. package/dist/krill/components/finished.js +56 -0
  358. package/dist/krill/components/information.d.ts +8 -0
  359. package/dist/krill/components/information.js +162 -0
  360. package/dist/krill/components/install.d.ts +15 -0
  361. package/dist/krill/components/install.js +60 -0
  362. package/dist/krill/components/keyboard.d.ts +16 -0
  363. package/dist/krill/components/keyboard.js +54 -0
  364. package/dist/krill/components/location.d.ts +16 -0
  365. package/dist/krill/components/location.js +59 -0
  366. package/dist/krill/components/network.d.ts +19 -0
  367. package/dist/krill/components/network.js +65 -0
  368. package/dist/krill/components/partitions.d.ts +18 -0
  369. package/dist/krill/components/partitions.js +89 -0
  370. package/dist/krill/components/steps.d.ts +13 -0
  371. package/dist/krill/components/steps.js +148 -0
  372. package/dist/krill/components/summary.d.ts +25 -0
  373. package/dist/krill/components/summary.js +77 -0
  374. package/dist/krill/components/title.d.ts +11 -0
  375. package/dist/krill/components/title.js +35 -0
  376. package/dist/krill/components/users.d.ts +24 -0
  377. package/dist/krill/components/users.js +80 -0
  378. package/dist/krill/components/welcome.d.ts +13 -0
  379. package/dist/krill/components/welcome.js +63 -0
  380. package/dist/krill/interfaces/i_krill.d.ts +44 -0
  381. package/dist/krill/interfaces/i_krill.js +8 -0
  382. package/dist/krill/interfaces/i_krill_config.d.ts +35 -0
  383. package/dist/krill/interfaces/i_krill_config.js +8 -0
  384. package/dist/krill/lib/get_address.d.ts +8 -0
  385. package/dist/krill/lib/get_address.js +23 -0
  386. package/dist/krill/lib/get_dns.d.ts +8 -0
  387. package/dist/krill/lib/get_dns.js +23 -0
  388. package/dist/krill/lib/get_domain.d.ts +8 -0
  389. package/dist/krill/lib/get_domain.js +23 -0
  390. package/dist/krill/lib/get_gateway.d.ts +8 -0
  391. package/dist/krill/lib/get_gateway.js +23 -0
  392. package/dist/krill/lib/get_hostname.d.ts +8 -0
  393. package/dist/krill/lib/get_hostname.js +23 -0
  394. package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
  395. package/dist/krill/lib/get_luks_passphrase.js +40 -0
  396. package/dist/krill/lib/get_netmask.d.ts +8 -0
  397. package/dist/krill/lib/get_netmask.js +23 -0
  398. package/dist/krill/lib/get_password.d.ts +8 -0
  399. package/dist/krill/lib/get_password.js +36 -0
  400. package/dist/krill/lib/get_userfullname.d.ts +8 -0
  401. package/dist/krill/lib/get_userfullname.js +23 -0
  402. package/dist/krill/lib/get_username.d.ts +8 -0
  403. package/dist/krill/lib/get_username.js +23 -0
  404. package/dist/krill/lib/select_address_type.d.ts +8 -0
  405. package/dist/krill/lib/select_address_type.js +24 -0
  406. package/dist/krill/lib/select_filesystem_type.d.ts +8 -0
  407. package/dist/krill/lib/select_filesystem_type.js +39 -0
  408. package/dist/krill/lib/select_installation_device.d.ts +8 -0
  409. package/dist/krill/lib/select_installation_device.js +40 -0
  410. package/dist/krill/lib/select_installation_mode.d.ts +9 -0
  411. package/dist/krill/lib/select_installation_mode.js +25 -0
  412. package/dist/krill/lib/select_interface.d.ts +8 -0
  413. package/dist/krill/lib/select_interface.js +24 -0
  414. package/dist/krill/lib/select_keyboard_layout.d.ts +11 -0
  415. package/dist/krill/lib/select_keyboard_layout.js +36 -0
  416. package/dist/krill/lib/select_keyboard_model.d.ts +11 -0
  417. package/dist/krill/lib/select_keyboard_model.js +34 -0
  418. package/dist/krill/lib/select_keyboard_option.d.ts +11 -0
  419. package/dist/krill/lib/select_keyboard_option.js +34 -0
  420. package/dist/krill/lib/select_keyboard_variant.d.ts +11 -0
  421. package/dist/krill/lib/select_keyboard_variant.js +35 -0
  422. package/dist/krill/lib/select_languages.d.ts +8 -0
  423. package/dist/krill/lib/select_languages.js +28 -0
  424. package/dist/krill/lib/select_regions.d.ts +8 -0
  425. package/dist/krill/lib/select_regions.js +24 -0
  426. package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
  427. package/dist/krill/lib/select_replaced_partition.js +31 -0
  428. package/dist/krill/lib/select_user_swap_choice.d.ts +9 -0
  429. package/dist/krill/lib/select_user_swap_choice.js +35 -0
  430. package/dist/krill/lib/select_zones.d.ts +8 -0
  431. package/dist/krill/lib/select_zones.js +518 -0
  432. package/dist/lib/kill_me_softly.d.ts +11 -0
  433. package/dist/lib/kill_me_softly.js +61 -0
  434. package/dist/lib/utils.d.ts +42 -0
  435. package/dist/lib/utils.js +87 -0
  436. package/dist/penguins-eggs_10.1.1-0_amd64.deb +0 -0
  437. package/dist/penguins-eggs_10.1.1-0_amd64.deb.sha256 +1 -0
  438. package/package.json +25 -23
  439. package/scripts/_eggs +6 -12
  440. 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
+ }