penguins-eggs 10.0.28 → 10.0.30

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 (361) hide show
  1. package/.oclif.manifest.json +1500 -2
  2. package/README.md +760 -0
  3. package/addons/README.md +0 -2
  4. package/addons/eggs/adapt/applications/eggs-adapt.desktop +1 -1
  5. package/addons/eggs/theme/livecd/isolinux.main.alpine.cfg +43 -0
  6. package/addons/eggs/theme/livecd/{isolinux.main.cfg → isolinux.main.original.cfg} +1 -1
  7. package/conf/distros/alpine/README.md +1 -1
  8. package/conf/distros/alpine/calamares/calamares-modules/bootloader-config/bootloader-config.sh +40 -0
  9. package/conf/distros/alpine/calamares/calamares-modules/bootloader-config/module.yml +9 -0
  10. package/conf/distros/alpine/calamares/calamares-modules/cleanup/cleanup.sh +13 -0
  11. package/conf/distros/alpine/calamares/calamares-modules/cleanup/module.yml +9 -0
  12. package/conf/distros/alpine/calamares/modules/bootloader.yml +57 -0
  13. package/conf/distros/alpine/calamares/modules/displaymanager.yml +23 -0
  14. package/conf/distros/alpine/calamares/modules/finished.yml +5 -0
  15. package/conf/distros/alpine/calamares/modules/fstab.yml +12 -0
  16. package/conf/distros/alpine/calamares/modules/locale.yml +98 -0
  17. package/conf/distros/alpine/calamares/modules/luksopenswaphookcfg.yml +5 -0
  18. package/conf/distros/alpine/calamares/modules/machineid.yml +17 -0
  19. package/conf/distros/alpine/calamares/modules/mount.yml +56 -0
  20. package/conf/distros/alpine/calamares/modules/packages.yml +6 -0
  21. package/conf/distros/alpine/calamares/modules/partition.yml +242 -0
  22. package/conf/distros/alpine/calamares/modules/removeuser.yml +15 -0
  23. package/conf/distros/alpine/calamares/modules/unpackfs.yml +6 -0
  24. package/conf/distros/alpine/calamares/modules/users.yml +18 -0
  25. package/conf/distros/alpine/calamares/modules/welcome.yml +19 -0
  26. package/conf/distros/alpine/calamares/settings.yml +57 -0
  27. package/conf/love.yaml +8 -0
  28. package/dist/classes/bleach.d.ts +32 -0
  29. package/dist/classes/bleach.js +136 -0
  30. package/dist/classes/cfs.d.ts +17 -0
  31. package/dist/classes/cfs.js +39 -0
  32. package/dist/classes/cli-autologin.d.ts +52 -0
  33. package/dist/classes/cli-autologin.js +230 -0
  34. package/dist/classes/compressors.d.ts +54 -0
  35. package/dist/classes/compressors.js +109 -0
  36. package/dist/classes/daddy.d.ts +26 -0
  37. package/dist/classes/daddy.js +161 -0
  38. package/dist/classes/distro.d.ts +36 -0
  39. package/dist/classes/distro.js +346 -0
  40. package/dist/classes/families/alpine.d.ts +55 -0
  41. package/dist/classes/families/alpine.js +163 -0
  42. package/dist/classes/families/archlinux.d.ts +61 -0
  43. package/dist/classes/families/archlinux.js +140 -0
  44. package/dist/classes/families/debian.d.ts +65 -0
  45. package/dist/classes/families/debian.js +138 -0
  46. package/dist/classes/families/fedora.d.ts +52 -0
  47. package/dist/classes/families/fedora.js +100 -0
  48. package/dist/classes/families/mockup.d.ts +60 -0
  49. package/dist/classes/families/mockup.js +79 -0
  50. package/dist/classes/families/opensuse.d.ts +52 -0
  51. package/dist/classes/families/opensuse.js +104 -0
  52. package/dist/classes/incubation/branding.d.ts +17 -0
  53. package/dist/classes/incubation/branding.js +89 -0
  54. package/dist/classes/incubation/distros/alpine.d.ts +32 -0
  55. package/dist/classes/incubation/distros/alpine.js +80 -0
  56. package/dist/classes/incubation/distros/bionic.d.ts +32 -0
  57. package/dist/classes/incubation/distros/bionic.js +83 -0
  58. package/dist/classes/incubation/distros/buster.d.ts +32 -0
  59. package/dist/classes/incubation/distros/buster.js +85 -0
  60. package/dist/classes/incubation/distros/jessie.d.ts +31 -0
  61. package/dist/classes/incubation/distros/jessie.js +44 -0
  62. package/dist/classes/incubation/distros/noble.d.ts +32 -0
  63. package/dist/classes/incubation/distros/noble.js +85 -0
  64. package/dist/classes/incubation/distros/rolling.d.ts +32 -0
  65. package/dist/classes/incubation/distros/rolling.js +82 -0
  66. package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
  67. package/dist/classes/incubation/fisherman-helper/displaymanager.js +39 -0
  68. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  69. package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
  70. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  71. package/dist/classes/incubation/fisherman-helper/settings.js +83 -0
  72. package/dist/classes/incubation/fisherman.d.ts +77 -0
  73. package/dist/classes/incubation/fisherman.js +251 -0
  74. package/dist/classes/incubation/incubator.d.ts +40 -0
  75. package/dist/classes/incubation/incubator.js +328 -0
  76. package/dist/classes/incubation/installer.d.ts +13 -0
  77. package/dist/classes/incubation/installer.js +64 -0
  78. package/dist/classes/keyboards.d.ts +50 -0
  79. package/dist/classes/keyboards.js +287 -0
  80. package/dist/classes/locales.d.ts +21 -0
  81. package/dist/classes/locales.js +80 -0
  82. package/dist/classes/n8.d.ts +18 -0
  83. package/dist/classes/n8.js +36 -0
  84. package/dist/classes/network.d.ts +37 -0
  85. package/dist/classes/network.js +98 -0
  86. package/dist/classes/ovary.d.ts +214 -0
  87. package/dist/classes/ovary.js +1872 -0
  88. package/dist/classes/pacman.d.ts +149 -0
  89. package/dist/classes/pacman.js +703 -0
  90. package/dist/classes/pve-live.d.ts +17 -0
  91. package/dist/classes/pve-live.js +52 -0
  92. package/dist/classes/pxe.d.ts +74 -0
  93. package/dist/classes/pxe.js +410 -0
  94. package/dist/classes/settings.d.ts +53 -0
  95. package/dist/classes/settings.js +185 -0
  96. package/dist/classes/sources_list.d.ts +28 -0
  97. package/dist/classes/sources_list.js +89 -0
  98. package/dist/classes/systemctl.d.ts +47 -0
  99. package/dist/classes/systemctl.js +86 -0
  100. package/dist/classes/tailor.d.ts +46 -0
  101. package/dist/classes/tailor.js +587 -0
  102. package/dist/classes/tools.d.ts +30 -0
  103. package/dist/classes/tools.js +54 -0
  104. package/dist/classes/users.d.ts +28 -0
  105. package/dist/classes/users.js +143 -0
  106. package/dist/classes/utils.d.ts +323 -0
  107. package/dist/classes/utils.js +951 -0
  108. package/dist/classes/xdg.d.ts +45 -0
  109. package/dist/classes/xdg.js +329 -0
  110. package/dist/classes/yolk.d.ts +33 -0
  111. package/dist/classes/yolk.js +114 -0
  112. package/dist/commands/adapt.d.ts +17 -0
  113. package/dist/commands/adapt.js +33 -0
  114. package/dist/commands/analyze.d.ts +26 -0
  115. package/dist/commands/analyze.js +95 -0
  116. package/dist/commands/calamares.d.ts +29 -0
  117. package/dist/commands/calamares.js +110 -0
  118. package/dist/commands/config.d.ts +35 -0
  119. package/dist/commands/config.js +192 -0
  120. package/dist/commands/cuckoo.d.ts +16 -0
  121. package/dist/commands/cuckoo.js +62 -0
  122. package/dist/commands/dad.d.ts +20 -0
  123. package/dist/commands/dad.js +46 -0
  124. package/dist/commands/export/deb.d.ts +19 -0
  125. package/dist/commands/export/deb.js +51 -0
  126. package/dist/commands/export/iso.d.ts +19 -0
  127. package/dist/commands/export/iso.js +55 -0
  128. package/dist/commands/install.d.ts +37 -0
  129. package/dist/commands/install.js +92 -0
  130. package/dist/commands/kill.d.ts +24 -0
  131. package/dist/commands/kill.js +50 -0
  132. package/dist/commands/love.d.ts +20 -0
  133. package/dist/commands/love.js +55 -0
  134. package/dist/commands/mom.d.ts +16 -0
  135. package/dist/commands/mom.js +30 -0
  136. package/dist/commands/produce.d.ts +34 -0
  137. package/dist/commands/produce.js +196 -0
  138. package/dist/commands/status.d.ts +23 -0
  139. package/dist/commands/status.js +31 -0
  140. package/dist/commands/syncfrom.d.ts +45 -0
  141. package/dist/commands/syncfrom.js +152 -0
  142. package/dist/commands/syncto.d.ts +40 -0
  143. package/dist/commands/syncto.js +175 -0
  144. package/dist/commands/tools/clean.d.ts +18 -0
  145. package/dist/commands/tools/clean.js +37 -0
  146. package/dist/commands/tools/ppa.d.ts +26 -0
  147. package/dist/commands/tools/ppa.js +138 -0
  148. package/dist/commands/tools/skel.d.ts +18 -0
  149. package/dist/commands/tools/skel.js +44 -0
  150. package/dist/commands/tools/stat.d.ts +31 -0
  151. package/dist/commands/tools/stat.js +70 -0
  152. package/dist/commands/tools/yolk.d.ts +24 -0
  153. package/dist/commands/tools/yolk.js +45 -0
  154. package/dist/commands/update.d.ts +47 -0
  155. package/dist/commands/update.js +140 -0
  156. package/dist/commands/wardrobe/get.d.ts +23 -0
  157. package/dist/commands/wardrobe/get.js +52 -0
  158. package/dist/commands/wardrobe/list.d.ts +24 -0
  159. package/dist/commands/wardrobe/list.js +125 -0
  160. package/dist/commands/wardrobe/show.d.ts +25 -0
  161. package/dist/commands/wardrobe/show.js +97 -0
  162. package/dist/commands/wardrobe/wear.d.ts +26 -0
  163. package/dist/commands/wardrobe/wear.js +81 -0
  164. package/dist/components/finished.d.ts +15 -0
  165. package/dist/components/finished.js +55 -0
  166. package/dist/components/information.d.ts +8 -0
  167. package/dist/components/information.js +153 -0
  168. package/dist/components/install.d.ts +15 -0
  169. package/dist/components/install.js +56 -0
  170. package/dist/components/keyboard.d.ts +16 -0
  171. package/dist/components/keyboard.js +54 -0
  172. package/dist/components/location.d.ts +16 -0
  173. package/dist/components/location.js +59 -0
  174. package/dist/components/network.d.ts +19 -0
  175. package/dist/components/network.js +65 -0
  176. package/dist/components/partitions.d.ts +16 -0
  177. package/dist/components/partitions.js +73 -0
  178. package/dist/components/steps.d.ts +13 -0
  179. package/dist/components/steps.js +148 -0
  180. package/dist/components/summary.d.ts +24 -0
  181. package/dist/components/summary.js +82 -0
  182. package/dist/components/title.d.ts +11 -0
  183. package/dist/components/title.js +35 -0
  184. package/dist/components/users.d.ts +24 -0
  185. package/dist/components/users.js +80 -0
  186. package/dist/components/welcome.d.ts +13 -0
  187. package/dist/components/welcome.js +63 -0
  188. package/dist/index.d.ts +8 -0
  189. package/dist/index.js +8 -0
  190. package/dist/interfaces/i-addons.d.ts +12 -0
  191. package/dist/interfaces/i-addons.js +8 -0
  192. package/dist/interfaces/i-analyze.d.ts +17 -0
  193. package/dist/interfaces/i-analyze.js +17 -0
  194. package/dist/interfaces/i-app.d.ts +14 -0
  195. package/dist/interfaces/i-app.js +8 -0
  196. package/dist/interfaces/i-branding.d.ts +36 -0
  197. package/dist/interfaces/i-branding.js +8 -0
  198. package/dist/interfaces/i-calamares-partition.d.ts +18 -0
  199. package/dist/interfaces/i-calamares-partition.js +8 -0
  200. package/dist/interfaces/i-config-tools.d.ts +18 -0
  201. package/dist/interfaces/i-config-tools.js +8 -0
  202. package/dist/interfaces/i-devices.d.ts +20 -0
  203. package/dist/interfaces/i-devices.js +8 -0
  204. package/dist/interfaces/i-distro.d.ts +27 -0
  205. package/dist/interfaces/i-distro.js +8 -0
  206. package/dist/interfaces/i-drive-list.d.ts +33 -0
  207. package/dist/interfaces/i-drive-list.js +8 -0
  208. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  209. package/dist/interfaces/i-eggs-config.js +8 -0
  210. package/dist/interfaces/i-excludes.d.ts +14 -0
  211. package/dist/interfaces/i-excludes.js +8 -0
  212. package/dist/interfaces/i-exec.d.ts +11 -0
  213. package/dist/interfaces/i-exec.js +8 -0
  214. package/dist/interfaces/i-initrd.d.ts +13 -0
  215. package/dist/interfaces/i-initrd.js +8 -0
  216. package/dist/interfaces/i-install.d.ts +16 -0
  217. package/dist/interfaces/i-install.js +8 -0
  218. package/dist/interfaces/i-installer.d.ts +17 -0
  219. package/dist/interfaces/i-installer.js +8 -0
  220. package/dist/interfaces/i-krill-config.d.ts +33 -0
  221. package/dist/interfaces/i-krill-config.js +8 -0
  222. package/dist/interfaces/i-krill.d.ts +42 -0
  223. package/dist/interfaces/i-krill.js +8 -0
  224. package/dist/interfaces/i-materia.d.ts +41 -0
  225. package/dist/interfaces/i-materia.js +8 -0
  226. package/dist/interfaces/i-net.d.ts +16 -0
  227. package/dist/interfaces/i-net.js +8 -0
  228. package/dist/interfaces/i-packages.d.ts +16 -0
  229. package/dist/interfaces/i-packages.js +8 -0
  230. package/dist/interfaces/i-partitions.d.ts +16 -0
  231. package/dist/interfaces/i-partitions.js +8 -0
  232. package/dist/interfaces/i-pxe.d.ts +45 -0
  233. package/dist/interfaces/i-pxe.js +1 -0
  234. package/dist/interfaces/i-remix.d.ts +21 -0
  235. package/dist/interfaces/i-remix.js +8 -0
  236. package/dist/interfaces/i-settings.d.ts +33 -0
  237. package/dist/interfaces/i-settings.js +8 -0
  238. package/dist/interfaces/i-user.d.ts +14 -0
  239. package/dist/interfaces/i-user.js +8 -0
  240. package/dist/interfaces/i-workdir.d.ts +14 -0
  241. package/dist/interfaces/i-workdir.js +8 -0
  242. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  243. package/dist/interfaces/i-xkb-model.js +8 -0
  244. package/dist/interfaces/index.d.ts +25 -0
  245. package/dist/interfaces/index.js +8 -0
  246. package/dist/krill/modules/add-user.d.ts +20 -0
  247. package/dist/krill/modules/add-user.js +49 -0
  248. package/dist/krill/modules/bootloader-config-alpine.d.ts +14 -0
  249. package/dist/krill/modules/bootloader-config-alpine.js +37 -0
  250. package/dist/krill/modules/bootloader-config-arch.d.ts +14 -0
  251. package/dist/krill/modules/bootloader-config-arch.js +37 -0
  252. package/dist/krill/modules/bootloader-config-debian.d.ts +10 -0
  253. package/dist/krill/modules/bootloader-config-debian.js +50 -0
  254. package/dist/krill/modules/bootloader-config.d.ts +10 -0
  255. package/dist/krill/modules/bootloader-config.js +25 -0
  256. package/dist/krill/modules/bootloader.d.ts +14 -0
  257. package/dist/krill/modules/bootloader.js +30 -0
  258. package/dist/krill/modules/change-password.d.ts +15 -0
  259. package/dist/krill/modules/change-password.js +18 -0
  260. package/dist/krill/modules/del-live-user.d.ts +14 -0
  261. package/dist/krill/modules/del-live-user.js +38 -0
  262. package/dist/krill/modules/fstab.d.ts +14 -0
  263. package/dist/krill/modules/fstab.js +121 -0
  264. package/dist/krill/modules/grubcfg.d.ts +17 -0
  265. package/dist/krill/modules/grubcfg.js +29 -0
  266. package/dist/krill/modules/hostname.d.ts +13 -0
  267. package/dist/krill/modules/hostname.js +50 -0
  268. package/dist/krill/modules/initramfs-cfg.d.ts +14 -0
  269. package/dist/krill/modules/initramfs-cfg.js +25 -0
  270. package/dist/krill/modules/initramfs.d.ts +13 -0
  271. package/dist/krill/modules/initramfs.js +48 -0
  272. package/dist/krill/modules/locale-cfg.d.ts +10 -0
  273. package/dist/krill/modules/locale-cfg.js +61 -0
  274. package/dist/krill/modules/locale.d.ts +13 -0
  275. package/dist/krill/modules/locale.js +48 -0
  276. package/dist/krill/modules/m-keyboard.d.ts +14 -0
  277. package/dist/krill/modules/m-keyboard.js +79 -0
  278. package/dist/krill/modules/m-timezone.d.ts +14 -0
  279. package/dist/krill/modules/m-timezone.js +22 -0
  280. package/dist/krill/modules/machine-id.d.ts +15 -0
  281. package/dist/krill/modules/machine-id.js +30 -0
  282. package/dist/krill/modules/mkfs.d.ts +13 -0
  283. package/dist/krill/modules/mkfs.js +48 -0
  284. package/dist/krill/modules/mount-fs.d.ts +17 -0
  285. package/dist/krill/modules/mount-fs.js +60 -0
  286. package/dist/krill/modules/mount-vfs.d.ts +17 -0
  287. package/dist/krill/modules/mount-vfs.js +40 -0
  288. package/dist/krill/modules/network-cfg.d.ts +19 -0
  289. package/dist/krill/modules/network-cfg.js +64 -0
  290. package/dist/krill/modules/packages.d.ts +14 -0
  291. package/dist/krill/modules/packages.js +111 -0
  292. package/dist/krill/modules/partition.d.ts +20 -0
  293. package/dist/krill/modules/partition.js +324 -0
  294. package/dist/krill/modules/remove-installer-link.d.ts +13 -0
  295. package/dist/krill/modules/remove-installer-link.js +35 -0
  296. package/dist/krill/modules/umount.d.ts +14 -0
  297. package/dist/krill/modules/umount.js +27 -0
  298. package/dist/krill/modules/unpackfs.d.ts +13 -0
  299. package/dist/krill/modules/unpackfs.js +19 -0
  300. package/dist/krill/prepare.d.ts +78 -0
  301. package/dist/krill/prepare.js +626 -0
  302. package/dist/krill/sequence.d.ts +159 -0
  303. package/dist/krill/sequence.js +687 -0
  304. package/dist/lib/get_address.d.ts +8 -0
  305. package/dist/lib/get_address.js +23 -0
  306. package/dist/lib/get_dns.d.ts +8 -0
  307. package/dist/lib/get_dns.js +23 -0
  308. package/dist/lib/get_domain.d.ts +8 -0
  309. package/dist/lib/get_domain.js +23 -0
  310. package/dist/lib/get_gateway.d.ts +8 -0
  311. package/dist/lib/get_gateway.js +23 -0
  312. package/dist/lib/get_hostname.d.ts +8 -0
  313. package/dist/lib/get_hostname.js +23 -0
  314. package/dist/lib/get_netmask.d.ts +8 -0
  315. package/dist/lib/get_netmask.js +23 -0
  316. package/dist/lib/get_password.d.ts +8 -0
  317. package/dist/lib/get_password.js +36 -0
  318. package/dist/lib/get_userfullname.d.ts +8 -0
  319. package/dist/lib/get_userfullname.js +23 -0
  320. package/dist/lib/get_username.d.ts +8 -0
  321. package/dist/lib/get_username.js +23 -0
  322. package/dist/lib/kill_me_softly.d.ts +11 -0
  323. package/dist/lib/kill_me_softly.js +61 -0
  324. package/dist/lib/select_address_type.d.ts +8 -0
  325. package/dist/lib/select_address_type.js +24 -0
  326. package/dist/lib/select_filesystem_type.d.ts +8 -0
  327. package/dist/lib/select_filesystem_type.js +45 -0
  328. package/dist/lib/select_installation_device.d.ts +8 -0
  329. package/dist/lib/select_installation_device.js +30 -0
  330. package/dist/lib/select_installation_mode.d.ts +8 -0
  331. package/dist/lib/select_installation_mode.js +24 -0
  332. package/dist/lib/select_interface.d.ts +8 -0
  333. package/dist/lib/select_interface.js +24 -0
  334. package/dist/lib/select_keyboard_layout.d.ts +11 -0
  335. package/dist/lib/select_keyboard_layout.js +36 -0
  336. package/dist/lib/select_keyboard_model.d.ts +11 -0
  337. package/dist/lib/select_keyboard_model.js +34 -0
  338. package/dist/lib/select_keyboard_option.d.ts +11 -0
  339. package/dist/lib/select_keyboard_option.js +34 -0
  340. package/dist/lib/select_keyboard_variant.d.ts +11 -0
  341. package/dist/lib/select_keyboard_variant.js +35 -0
  342. package/dist/lib/select_languages.d.ts +8 -0
  343. package/dist/lib/select_languages.js +28 -0
  344. package/dist/lib/select_regions.d.ts +8 -0
  345. package/dist/lib/select_regions.js +24 -0
  346. package/dist/lib/select_user_swap_choice.d.ts +8 -0
  347. package/dist/lib/select_user_swap_choice.js +34 -0
  348. package/dist/lib/select_zones.d.ts +8 -0
  349. package/dist/lib/select_zones.js +518 -0
  350. package/dist/lib/utils.d.ts +34 -0
  351. package/dist/lib/utils.js +79 -0
  352. package/manpages/doc/man/eggs.1.gz +0 -0
  353. package/manpages/doc/man/eggs.html +21 -5
  354. package/mkinitfs/README.md +9 -0
  355. package/package.json +4 -4
  356. package/scripts/_eggs +9 -2
  357. package/scripts/eggs.bash +2 -1
  358. package/addons/eggs/ichoice/applications/eggs-ichoice.desktop +0 -23
  359. package/addons/eggs/ichoice/bin/eggs-ichoice.sh +0 -44
  360. package/scripts/love +0 -25
  361. /package/{addons/eggs/adapt/bin/adapt → scripts/adapt.sh} +0 -0
@@ -0,0 +1,346 @@
1
+ /**
2
+ * penguins-eggs
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
+ // _dirname
14
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
15
+ /**
16
+ * Classe
17
+ */
18
+ class Distro {
19
+ bugReportUrl;
20
+ codenameId;
21
+ codenameLikeId;
22
+ distroId;
23
+ distroLike;
24
+ familyId;
25
+ homeUrl;
26
+ isCalamaresAvailable;
27
+ isolinuxPath;
28
+ liveMediumPath;
29
+ memdiskPath;
30
+ pxelinuxPath;
31
+ releaseId;
32
+ releaseLike;
33
+ squashfs;
34
+ supportUrl;
35
+ syslinuxPath;
36
+ usrLibPath;
37
+ /**
38
+ * Costruttore
39
+ */
40
+ constructor() {
41
+ this.bugReportUrl = 'https://github.com-pieroproietti/penguins-eggs/issue';
42
+ this.codenameId = '';
43
+ this.codenameLikeId = '';
44
+ this.distroId = '';
45
+ this.distroLike = '';
46
+ this.familyId = 'debian';
47
+ this.homeUrl = 'https://penguins-eggs.net';
48
+ this.isCalamaresAvailable = true;
49
+ this.isolinuxPath = '';
50
+ this.liveMediumPath = '/run/live/medium/';
51
+ this.memdiskPath = '';
52
+ this.pxelinuxPath = '';
53
+ this.releaseId = '';
54
+ this.releaseLike = '';
55
+ this.squashfs = 'live/filesystem.squashfs';
56
+ this.supportUrl = 'https://penguins-eggs.net';
57
+ this.syslinuxPath = '';
58
+ this.usrLibPath = '/usr/lib';
59
+ const os_release = '/etc/os-release';
60
+ if (fs.existsSync(os_release)) {
61
+ let lines = [];
62
+ if (fs.existsSync(os_release)) {
63
+ const data = fs.readFileSync(os_release, 'utf8');
64
+ lines = data.split('\n');
65
+ }
66
+ // per ogni riga
67
+ for (const line of lines) {
68
+ if (line.startsWith('HOME_URL=')) {
69
+ this.homeUrl = line.slice('HOME_URL='.length).replaceAll('"', '');
70
+ }
71
+ else if (line.startsWith('SUPPORT_URL=')) {
72
+ this.supportUrl = line.slice('SUPPORT_URL='.length).replaceAll('"', '');
73
+ }
74
+ else if (line.startsWith('BUG_REPORT_URL=')) {
75
+ this.bugReportUrl = line.slice('BUG_REPORT_URL='.length).replaceAll('"', '');
76
+ }
77
+ }
78
+ }
79
+ /**
80
+ * lsb_release -cs per codename (version)
81
+ * lsb_release -is per distribuzione
82
+ * lsb_release -rs per release
83
+ */
84
+ this.codenameId = shell.exec('lsb_release -cs', { silent: true }).stdout.toString().trim();
85
+ this.releaseId = shell.exec('lsb_release -rs', { silent: true }).stdout.toString().trim();
86
+ this.distroId = shell.exec('lsb_release -is', { silent: true }).stdout.toString().trim();
87
+ /**
88
+ * releaseLike = releaseId
89
+ */
90
+ this.releaseLike = this.releaseId;
91
+ /**
92
+ * Per casi equivoci conviene normalizzare codenameId
93
+ * -i, --id show distributor ID
94
+ * -r, --release show release number of this distribution
95
+ * -c, --codename show code name of this distribution
96
+ */
97
+ if (this.distroId === 'Debian' && this.releaseId === 'unstable' && this.codenameId === 'sid') {
98
+ this.codenameId = 'trixie';
99
+ }
100
+ else if (this.distroId === 'Debian' && this.releaseId === 'testing/unstable') {
101
+ this.codenameId = 'trixie';
102
+ this.releaseLike = 'unstable';
103
+ }
104
+ /**
105
+ * Analize distroId
106
+ */
107
+ switch (this.distroId) {
108
+ case 'Alpine': {
109
+ this.familyId = 'alpine';
110
+ this.distroLike = 'Alpine';
111
+ this.codenameId = 'rolling'; // questo viene rimosso dal nome
112
+ this.codenameLikeId = 'alpine'; // prende alpine come codenaneLikeId
113
+ this.liveMediumPath = '/mnt/'; // Qua è deciso da noi
114
+ this.squashfs = `live/filesystem.squashfs`;
115
+ this.syslinuxPath = '/usr/share/syslinux/'; // correct
116
+ this.pxelinuxPath = this.syslinuxPath;
117
+ this.usrLibPath = '/usr/lib/';
118
+ this.memdiskPath = this.syslinuxPath;
119
+ this.isolinuxPath = this.syslinuxPath;
120
+ // At the moment
121
+ this.isCalamaresAvailable = true;
122
+ break;
123
+ }
124
+ case 'Fedora': {
125
+ this.familyId = 'fedora';
126
+ this.distroLike = 'Fedora';
127
+ this.codenameId = 'rolling';
128
+ this.codenameLikeId = '40';
129
+ this.liveMediumPath = '/run/install/repo/'; // ? è il mount della root su cd di installatione
130
+ this.squashfs = `live/filesystem.squashfs`;
131
+ this.syslinuxPath = '/usr/share/syslinux/';
132
+ this.pxelinuxPath = this.syslinuxPath;
133
+ this.usrLibPath = '/usr/lib/';
134
+ this.memdiskPath = this.syslinuxPath;
135
+ this.isolinuxPath = this.syslinuxPath;
136
+ // At the moment
137
+ this.isCalamaresAvailable = false;
138
+ break;
139
+ }
140
+ case 'openSUSE': {
141
+ this.familyId = 'suse';
142
+ this.distroLike = 'openSUSE';
143
+ this.codenameId = 'rolling';
144
+ this.codenameLikeId = 'Tumbleweed';
145
+ this.liveMediumPath = '/run/install/repo/'; // ? è il mount della root su cd di installatione
146
+ this.squashfs = `live/filesystem.squashfs`;
147
+ this.syslinuxPath = '/usr/share/syslinux/';
148
+ this.pxelinuxPath = this.syslinuxPath;
149
+ this.usrLibPath = '/usr/lib/';
150
+ this.memdiskPath = this.syslinuxPath;
151
+ this.isolinuxPath = this.syslinuxPath;
152
+ // At the moment
153
+ this.isCalamaresAvailable = false;
154
+ break;
155
+ }
156
+ default: {
157
+ /**
158
+ * Arch/Debian/Devuan/Manjaro and Ubuntu
159
+ */
160
+ switch (this.codenameId) {
161
+ case 'jessie': {
162
+ // Debian 8 jessie
163
+ this.distroLike = 'Debian';
164
+ this.codenameLikeId = 'jessie';
165
+ this.liveMediumPath = '/lib/live/mount/medium/';
166
+ this.isCalamaresAvailable = false;
167
+ break;
168
+ }
169
+ case 'stretch': {
170
+ // Debian 9 stretch
171
+ this.distroLike = 'Debian';
172
+ this.codenameLikeId = 'stretch';
173
+ this.liveMediumPath = '/lib/live/mount/medium/';
174
+ this.isCalamaresAvailable = false;
175
+ break;
176
+ }
177
+ case 'buster': {
178
+ // Debian 10 buster
179
+ this.distroLike = 'Debian';
180
+ this.codenameLikeId = 'buster';
181
+ break;
182
+ }
183
+ case 'bullseye': {
184
+ // Debian 11 bullseye
185
+ this.distroLike = 'Debian';
186
+ this.codenameLikeId = 'bullseye';
187
+ break;
188
+ }
189
+ case 'bookworm': {
190
+ // Debian 12 bookworm
191
+ this.distroLike = 'Debian';
192
+ this.codenameLikeId = 'bookworm';
193
+ break;
194
+ }
195
+ case 'trixie': {
196
+ // Debian 13 trixie
197
+ this.distroLike = 'Debian';
198
+ this.codenameLikeId = 'trixie';
199
+ break;
200
+ }
201
+ case 'beowulf': {
202
+ // Devuab 3 beowulf
203
+ this.distroLike = 'Devuan';
204
+ this.codenameLikeId = 'beowulf';
205
+ break;
206
+ }
207
+ case 'chimaera': {
208
+ // Devuab 4 chimaera
209
+ this.distroLike = 'Devuan';
210
+ this.codenameLikeId = 'chimaera';
211
+ break;
212
+ }
213
+ case 'daedalus': {
214
+ // Devuan 5 daedalus
215
+ this.distroLike = 'Devuan';
216
+ this.codenameLikeId = 'daedalus';
217
+ break;
218
+ }
219
+ /**
220
+ * Ubuntu LTS + actual
221
+ */
222
+ case 'bionic': {
223
+ // Ubuntu 18.04 bionic LTS eol aprile 2023
224
+ this.distroLike = 'Ubuntu';
225
+ this.codenameLikeId = 'bionic';
226
+ this.liveMediumPath = '/lib/live/mount/medium/';
227
+ break;
228
+ }
229
+ case 'focal': {
230
+ // Ubuntu 20.04 focal LTS
231
+ this.distroLike = 'Ubuntu';
232
+ this.codenameLikeId = 'focal';
233
+ break;
234
+ }
235
+ case 'jammy': {
236
+ // Ubuntu 22.04 jammy LTS
237
+ this.distroLike = 'Ubuntu';
238
+ this.codenameLikeId = 'jammy';
239
+ break;
240
+ }
241
+ case 'noble': {
242
+ // Ubuntu 24.04 noble LTS
243
+ this.distroLike = 'Ubuntu';
244
+ this.codenameLikeId = 'noble';
245
+ break;
246
+ }
247
+ case 'devel': {
248
+ // Ubuntu rhino
249
+ this.distroLike = 'Ubuntu';
250
+ this.codenameLikeId = 'devel';
251
+ break;
252
+ }
253
+ /**
254
+ * Arch Linux/Garuda
255
+ */
256
+ case 'Spizaetus':
257
+ case 'n/a':
258
+ case 'rolling': {
259
+ this.familyId = 'archlinux';
260
+ this.distroLike = 'Arch';
261
+ this.codenameId = 'rolling';
262
+ this.codenameLikeId = 'rolling';
263
+ this.liveMediumPath = '/run/archiso/bootmnt/';
264
+ this.squashfs = `arch/x86_64/airootfs.sfs`;
265
+ break;
266
+ }
267
+ default: {
268
+ /**
269
+ * patch per Roy VERIFICARE
270
+ */
271
+ let found = false;
272
+ let file = path.resolve(__dirname, '../../conf/derivatives.yaml');
273
+ if (fs.existsSync('/etc/penguins-eggs.d/derivatives.yaml')) {
274
+ file = '/etc/penguins-eggs.d/derivatives.yaml';
275
+ }
276
+ const content = fs.readFileSync(file, 'utf8');
277
+ const distros = yaml.load(content);
278
+ for (const distro of distros) {
279
+ if (distro.ids !== undefined) {
280
+ for (let n = 0; n < distro.ids.length; n++) {
281
+ if (this.codenameId === distro.ids[n]) {
282
+ found = true;
283
+ this.distroLike = distro.distroLike;
284
+ this.codenameLikeId = distro.id;
285
+ this.familyId = distro.family;
286
+ }
287
+ }
288
+ }
289
+ }
290
+ if (!found) {
291
+ console.log(`This distro ${this.distroId}/${this.codenameId} is not yet recognized!`);
292
+ console.log('');
293
+ console.log('You can edit /usr/lib/penguins-eggs/conf/derivatives.yaml to add it -');
294
+ console.log('after that - run: sudo eggs dad -d to re-configure eggs.');
295
+ console.log('If you can create your new iso, you can contribute to the project');
296
+ console.log('by suggesting your modification.');
297
+ process.exit(0);
298
+ }
299
+ }
300
+ }
301
+ /**
302
+ * setting paths: syslinux, isolinux, usrLibPath
303
+ */
304
+ switch (this.familyId) {
305
+ case 'debian': {
306
+ this.isolinuxPath = '/usr/lib/ISOLINUX/';
307
+ this.syslinuxPath = '/usr/lib/syslinux/modules/bios/';
308
+ this.pxelinuxPath = '/usr/lib/PXELINUX/';
309
+ this.memdiskPath = '/usr/lib/syslinux/';
310
+ this.usrLibPath = '/usr/lib/' + Utils.usrLibPath();
311
+ break;
312
+ }
313
+ case 'archlinux': {
314
+ this.syslinuxPath = '/usr/lib/syslinux/bios/';
315
+ this.pxelinuxPath = this.syslinuxPath;
316
+ this.usrLibPath = '/usr/lib/';
317
+ this.memdiskPath = this.syslinuxPath;
318
+ this.isolinuxPath = this.syslinuxPath;
319
+ break;
320
+ }
321
+ // No default
322
+ } // Fine analisi codenameId
323
+ }
324
+ }
325
+ /**
326
+ * if lsb-release exists
327
+ */
328
+ const lsbConfig = '/etc/lsb-release';
329
+ if (fs.existsSync(lsbConfig)) {
330
+ this.distroId = Utils.searchOnFile(lsbConfig, `DISTRIB_ID`);
331
+ this.codenameId = Utils.searchOnFile(lsbConfig, `DISTRIB_CODENAME`);
332
+ // patch for BigLinux
333
+ if (this.distroId.toLowerCase().includes('biglinux')) {
334
+ this.distroId = 'biglinux';
335
+ }
336
+ }
337
+ /**
338
+ * ManjaroLinux and BigLinux
339
+ */
340
+ if (this.distroId === 'ManjaroLinux' || this.distroId.toLowerCase().includes('biglinux')) {
341
+ this.liveMediumPath = '/run/miso/bootmnt/';
342
+ this.squashfs = 'manjaro/x86_64/livefs.sfs';
343
+ }
344
+ }
345
+ }
346
+ export default Distro;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * ./src/classes/families/alpine.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
+ * Alpine
10
+ * @remarks all the utilities
11
+ */
12
+ export default class Alpine {
13
+ static packs4calamares: string[];
14
+ /**
15
+ * Alpine: calamaresInstall
16
+ */
17
+ static calamaresInstall(verbose?: boolean): Promise<void>;
18
+ /**
19
+ * Alpine: calamaresPolicies
20
+ */
21
+ static calamaresPolicies(verbose?: boolean): Promise<void>;
22
+ /**
23
+ * Alpine: calamaresRemove
24
+ */
25
+ static calamaresRemove(verbose?: boolean): Promise<boolean>;
26
+ /**
27
+ * Alpine: isInstalledWayland
28
+ * @returns true if wayland is installed
29
+ */
30
+ static isInstalledWayland(): boolean;
31
+ /**
32
+ * Alpine: isInstalledXorg
33
+ * @returns true if xorg is installed
34
+ */
35
+ static isInstalledXorg(): boolean;
36
+ /**
37
+ * Alpine: packageInstall
38
+ * Install the package packageName
39
+ * @param packageName {string} Pacchetto Debian da installare
40
+ * @returns {boolean} True if success
41
+ */
42
+ static packageInstall(packageName: string): Promise<boolean>;
43
+ /**
44
+ * Alpine: packageIsInstalled OK
45
+ * restuisce VERO se il pacchetto è installato
46
+ * @param packageName
47
+ */
48
+ static packageIsInstalled(packageName: string): boolean;
49
+ /**
50
+ * Alpine: packagePacmanAvailable
51
+ * restuisce VERO se il pacchetto è installato
52
+ * @param packageName
53
+ */
54
+ static packagePacmanAvailable(packageName: string): Promise<boolean>;
55
+ }
@@ -0,0 +1,163 @@
1
+ /**
2
+ * ./src/classes/families/alpine.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 shx from 'shelljs';
9
+ import { exec } from '../../lib/utils.js';
10
+ import Utils from '../utils.js';
11
+ /**
12
+ * Alpine
13
+ * @remarks all the utilities
14
+ */
15
+ export default class Alpine {
16
+ static packs4calamares = [
17
+ 'calamares',
18
+ 'calamares-doc',
19
+ 'calamares-extensions',
20
+ 'calamares-lang',
21
+ 'calamares-mod-bootloader',
22
+ 'calamares-mod-displaymanager',
23
+ 'calamares-mod-finished',
24
+ 'calamares-mod-fsresizer',
25
+ 'calamares-mod-fstab',
26
+ 'calamares-mod-grubcfg',
27
+ 'calamares-mod-hostinfo',
28
+ 'calamares-mod-hwclock',
29
+ 'calamares-mod-interactiveterminal',
30
+ 'calamares-mod-keyboard',
31
+ 'calamares-mod-keyboardq',
32
+ 'calamares-mod-locale',
33
+ 'calamares-mod-localeq',
34
+ 'calamares-mod-luksbootkeyfile',
35
+ 'calamares-mod-luksopenswaphookcfg',
36
+ 'calamares-mod-machineid',
37
+ 'calamares-mod-mkinitfs',
38
+ 'calamares-mod-mount',
39
+ 'calamares-mod-networkcfg',
40
+ 'calamares-mod-packages',
41
+ 'calamares-mod-partition',
42
+ 'calamares-mod-plasmalnf',
43
+ 'calamares-mod-plymouthcfg',
44
+ 'calamares-mod-removeuser',
45
+ 'calamares-mod-services-openrc',
46
+ 'calamares-mod-shellprocess',
47
+ 'calamares-mod-summary',
48
+ 'calamares-mod-umount',
49
+ 'calamares-mod-unpackfs',
50
+ 'calamares-mod-users',
51
+ 'calamares-mod-webview',
52
+ 'calamares-mod-welcome',
53
+ 'calamares-mod-welcomeq'
54
+ ];
55
+ /**
56
+ * Alpine: calamaresInstall
57
+ */
58
+ static async calamaresInstall(verbose = false) {
59
+ const echo = Utils.setEcho(verbose);
60
+ let installed = false;
61
+ try {
62
+ const cmd = 'apk update';
63
+ await exec(cmd, echo);
64
+ installed = true;
65
+ }
66
+ catch {
67
+ Utils.error(`Alpine.calamaresInstall(): apk update `);
68
+ }
69
+ try {
70
+ const cmd = `apk add ${this.packs4calamares.join(' ')}`;
71
+ await exec(cmd, echo);
72
+ }
73
+ catch {
74
+ Utils.error(`Alpine.calamaresInstall(): apk add calamares ...`);
75
+ }
76
+ }
77
+ /**
78
+ * Alpine: calamaresPolicies
79
+ */
80
+ static async calamaresPolicies(verbose = true) {
81
+ const echo = Utils.setEcho(verbose);
82
+ const policyFile = '/usr/share/polkit-1/actions/com.github.calamares.calamares.policy';
83
+ await exec(`sed -i 's/auth_admin/yes/' ${policyFile}`, echo);
84
+ }
85
+ /**
86
+ * Alpine: calamaresRemove
87
+ */
88
+ static async calamaresRemove(verbose = true) {
89
+ const echo = Utils.setEcho(verbose);
90
+ let removed = false;
91
+ try {
92
+ const cmd = `apk del ${this.packs4calamares.join(' ')}`;
93
+ await exec(cmd, echo);
94
+ removed = true;
95
+ }
96
+ catch {
97
+ Utils.error(`Alpine.calamaresRemove(): apk del calamares ...`);
98
+ }
99
+ try {
100
+ const cmd = `rm /etc/calamares -rf`;
101
+ await exec(cmd, echo);
102
+ }
103
+ catch {
104
+ Utils.error(`Alpine.calamaresRemove(): rm /etc/calamares -rf`);
105
+ }
106
+ return removed;
107
+ }
108
+ /**
109
+ * Alpine: isInstalledWayland
110
+ * @returns true if wayland is installed
111
+ */
112
+ static isInstalledWayland() {
113
+ return this.packageIsInstalled('xwayland');
114
+ }
115
+ /**
116
+ * Alpine: isInstalledXorg
117
+ * @returns true if xorg is installed
118
+ */
119
+ static isInstalledXorg() {
120
+ return this.packageIsInstalled('xorg-server-common');
121
+ }
122
+ /**
123
+ * Alpine: packageInstall
124
+ * Install the package packageName
125
+ * @param packageName {string} Pacchetto Debian da installare
126
+ * @returns {boolean} True if success
127
+ */
128
+ static async packageInstall(packageName) {
129
+ let retVal = false;
130
+ if (shx.exec(`/sbin/apk add ${packageName}`, { silent: true }) === '0') {
131
+ retVal = true;
132
+ }
133
+ return retVal;
134
+ }
135
+ /**
136
+ * Alpine: packageIsInstalled OK
137
+ * restuisce VERO se il pacchetto è installato
138
+ * @param packageName
139
+ */
140
+ static packageIsInstalled(packageName) {
141
+ let installed = false;
142
+ const cmd = `/sbin/apk info -e ${packageName}`;
143
+ const stdout = shx.exec(cmd, { silent: true }).stdout.trim();
144
+ if (stdout.includes(packageName)) {
145
+ installed = true;
146
+ }
147
+ return installed;
148
+ }
149
+ /**
150
+ * Alpine: packagePacmanAvailable
151
+ * restuisce VERO se il pacchetto è installato
152
+ * @param packageName
153
+ */
154
+ static async packagePacmanAvailable(packageName) {
155
+ let available = false;
156
+ const cmd = `/sbin/apk search ${packageName} | awk '{ print $1 }'`;
157
+ const stdout = shx.exec(cmd, { silent: true }).stdout.trim();
158
+ if (stdout == packageName) {
159
+ available = true;
160
+ }
161
+ return available;
162
+ }
163
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * ./src/classes/families/archlinux.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
+ * Archlinux
10
+ * @remarks all the utilities
11
+ */
12
+ export default class Archlinux {
13
+ static packs4calamares: string[];
14
+ /**
15
+ * Archlinux: calamaresInstall
16
+ */
17
+ static calamaresInstall(verbose?: boolean): Promise<void>;
18
+ /**
19
+ * Archlinux: calamaresPolicies
20
+ */
21
+ static calamaresPolicies(): Promise<void>;
22
+ /**
23
+ * Archlinux: calamaresRemove
24
+ */
25
+ static calamaresRemove(verbose?: boolean): Promise<boolean>;
26
+ /**
27
+ * Archlinux: isInstalledWayland
28
+ * @returns true if wayland is installed
29
+ */
30
+ static isInstalledWayland(): boolean;
31
+ /**
32
+ * Archlinux: isInstalledXorg
33
+ * @returns true if xorg is installed
34
+ */
35
+ static isInstalledXorg(): boolean;
36
+ /**
37
+ * Archlinux: packageInstall
38
+ * Install the package packageName
39
+ * @param packageName {string} Pacchetto Debian da installare
40
+ * @returns {boolean} True if success
41
+ */
42
+ static packageInstall(packageName: string): Promise<boolean>;
43
+ /**
44
+ * Archlinux: packageIsInstalled
45
+ * restuisce VERO se il pacchetto è installato
46
+ * @param packageName
47
+ */
48
+ static packageIsInstalled(packageName: string): boolean;
49
+ /**
50
+ * Archlinux: packagePacmanAvailable
51
+ * restuisce VERO se il pacchetto è installato
52
+ * @param packageName
53
+ */
54
+ static packagePacmanAvailable(packageName: string): Promise<boolean>;
55
+ /**
56
+ * Archlinux: packagePacmanLast
57
+ * @param packageName
58
+ * @returns
59
+ */
60
+ static packagePacmanLast(packageName: string): Promise<string>;
61
+ }