penguins-eggs 25.10.6 → 25.10.23

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 (474) hide show
  1. package/.oclif.manifest.json +51 -145
  2. package/README.md +59 -120
  3. package/README.pdf +1723 -1731
  4. package/addons/eggs/theme/livecd/isolinux.main.simple.cfg +2 -3
  5. package/conf/distros/trixie/calamares/modules/shellprocess@boot_deploy.yml +3 -4
  6. package/conf/love.yaml +1 -1
  7. package/dracut/create-symlink +71 -0
  8. package/dracut/dracut-log.txt +3 -0
  9. package/dracut/dracut.conf.d/50-live.conf +24 -6
  10. package/dracut/dracut.conf.d/README.md +10 -0
  11. package/dracut/export +4 -0
  12. package/dracut/export-dracut-analysis +51 -0
  13. package/dracut/export-dracut-log +2 -0
  14. package/dracut/mkisofs +10 -0
  15. package/dracut/modules.d/00debug-shell/debug-hook.sh +13 -0
  16. package/dracut/modules.d/00debug-shell/module-setup.sh +20 -0
  17. package/dracut/modules.d/90block/README.md +7 -0
  18. package/dracut/modules.d/90block/block-cmdline.sh +3 -0
  19. package/dracut/modules.d/90block/module-setup.sh +15 -0
  20. package/dracut/modules.d/95iso-scan/README.md +3 -0
  21. package/dracut/modules.d/95iso-scan/iso-scan-fallback.sh +12 -0
  22. package/dracut/modules.d/95iso-scan/iso-scan.sh +92 -0
  23. package/dracut/modules.d/95iso-scan/module-setup.sh +18 -0
  24. package/dracut/modules.d/95luks-loop/README.md +9 -0
  25. package/dracut/modules.d/95luks-loop/luks-loop.sh +90 -0
  26. package/dracut/modules.d/95luks-loop/module-setup.sh +17 -0
  27. package/dracut/renew-initramfs +17 -0
  28. package/dracut/sbin2bin +10 -0
  29. package/dracut/update-dracut-conf-d +2 -0
  30. package/dracut/update-dracut-modules +62 -0
  31. package/manpages/doc/man/eggs.1.gz +0 -0
  32. package/manpages/doc/man/eggs.html +7 -661
  33. package/package.json +10 -9
  34. package/perrisbrewery/template/dependencies.yaml +6 -5
  35. package/scripts/_eggs +16 -31
  36. package/scripts/boot-encrypted-root.sh +177 -0
  37. package/scripts/eggs.bash +4 -6
  38. package/scripts/mount-encrypted-home.sh +259 -0
  39. package/dist/classes/bleach.d.ts +0 -37
  40. package/dist/classes/bleach.js +0 -148
  41. package/dist/classes/cli-autologin.d.ts +0 -52
  42. package/dist/classes/cli-autologin.js +0 -252
  43. package/dist/classes/compressors.d.ts +0 -54
  44. package/dist/classes/compressors.js +0 -109
  45. package/dist/classes/daddy.d.ts +0 -26
  46. package/dist/classes/daddy.js +0 -175
  47. package/dist/classes/distro.d.ts +0 -32
  48. package/dist/classes/distro.js +0 -356
  49. package/dist/classes/diversions.d.ts +0 -53
  50. package/dist/classes/diversions.js +0 -133
  51. package/dist/classes/incubation/branding.d.ts +0 -17
  52. package/dist/classes/incubation/branding.js +0 -85
  53. package/dist/classes/incubation/customize/customize-partitions.d.ts +0 -4
  54. package/dist/classes/incubation/customize/customize-partitions.js +0 -29
  55. package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +0 -1
  56. package/dist/classes/incubation/fisherman-helper/initcpio.js +0 -69
  57. package/dist/classes/incubation/fisherman-helper/packages.d.ts +0 -20
  58. package/dist/classes/incubation/fisherman-helper/packages.js +0 -72
  59. package/dist/classes/incubation/fisherman-helper/settings.d.ts +0 -15
  60. package/dist/classes/incubation/fisherman-helper/settings.js +0 -116
  61. package/dist/classes/incubation/fisherman.d.ts +0 -71
  62. package/dist/classes/incubation/fisherman.js +0 -281
  63. package/dist/classes/incubation/incubator.d/alpine.d.ts +0 -32
  64. package/dist/classes/incubation/incubator.d/alpine.js +0 -78
  65. package/dist/classes/incubation/incubator.d/archlinux.d.ts +0 -32
  66. package/dist/classes/incubation/incubator.d/archlinux.js +0 -81
  67. package/dist/classes/incubation/incubator.d/bionic.d.ts +0 -32
  68. package/dist/classes/incubation/incubator.d/bionic.js +0 -83
  69. package/dist/classes/incubation/incubator.d/buster.d.ts +0 -32
  70. package/dist/classes/incubation/incubator.d/buster.js +0 -101
  71. package/dist/classes/incubation/incubator.d/fedora.d.ts +0 -32
  72. package/dist/classes/incubation/incubator.d/fedora.js +0 -81
  73. package/dist/classes/incubation/incubator.d/focal.d.ts +0 -32
  74. package/dist/classes/incubation/incubator.d/focal.js +0 -85
  75. package/dist/classes/incubation/incubator.d/manjaro.d.ts +0 -32
  76. package/dist/classes/incubation/incubator.d/manjaro.js +0 -82
  77. package/dist/classes/incubation/incubator.d/noble.d.ts +0 -32
  78. package/dist/classes/incubation/incubator.d/noble.js +0 -102
  79. package/dist/classes/incubation/incubator.d/openmamba.d.ts +0 -32
  80. package/dist/classes/incubation/incubator.d/openmamba.js +0 -81
  81. package/dist/classes/incubation/incubator.d/opensuse.d.ts +0 -32
  82. package/dist/classes/incubation/incubator.d/opensuse.js +0 -81
  83. package/dist/classes/incubation/incubator.d/trixie.d.ts +0 -32
  84. package/dist/classes/incubation/incubator.d/trixie.js +0 -101
  85. package/dist/classes/incubation/incubator.d.ts +0 -48
  86. package/dist/classes/incubation/incubator.js +0 -378
  87. package/dist/classes/incubation/installer.d.ts +0 -13
  88. package/dist/classes/incubation/installer.js +0 -52
  89. package/dist/classes/keyboards.d.ts +0 -50
  90. package/dist/classes/keyboards.js +0 -287
  91. package/dist/classes/locales.d.ts +0 -21
  92. package/dist/classes/locales.js +0 -77
  93. package/dist/classes/network.d.ts +0 -37
  94. package/dist/classes/network.js +0 -98
  95. package/dist/classes/ovary.d/bind-live-fs.d.ts +0 -18
  96. package/dist/classes/ovary.d/bind-live-fs.js +0 -185
  97. package/dist/classes/ovary.d/bind-vfs.d.ts +0 -17
  98. package/dist/classes/ovary.d/bind-vfs.js +0 -37
  99. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +0 -13
  100. package/dist/classes/ovary.d/create-xdg-autostart.js +0 -194
  101. package/dist/classes/ovary.d/edit-live-fs.d.ts +0 -20
  102. package/dist/classes/ovary.d/edit-live-fs.js +0 -245
  103. package/dist/classes/ovary.d/fertilization.d.ts +0 -12
  104. package/dist/classes/ovary.d/fertilization.js +0 -52
  105. package/dist/classes/ovary.d/finished.d.ts +0 -13
  106. package/dist/classes/ovary.d/finished.js +0 -44
  107. package/dist/classes/ovary.d/initrd.d.ts +0 -21
  108. package/dist/classes/ovary.d/initrd.js +0 -97
  109. package/dist/classes/ovary.d/kernel-copy.d.ts +0 -12
  110. package/dist/classes/ovary.d/kernel-copy.js +0 -22
  111. package/dist/classes/ovary.d/live-create-structure.d.ts +0 -12
  112. package/dist/classes/ovary.d/live-create-structure.js +0 -73
  113. package/dist/classes/ovary.d/make-dot-disk.d.ts +0 -12
  114. package/dist/classes/ovary.d/make-dot-disk.js +0 -62
  115. package/dist/classes/ovary.d/make-efi.d.ts +0 -14
  116. package/dist/classes/ovary.d/make-efi.js +0 -274
  117. package/dist/classes/ovary.d/make-iso.d.ts +0 -13
  118. package/dist/classes/ovary.d/make-iso.js +0 -45
  119. package/dist/classes/ovary.d/make-squashfs.d.ts +0 -18
  120. package/dist/classes/ovary.d/make-squashfs.js +0 -110
  121. package/dist/classes/ovary.d/merged.d.ts +0 -27
  122. package/dist/classes/ovary.d/merged.js +0 -78
  123. package/dist/classes/ovary.d/produce.d.ts +0 -23
  124. package/dist/classes/ovary.d/produce.js +0 -319
  125. package/dist/classes/ovary.d/rexec.d.ts +0 -13
  126. package/dist/classes/ovary.d/rexec.js +0 -34
  127. package/dist/classes/ovary.d/syslinux.d.ts +0 -12
  128. package/dist/classes/ovary.d/syslinux.js +0 -82
  129. package/dist/classes/ovary.d/user-create-live.d.ts +0 -14
  130. package/dist/classes/ovary.d/user-create-live.js +0 -97
  131. package/dist/classes/ovary.d/users-remove.d.ts +0 -9
  132. package/dist/classes/ovary.d/users-remove.js +0 -38
  133. package/dist/classes/ovary.d/xorriso-command.d.ts +0 -14
  134. package/dist/classes/ovary.d/xorriso-command.js +0 -123
  135. package/dist/classes/ovary.d.ts +0 -87
  136. package/dist/classes/ovary.js +0 -90
  137. package/dist/classes/pacman.d/alpine.d.ts +0 -56
  138. package/dist/classes/pacman.d/alpine.js +0 -167
  139. package/dist/classes/pacman.d/archlinux.d.ts +0 -62
  140. package/dist/classes/pacman.d/archlinux.js +0 -128
  141. package/dist/classes/pacman.d/debian.d.ts +0 -65
  142. package/dist/classes/pacman.d/debian.js +0 -143
  143. package/dist/classes/pacman.d/fedora.d.ts +0 -53
  144. package/dist/classes/pacman.d/fedora.js +0 -107
  145. package/dist/classes/pacman.d/openmamba.d.ts +0 -52
  146. package/dist/classes/pacman.d/openmamba.js +0 -106
  147. package/dist/classes/pacman.d/opensuse.d.ts +0 -53
  148. package/dist/classes/pacman.d/opensuse.js +0 -109
  149. package/dist/classes/pacman.d.ts +0 -139
  150. package/dist/classes/pacman.js +0 -683
  151. package/dist/classes/pve-live.d.ts +0 -17
  152. package/dist/classes/pve-live.js +0 -52
  153. package/dist/classes/pxe.d.ts +0 -76
  154. package/dist/classes/pxe.js +0 -353
  155. package/dist/classes/settings.d.ts +0 -52
  156. package/dist/classes/settings.js +0 -185
  157. package/dist/classes/sources_list.d.ts +0 -28
  158. package/dist/classes/sources_list.js +0 -89
  159. package/dist/classes/systemctl.d.ts +0 -47
  160. package/dist/classes/systemctl.js +0 -86
  161. package/dist/classes/tailor.d.ts +0 -50
  162. package/dist/classes/tailor.js +0 -563
  163. package/dist/classes/tools.d.ts +0 -26
  164. package/dist/classes/tools.js +0 -50
  165. package/dist/classes/users.d.ts +0 -28
  166. package/dist/classes/users.js +0 -143
  167. package/dist/classes/utils.d/kernel.d.ts +0 -39
  168. package/dist/classes/utils.d/kernel.js +0 -206
  169. package/dist/classes/utils.d.ts +0 -327
  170. package/dist/classes/utils.js +0 -955
  171. package/dist/classes/xdg.d.ts +0 -45
  172. package/dist/classes/xdg.js +0 -337
  173. package/dist/classes/yolk.d.ts +0 -33
  174. package/dist/classes/yolk.js +0 -114
  175. package/dist/commands/adapt.d.ts +0 -17
  176. package/dist/commands/adapt.js +0 -33
  177. package/dist/commands/analyze.d.ts +0 -26
  178. package/dist/commands/analyze.js +0 -95
  179. package/dist/commands/calamares.d.ts +0 -29
  180. package/dist/commands/calamares.js +0 -112
  181. package/dist/commands/config.d.ts +0 -35
  182. package/dist/commands/config.js +0 -120
  183. package/dist/commands/cuckoo.d.ts +0 -17
  184. package/dist/commands/cuckoo.js +0 -61
  185. package/dist/commands/dad.d.ts +0 -21
  186. package/dist/commands/dad.js +0 -47
  187. package/dist/commands/export/iso.d.ts +0 -19
  188. package/dist/commands/export/iso.js +0 -55
  189. package/dist/commands/export/pkg.d.ts +0 -29
  190. package/dist/commands/export/pkg.js +0 -173
  191. package/dist/commands/export/tarballs.d.ts +0 -27
  192. package/dist/commands/export/tarballs.js +0 -79
  193. package/dist/commands/install.d.ts +0 -39
  194. package/dist/commands/install.js +0 -113
  195. package/dist/commands/kill.d.ts +0 -24
  196. package/dist/commands/kill.js +0 -50
  197. package/dist/commands/love.d.ts +0 -21
  198. package/dist/commands/love.js +0 -73
  199. package/dist/commands/mom.d.ts +0 -16
  200. package/dist/commands/mom.js +0 -30
  201. package/dist/commands/pods.d.ts +0 -22
  202. package/dist/commands/pods.js +0 -92
  203. package/dist/commands/produce.d.ts +0 -35
  204. package/dist/commands/produce.js +0 -221
  205. package/dist/commands/status.d.ts +0 -23
  206. package/dist/commands/status.js +0 -31
  207. package/dist/commands/syncfrom.d.ts +0 -45
  208. package/dist/commands/syncfrom.js +0 -152
  209. package/dist/commands/syncto.d.ts +0 -40
  210. package/dist/commands/syncto.js +0 -175
  211. package/dist/commands/tools/clean.d.ts +0 -18
  212. package/dist/commands/tools/clean.js +0 -37
  213. package/dist/commands/tools/ppa.d.ts +0 -31
  214. package/dist/commands/tools/ppa.js +0 -244
  215. package/dist/commands/tools/skel.d.ts +0 -18
  216. package/dist/commands/tools/skel.js +0 -44
  217. package/dist/commands/tools/stat.d.ts +0 -31
  218. package/dist/commands/tools/stat.js +0 -70
  219. package/dist/commands/tools/yolk.d.ts +0 -24
  220. package/dist/commands/tools/yolk.js +0 -45
  221. package/dist/commands/update.d.ts +0 -46
  222. package/dist/commands/update.js +0 -238
  223. package/dist/commands/wardrobe/get.d.ts +0 -23
  224. package/dist/commands/wardrobe/get.js +0 -52
  225. package/dist/commands/wardrobe/list.d.ts +0 -24
  226. package/dist/commands/wardrobe/list.js +0 -125
  227. package/dist/commands/wardrobe/show.d.ts +0 -25
  228. package/dist/commands/wardrobe/show.js +0 -97
  229. package/dist/commands/wardrobe/wear.d.ts +0 -26
  230. package/dist/commands/wardrobe/wear.js +0 -84
  231. package/dist/dhcpd-proxy/classes/packet.d.ts +0 -36
  232. package/dist/dhcpd-proxy/classes/packet.js +0 -124
  233. package/dist/dhcpd-proxy/index.d.ts +0 -4
  234. package/dist/dhcpd-proxy/index.js +0 -4
  235. package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +0 -45
  236. package/dist/dhcpd-proxy/interfaces/i-pxe.js +0 -1
  237. package/dist/dhcpd-proxy/lib/packet/converters.d.ts +0 -11
  238. package/dist/dhcpd-proxy/lib/packet/converters.js +0 -395
  239. package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +0 -10
  240. package/dist/dhcpd-proxy/lib/packet/message-types.js +0 -12
  241. package/dist/dhcpd-proxy/lib/packet/options.d.ts +0 -8
  242. package/dist/dhcpd-proxy/lib/packet/options.js +0 -264
  243. package/dist/dhcpd-proxy/lib/sprintf.d.ts +0 -6
  244. package/dist/dhcpd-proxy/lib/sprintf.js +0 -130
  245. package/dist/dhcpd-proxy/lib/utils.d.ts +0 -126
  246. package/dist/dhcpd-proxy/lib/utils.js +0 -255
  247. package/dist/dhcpd-proxy/simple-proxy.d.ts +0 -11
  248. package/dist/dhcpd-proxy/simple-proxy.js +0 -118
  249. package/dist/index.d.ts +0 -8
  250. package/dist/index.js +0 -8
  251. package/dist/interfaces/calamares/i-calamares-bootloader.d.ts +0 -23
  252. package/dist/interfaces/calamares/i-calamares-bootloader.js +0 -7
  253. package/dist/interfaces/calamares/i-calamares-branding.d.ts +0 -46
  254. package/dist/interfaces/calamares/i-calamares-branding.js +0 -1
  255. package/dist/interfaces/calamares/i-calamares-displaymanager.d.ts +0 -34
  256. package/dist/interfaces/calamares/i-calamares-displaymanager.js +0 -1
  257. package/dist/interfaces/calamares/i-calamares-finished.d.ts +0 -14
  258. package/dist/interfaces/calamares/i-calamares-finished.js +0 -1
  259. package/dist/interfaces/calamares/i-calamares-packages.d.ts +0 -26
  260. package/dist/interfaces/calamares/i-calamares-packages.js +0 -1
  261. package/dist/interfaces/calamares/i-calamares-partitions.d.ts +0 -39
  262. package/dist/interfaces/calamares/i-calamares-partitions.js +0 -1
  263. package/dist/interfaces/calamares/i-calamares-settings.d.ts +0 -36
  264. package/dist/interfaces/calamares/i-calamares-settings.js +0 -1
  265. package/dist/interfaces/i-addons.d.ts +0 -12
  266. package/dist/interfaces/i-addons.js +0 -8
  267. package/dist/interfaces/i-analyze.d.ts +0 -17
  268. package/dist/interfaces/i-analyze.js +0 -17
  269. package/dist/interfaces/i-app.d.ts +0 -14
  270. package/dist/interfaces/i-app.js +0 -8
  271. package/dist/interfaces/i-config-tools.d.ts +0 -15
  272. package/dist/interfaces/i-config-tools.js +0 -8
  273. package/dist/interfaces/i-devices.d.ts +0 -20
  274. package/dist/interfaces/i-devices.js +0 -8
  275. package/dist/interfaces/i-distro.d.ts +0 -23
  276. package/dist/interfaces/i-distro.js +0 -8
  277. package/dist/interfaces/i-drive-list.d.ts +0 -33
  278. package/dist/interfaces/i-drive-list.js +0 -8
  279. package/dist/interfaces/i-eggs-config.d.ts +0 -32
  280. package/dist/interfaces/i-eggs-config.js +0 -8
  281. package/dist/interfaces/i-excludes.d.ts +0 -14
  282. package/dist/interfaces/i-excludes.js +0 -8
  283. package/dist/interfaces/i-exec.d.ts +0 -11
  284. package/dist/interfaces/i-exec.js +0 -8
  285. package/dist/interfaces/i-initrd.d.ts +0 -13
  286. package/dist/interfaces/i-initrd.js +0 -8
  287. package/dist/interfaces/i-install.d.ts +0 -16
  288. package/dist/interfaces/i-install.js +0 -8
  289. package/dist/interfaces/i-installer.d.ts +0 -17
  290. package/dist/interfaces/i-installer.js +0 -8
  291. package/dist/interfaces/i-luks-passphrase.d.ts +0 -11
  292. package/dist/interfaces/i-luks-passphrase.js +0 -8
  293. package/dist/interfaces/i-materia.d.ts +0 -36
  294. package/dist/interfaces/i-materia.js +0 -8
  295. package/dist/interfaces/i-net.d.ts +0 -16
  296. package/dist/interfaces/i-net.js +0 -8
  297. package/dist/interfaces/i-os-release.d.ts +0 -5
  298. package/dist/interfaces/i-os-release.js +0 -1
  299. package/dist/interfaces/i-packages.d.ts +0 -16
  300. package/dist/interfaces/i-packages.js +0 -8
  301. package/dist/interfaces/i-partitions.d.ts +0 -16
  302. package/dist/interfaces/i-partitions.js +0 -8
  303. package/dist/interfaces/i-pxe.d.ts +0 -45
  304. package/dist/interfaces/i-pxe.js +0 -1
  305. package/dist/interfaces/i-remix.d.ts +0 -21
  306. package/dist/interfaces/i-remix.js +0 -8
  307. package/dist/interfaces/i-settings.d.ts +0 -33
  308. package/dist/interfaces/i-settings.js +0 -8
  309. package/dist/interfaces/i-user.d.ts +0 -14
  310. package/dist/interfaces/i-user.js +0 -8
  311. package/dist/interfaces/i-workdir.d.ts +0 -14
  312. package/dist/interfaces/i-workdir.js +0 -8
  313. package/dist/interfaces/i-xkb-model.d.ts +0 -24
  314. package/dist/interfaces/i-xkb-model.js +0 -8
  315. package/dist/interfaces/index.d.ts +0 -26
  316. package/dist/interfaces/index.js +0 -8
  317. package/dist/krill/classes/cfs.d.ts +0 -17
  318. package/dist/krill/classes/cfs.js +0 -39
  319. package/dist/krill/classes/krill_enums.d.ts +0 -37
  320. package/dist/krill/classes/krill_enums.js +0 -41
  321. package/dist/krill/classes/prepare.d/confirm.d.ts +0 -5
  322. package/dist/krill/classes/prepare.d/confirm.js +0 -30
  323. package/dist/krill/classes/prepare.d/keyboard.d.ts +0 -14
  324. package/dist/krill/classes/prepare.d/keyboard.js +0 -62
  325. package/dist/krill/classes/prepare.d/location.d.ts +0 -17
  326. package/dist/krill/classes/prepare.d/location.js +0 -59
  327. package/dist/krill/classes/prepare.d/network.d.ts +0 -14
  328. package/dist/krill/classes/prepare.d/network.js +0 -68
  329. package/dist/krill/classes/prepare.d/partitions.d.ts +0 -14
  330. package/dist/krill/classes/prepare.d/partitions.js +0 -86
  331. package/dist/krill/classes/prepare.d/summary.d.ts +0 -15
  332. package/dist/krill/classes/prepare.d/summary.js +0 -72
  333. package/dist/krill/classes/prepare.d/users.d.ts +0 -6
  334. package/dist/krill/classes/prepare.d/users.js +0 -63
  335. package/dist/krill/classes/prepare.d/welcome.d.ts +0 -6
  336. package/dist/krill/classes/prepare.d/welcome.js +0 -30
  337. package/dist/krill/classes/prepare.d.ts +0 -89
  338. package/dist/krill/classes/prepare.js +0 -319
  339. package/dist/krill/classes/sequence.d/add_user.d.ts +0 -20
  340. package/dist/krill/classes/sequence.d/add_user.js +0 -77
  341. package/dist/krill/classes/sequence.d/bootloader.d.ts +0 -14
  342. package/dist/krill/classes/sequence.d/bootloader.js +0 -117
  343. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +0 -14
  344. package/dist/krill/classes/sequence.d/bootloader_config.js +0 -192
  345. package/dist/krill/classes/sequence.d/change_password.d.ts +0 -15
  346. package/dist/krill/classes/sequence.d/change_password.js +0 -18
  347. package/dist/krill/classes/sequence.d/del_live_user.d.ts +0 -14
  348. package/dist/krill/classes/sequence.d/del_live_user.js +0 -39
  349. package/dist/krill/classes/sequence.d/fstab.d.ts +0 -14
  350. package/dist/krill/classes/sequence.d/fstab.js +0 -177
  351. package/dist/krill/classes/sequence.d/grubcfg.d.ts +0 -17
  352. package/dist/krill/classes/sequence.d/grubcfg.js +0 -35
  353. package/dist/krill/classes/sequence.d/hostname.d.ts +0 -13
  354. package/dist/krill/classes/sequence.d/hostname.js +0 -50
  355. package/dist/krill/classes/sequence.d/initramfs.d.ts +0 -13
  356. package/dist/krill/classes/sequence.d/initramfs.js +0 -54
  357. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +0 -14
  358. package/dist/krill/classes/sequence.d/initramfs_cfg.js +0 -35
  359. package/dist/krill/classes/sequence.d/locale.d.ts +0 -13
  360. package/dist/krill/classes/sequence.d/locale.js +0 -91
  361. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +0 -10
  362. package/dist/krill/classes/sequence.d/locale_cfg.js +0 -58
  363. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +0 -14
  364. package/dist/krill/classes/sequence.d/m_keyboard.js +0 -58
  365. package/dist/krill/classes/sequence.d/machine_id.d.ts +0 -15
  366. package/dist/krill/classes/sequence.d/machine_id.js +0 -33
  367. package/dist/krill/classes/sequence.d/mkfs.d.ts +0 -15
  368. package/dist/krill/classes/sequence.d/mkfs.js +0 -88
  369. package/dist/krill/classes/sequence.d/mount_fs.d.ts +0 -17
  370. package/dist/krill/classes/sequence.d/mount_fs.js +0 -68
  371. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +0 -17
  372. package/dist/krill/classes/sequence.d/mount_vfs.js +0 -59
  373. package/dist/krill/classes/sequence.d/network_cfg.d.ts +0 -19
  374. package/dist/krill/classes/sequence.d/network_cfg.js +0 -73
  375. package/dist/krill/classes/sequence.d/packages.d.ts +0 -14
  376. package/dist/krill/classes/sequence.d/packages.js +0 -111
  377. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +0 -17
  378. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +0 -73
  379. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +0 -16
  380. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +0 -51
  381. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +0 -17
  382. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +0 -77
  383. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +0 -10
  384. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +0 -33
  385. package/dist/krill/classes/sequence.d/partition.d.ts +0 -14
  386. package/dist/krill/classes/sequence.d/partition.js +0 -84
  387. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +0 -13
  388. package/dist/krill/classes/sequence.d/remove_installer_link.js +0 -35
  389. package/dist/krill/classes/sequence.d/umount.d.ts +0 -14
  390. package/dist/krill/classes/sequence.d/umount.js +0 -28
  391. package/dist/krill/classes/sequence.d/unpackfs.d.ts +0 -13
  392. package/dist/krill/classes/sequence.d/unpackfs.js +0 -20
  393. package/dist/krill/classes/sequence.d.ts +0 -134
  394. package/dist/krill/classes/sequence.js +0 -400
  395. package/dist/krill/components/finished.d.ts +0 -16
  396. package/dist/krill/components/finished.js +0 -56
  397. package/dist/krill/components/information.d.ts +0 -8
  398. package/dist/krill/components/information.js +0 -162
  399. package/dist/krill/components/install.d.ts +0 -15
  400. package/dist/krill/components/install.js +0 -60
  401. package/dist/krill/components/keyboard.d.ts +0 -16
  402. package/dist/krill/components/keyboard.js +0 -54
  403. package/dist/krill/components/location.d.ts +0 -16
  404. package/dist/krill/components/location.js +0 -59
  405. package/dist/krill/components/network.d.ts +0 -19
  406. package/dist/krill/components/network.js +0 -65
  407. package/dist/krill/components/partitions.d.ts +0 -18
  408. package/dist/krill/components/partitions.js +0 -89
  409. package/dist/krill/components/steps.d.ts +0 -13
  410. package/dist/krill/components/steps.js +0 -148
  411. package/dist/krill/components/summary.d.ts +0 -25
  412. package/dist/krill/components/summary.js +0 -77
  413. package/dist/krill/components/title.d.ts +0 -11
  414. package/dist/krill/components/title.js +0 -35
  415. package/dist/krill/components/users.d.ts +0 -24
  416. package/dist/krill/components/users.js +0 -80
  417. package/dist/krill/components/welcome.d.ts +0 -13
  418. package/dist/krill/components/welcome.js +0 -63
  419. package/dist/krill/interfaces/i_krill.d.ts +0 -44
  420. package/dist/krill/interfaces/i_krill.js +0 -8
  421. package/dist/krill/interfaces/i_krill_config.d.ts +0 -35
  422. package/dist/krill/interfaces/i_krill_config.js +0 -8
  423. package/dist/krill/lib/get_address.d.ts +0 -8
  424. package/dist/krill/lib/get_address.js +0 -23
  425. package/dist/krill/lib/get_dns.d.ts +0 -8
  426. package/dist/krill/lib/get_dns.js +0 -23
  427. package/dist/krill/lib/get_domain.d.ts +0 -8
  428. package/dist/krill/lib/get_domain.js +0 -23
  429. package/dist/krill/lib/get_gateway.d.ts +0 -8
  430. package/dist/krill/lib/get_gateway.js +0 -23
  431. package/dist/krill/lib/get_hostname.d.ts +0 -8
  432. package/dist/krill/lib/get_hostname.js +0 -23
  433. package/dist/krill/lib/get_luks_passphrase.d.ts +0 -8
  434. package/dist/krill/lib/get_luks_passphrase.js +0 -32
  435. package/dist/krill/lib/get_netmask.d.ts +0 -8
  436. package/dist/krill/lib/get_netmask.js +0 -23
  437. package/dist/krill/lib/get_password.d.ts +0 -8
  438. package/dist/krill/lib/get_password.js +0 -36
  439. package/dist/krill/lib/get_userfullname.d.ts +0 -8
  440. package/dist/krill/lib/get_userfullname.js +0 -23
  441. package/dist/krill/lib/get_username.d.ts +0 -8
  442. package/dist/krill/lib/get_username.js +0 -23
  443. package/dist/krill/lib/select_address_type.d.ts +0 -8
  444. package/dist/krill/lib/select_address_type.js +0 -24
  445. package/dist/krill/lib/select_filesystem_type.d.ts +0 -8
  446. package/dist/krill/lib/select_filesystem_type.js +0 -40
  447. package/dist/krill/lib/select_installation_device.d.ts +0 -8
  448. package/dist/krill/lib/select_installation_device.js +0 -40
  449. package/dist/krill/lib/select_installation_mode.d.ts +0 -9
  450. package/dist/krill/lib/select_installation_mode.js +0 -25
  451. package/dist/krill/lib/select_interface.d.ts +0 -8
  452. package/dist/krill/lib/select_interface.js +0 -24
  453. package/dist/krill/lib/select_keyboard_layout.d.ts +0 -11
  454. package/dist/krill/lib/select_keyboard_layout.js +0 -36
  455. package/dist/krill/lib/select_keyboard_model.d.ts +0 -11
  456. package/dist/krill/lib/select_keyboard_model.js +0 -34
  457. package/dist/krill/lib/select_keyboard_option.d.ts +0 -11
  458. package/dist/krill/lib/select_keyboard_option.js +0 -34
  459. package/dist/krill/lib/select_keyboard_variant.d.ts +0 -11
  460. package/dist/krill/lib/select_keyboard_variant.js +0 -35
  461. package/dist/krill/lib/select_languages.d.ts +0 -8
  462. package/dist/krill/lib/select_languages.js +0 -28
  463. package/dist/krill/lib/select_regions.d.ts +0 -8
  464. package/dist/krill/lib/select_regions.js +0 -24
  465. package/dist/krill/lib/select_replaced_partition.d.ts +0 -8
  466. package/dist/krill/lib/select_replaced_partition.js +0 -31
  467. package/dist/krill/lib/select_user_swap_choice.d.ts +0 -9
  468. package/dist/krill/lib/select_user_swap_choice.js +0 -35
  469. package/dist/krill/lib/select_zones.d.ts +0 -8
  470. package/dist/krill/lib/select_zones.js +0 -518
  471. package/dist/lib/kill_me_softly.d.ts +0 -11
  472. package/dist/lib/kill_me_softly.js +0 -61
  473. package/dist/lib/utils.d.ts +0 -19
  474. package/dist/lib/utils.js +0 -65
@@ -1,955 +0,0 @@
1
- /**
2
- * ./src/classes/utils.ts
3
- * penguins-eggs v.25.7.x / ecmascript 2020
4
- * author: Piero Proietti
5
- * email: piero.proietti@gmail.com
6
- * license: MIT
7
- *
8
- * Refactored Utils class - imports from modular utilities
9
- */
10
- import shx from 'shelljs';
11
- import fs from 'fs';
12
- import dns from 'dns';
13
- import path from 'path';
14
- import os from 'os';
15
- import inquirer from 'inquirer';
16
- import { execSync, spawnSync } from 'child_process';
17
- import chalk from 'chalk';
18
- import { Netmask } from 'netmask';
19
- import Kernel from './utils.d/kernel.js';
20
- import Distro from './distro.js';
21
- // pjson
22
- import { createRequire } from 'module';
23
- const require = createRequire(import.meta.url);
24
- const pjson = require('../../package.json');
25
- // __dirname
26
- const __dirname = path.dirname(new URL(import.meta.url).pathname);
27
- /**
28
- * Utils: general porpourse utils
29
- * @remarks all the utilities
30
- */
31
- export default class Utils {
32
- static vmlinuz(kernel = '') {
33
- return Kernel.vmlinuz(kernel);
34
- }
35
- /**
36
- * @deprecated Use Kernel.initramfs() instead
37
- */
38
- static initrdImg(kernel = '') {
39
- return Kernel.initramfs(kernel);
40
- }
41
- /**
42
- * Custom function to sort object keys
43
- * @param obj
44
- * @returns
45
- */
46
- static sortObjectKeys(obj) {
47
- const sorted = {};
48
- Object.keys(obj)
49
- .sort()
50
- .forEach(key => {
51
- sorted[key] = obj[key];
52
- });
53
- return sorted;
54
- }
55
- /**
56
- *
57
- * @param file
58
- * @param search
59
- * @returns value
60
- */
61
- static searchOnFile(file = '', search = '') {
62
- const lines = fs.readFileSync(file, 'utf8').split("\n");
63
- let value = '';
64
- lines.forEach(line => {
65
- line = line.replace(/\s+/g, ' '); // Remove multiple spaces with single space
66
- if (line.includes(search)) {
67
- value = line.substring(line.indexOf('=') + 1);
68
- }
69
- });
70
- value = value.replaceAll('"', ''); // Remove "
71
- return value.trim();
72
- }
73
- /**
74
- * Restituisce il prefisso della iso
75
- * @param distroId
76
- * @param codenameId
77
- */
78
- static snapshotPrefix(distroId, codenameId) {
79
- let result = `egg-of_${distroId.toLowerCase()}-`;
80
- if (codenameId === 'rolling' || codenameId === '') {
81
- const releaseId = Utils.getOsRelease().VERSION_ID.trim();
82
- if (releaseId !== '') {
83
- result += releaseId;
84
- }
85
- }
86
- else {
87
- result += `${codenameId.toLowerCase()}`;
88
- }
89
- if (!result.endsWith('-')) {
90
- result += '-';
91
- }
92
- return result;
93
- }
94
- /**
95
- * Detect if running inside a container (Docker or LXC)
96
- */
97
- static isContainer() {
98
- // Check for Docker's specific file
99
- if (fs.existsSync('/.dockerenv')) {
100
- return true;
101
- }
102
- // Check the cgroup file, which works for Docker, Podman, LXC, etc.
103
- try {
104
- const cgroupContent = fs.readFileSync('/proc/1/cgroup', 'utf8');
105
- return cgroupContent.includes('/docker/') || cgroupContent.includes('/kubepods/');
106
- }
107
- catch (e) {
108
- return false;
109
- }
110
- }
111
- /**
112
- * Check if the system uses Systemd
113
- */
114
- static isSystemd() {
115
- let isSystemd = false;
116
- if (!this.isContainer()) {
117
- isSystemd = fs.readFileSync("/proc/1/comm").includes('systemd');
118
- }
119
- else {
120
- isSystemd = true;
121
- let distro = new Distro();
122
- if (distro.distroId === "Devuan") {
123
- isSystemd = false;
124
- }
125
- }
126
- return isSystemd;
127
- }
128
- /**
129
- * Check if the system uses SysVinit
130
- */
131
- static isSysvinit() {
132
- let isSysvinit = false;
133
- if (!this.isContainer()) {
134
- isSysvinit = fs.readFileSync("/proc/1/comm").includes('init');
135
- }
136
- else {
137
- let distro = new Distro();
138
- if (distro.distroId === "Devuan") {
139
- isSysvinit = true;
140
- }
141
- }
142
- return isSysvinit;
143
- }
144
- /**
145
- * Check if the system uses OpenRC
146
- */
147
- static isOpenRc() {
148
- let isOpenRc = false;
149
- if (!this.isContainer()) {
150
- try {
151
- execSync('command -v openrc');
152
- isOpenRc = true;
153
- }
154
- catch (error) {
155
- isOpenRc = false;
156
- }
157
- }
158
- return isOpenRc;
159
- }
160
- /**
161
- * Occore vedere un modo per creare machine-id dove non esiste
162
- */
163
- static machineId() {
164
- let result = '';
165
- if (fs.existsSync('/etc/machine-id')) {
166
- result = fs.readFileSync('/etc/machine-id', 'utf-8').trim();
167
- }
168
- else if (fs.existsSync('/var/lib/dbus/machine-id')) {
169
- result = fs.readFileSync('/var/lib/dbus/machine-id', 'utf-8').trim();
170
- }
171
- return result;
172
- }
173
- /**
174
- *
175
- * @param msg
176
- */
177
- static warning(msg = '') {
178
- console.log(pjson.shortName + ' >>> ' + chalk.cyanBright(msg) + '.');
179
- }
180
- static error(msg = '') {
181
- console.error(pjson.shortName + ' >>> ' + chalk.bgMagentaBright(chalk.whiteBright(msg)) + '.');
182
- }
183
- /**
184
- * Return the primary user's name
185
- */
186
- static async getPrimaryUser() {
187
- const { execSync } = require('child_process');
188
- let primaryUser = '';
189
- try {
190
- // Attempt to get the user from logname
191
- primaryUser = execSync('/usr/bin/logname 2>/dev/null', { encoding: 'utf-8' }).trim();
192
- }
193
- catch (error) {
194
- // console.log("logname failed, so we continue with other methods")
195
- }
196
- if (primaryUser === 'root') {
197
- primaryUser = '';
198
- }
199
- if (primaryUser === '') {
200
- try {
201
- // Check if doas is installed and get the DOAS_USER
202
- execSync('command -v doas', { stdio: 'ignore' });
203
- primaryUser = execSync('echo $DOAS_USER', { encoding: 'utf-8' }).trim();
204
- }
205
- catch (error) {
206
- // console.log("doas is not installed or DOAS_USER is not set, continue with the next method")
207
- }
208
- }
209
- if (primaryUser === '') {
210
- try {
211
- // Check for the SUDO_USER
212
- primaryUser = execSync('echo $SUDO_USER', { encoding: 'utf-8' }).trim();
213
- }
214
- catch (error) {
215
- // console.log("SUDO_USER is not set, continue with the next method")
216
- }
217
- }
218
- if (primaryUser === '') {
219
- // console.log("Fallback to the USER environment variable")
220
- primaryUser = process.env.USER || '';
221
- }
222
- if (primaryUser === '') {
223
- primaryUser = 'dummy';
224
- // console.error('Cannot determine the primary user.');
225
- // process.exit(1);
226
- }
227
- return primaryUser;
228
- }
229
- /**
230
- * restituisce uuid
231
- * @param device
232
- */
233
- static uuid(device) {
234
- const uuid = shx.exec(`blkid -s UUID -o value ${device}`).stdout.trim();
235
- return uuid;
236
- }
237
- /**
238
- *
239
- * @param device
240
- * @returns
241
- */
242
- static uuidGen() {
243
- const uuid = shx.exec(`uuidgen`, { silent: true }).stdout.trim();
244
- return uuid;
245
- }
246
- /**
247
- *
248
- * @param date
249
- */
250
- static formatDate(date) {
251
- const d = new Date(date);
252
- let month = String(d.getMonth() + 1);
253
- let day = String(d.getDate());
254
- const year = d.getFullYear();
255
- let hh = String(d.getHours());
256
- let mm = String(d.getMinutes());
257
- if (month.length < 2) {
258
- month = '0' + month;
259
- }
260
- if (day.length < 2) {
261
- day = '0' + day;
262
- }
263
- if (hh.length < 2) {
264
- hh = '0' + hh;
265
- }
266
- if (mm.length < 2) {
267
- mm = '0' + mm;
268
- }
269
- return [year, month, day].join('-') + '_' + hh + mm;
270
- }
271
- /**
272
- * return the name of the package: penguins-eggs
273
- * @returns penguins-eggs
274
- */
275
- static getPackageName() {
276
- return pjson.shortName;
277
- }
278
- /**
279
- * Count the eggs present in the nest
280
- * @returns {number} Numero degli snapshot presenti
281
- */
282
- static getSnapshotCount(snapshot_dir = '/') {
283
- if (fs.existsSync(snapshot_dir)) {
284
- const files = fs.readdirSync(snapshot_dir);
285
- let nIsos = 0;
286
- for (const f of files) {
287
- if (f.endsWith('.iso')) {
288
- nIsos++;
289
- }
290
- }
291
- return nIsos;
292
- }
293
- return 0;
294
- }
295
- /**
296
- * Get the syze of the snapshot
297
- * @returns {string} grandezza dello snapshot in Byte
298
- */
299
- static getSnapshotSize(snapshot_dir = '/') {
300
- let fileSizeInBytes = 0;
301
- const size = shx.exec(`/usr/bin/find ${snapshot_dir} -maxdepth 1 -type f -name '*.iso' -exec du -sc {} + | tail -1 | awk '{print $1}'`, { silent: true }).stdout.trim();
302
- if (size === '') {
303
- fileSizeInBytes = 0;
304
- }
305
- else {
306
- fileSizeInBytes = Number(size);
307
- }
308
- return fileSizeInBytes;
309
- }
310
- /**
311
- * uefiArch
312
- * @returns arch
313
- */
314
- static uefiArch() {
315
- let arch = '';
316
- if (process.arch === 'ia32') {
317
- arch = 'i386';
318
- //
319
- if (shx.exec('uname -m', { silent: true }).stdout.trim() === 'x86_64') {
320
- arch = 'amd64';
321
- }
322
- }
323
- else if (process.arch === 'x64') {
324
- arch = 'amd64';
325
- }
326
- else if (process.arch === 'arm64') {
327
- arch = 'arm64';
328
- }
329
- return arch;
330
- }
331
- /**
332
- * i386-pc,
333
- * i386-efi,
334
- * x86_64-efi,
335
- * arm64-efi,
336
- *
337
- * ATTEMZIONE: install efibootmgr
338
- *
339
- * Fedora/RHEL have i386-pc
340
- */
341
- static uefiFormat() {
342
- let format = '';
343
- if (process.arch === 'ia32') {
344
- format = 'i386-efi';
345
- if (shx.exec('uname -m', { silent: true }).stdout.trim() === 'x86_64') {
346
- format = 'x86_64-efi';
347
- }
348
- }
349
- else if (process.arch === 'x64') {
350
- format = 'x86_64-efi';
351
- }
352
- else if (process.arch === 'arm64') {
353
- format = 'arm64-efi';
354
- }
355
- return format;
356
- }
357
- /**
358
- *
359
- * @returns
360
- */
361
- static usrLibPath() {
362
- let path = '';
363
- if (process.arch === 'x64') {
364
- path = 'x86_64-linux-gnu';
365
- }
366
- else if (process.arch === 'arm64') {
367
- path = 'aarch64-linux-gnu';
368
- }
369
- return path;
370
- }
371
- /**
372
- *
373
- * @param prefix
374
- * @param backup
375
- * @returns
376
- */
377
- static getPrefix(prefix, backup = false) {
378
- if (backup) {
379
- if (prefix.substring(0, 7) === 'egg-of_') {
380
- prefix = 'egg-bk_' + prefix.substring(7);
381
- }
382
- else {
383
- prefix = 'egg-bk_' + prefix;
384
- }
385
- }
386
- return prefix;
387
- }
388
- /**
389
- *
390
- * @param volid
391
- */
392
- static getVolid(volid = 'unknown') {
393
- // // 28 + 4 .iso = 32 lunghezza max di volid
394
- if (volid.length >= 32) {
395
- volid = volid.substring(0, 32);
396
- }
397
- return volid;
398
- }
399
- /**
400
- * Return postfix
401
- * @param basename
402
- * @returns eggName
403
- */
404
- static getPostfix() {
405
- let postfix = '_' + Utils.formatDate(new Date()) + '.iso';
406
- return postfix;
407
- }
408
- /**
409
- * Calculate the space used on the disk
410
- * @return {void}
411
- */
412
- static getUsedSpace() {
413
- let fileSizeInBytes = 0;
414
- if (this.isLive()) {
415
- fileSizeInBytes = 0; // this.getLiveRootSpace()
416
- }
417
- else {
418
- fileSizeInBytes = Number(shx.exec(`df /home | /usr/bin/awk 'NR==2 {print $3}'`, {
419
- silent: true
420
- }).stdout);
421
- }
422
- return fileSizeInBytes;
423
- }
424
- /**
425
- * Extimate the linuxfs dimension
426
- * probably is better to rename it as
427
- * getLiveSpaceRootNeed
428
- * @returns {number} Byte
429
- */
430
- static getLiveRootSpace(type = 'debian-live') {
431
- let squashFs = '/run/live/medium/live/filesystem.squashfs';
432
- if (type === 'mx') {
433
- squashFs = '/live/boot-dev/antiX/linuxfs';
434
- }
435
- // Ottengo la dimensione del file compresso
436
- const compressedFs = fs.statSync(squashFs).size;
437
- // get compression factor by reading the linuxfs squasfs file, if available
438
- const compressedFs_compression_type = shx.exec(`dd if=${compressedFs} bs=1 skip=20 count=2 status=none 2>/dev/null| /usr/bin/od -An -tdI`);
439
- let compression_factor = 0;
440
- if (compressedFs_compression_type === '1') {
441
- compression_factor = 37; // gzip
442
- }
443
- else if (compressedFs_compression_type === '2') {
444
- compression_factor = 52; // lzo, not used by antiX
445
- }
446
- else if (compressedFs_compression_type === '3') {
447
- compression_factor = 52; // lzma, not used by antiX
448
- }
449
- else if (compressedFs_compression_type === '4') {
450
- compression_factor = 31; // xz
451
- }
452
- else if (compressedFs_compression_type === '5') {
453
- compression_factor = 52; // lz4
454
- }
455
- else {
456
- compression_factor = 30; // anything else or linuxfs not reachable (toram), should be pretty conservative
457
- }
458
- let rootfs_file_size = 0;
459
- const linuxfs_file_size = (Number(shx.exec('df /live/linux --output=used --total | /usr/bin/tail -n1').stdout.trim()) * 1024 * 100) / compression_factor;
460
- if (fs.existsSync('/live/persist-root')) {
461
- rootfs_file_size = Number(shx.exec('df /live/persist-root --output=used --total | /usr/bin/tail -n1').stdout.trim()) * 1024;
462
- }
463
- let rootSpaceNeeded;
464
- if (type === 'mx') {
465
- /**
466
- * add rootfs file size to the calculated linuxfs file size. Probaby conservative, as rootfs will likely have some overlap with linuxfs
467
- */
468
- rootSpaceNeeded = linuxfs_file_size + rootfs_file_size;
469
- }
470
- else {
471
- rootSpaceNeeded = linuxfs_file_size;
472
- }
473
- return rootSpaceNeeded / 1073741824.0; // Converte in GB
474
- }
475
- /**
476
- * Return true if i686 architecture
477
- * @remarks to move in Utils
478
- * @returns {boolean} true se l'architettura è i686
479
- */
480
- static isi686() {
481
- return process.arch === 'ia32';
482
- }
483
- /**
484
- * Controlla se è un pacchetto deb
485
- * /usr/lib/penguins-eggs/bin/node
486
- */
487
- static isPackage() {
488
- let ret = false;
489
- //if (process.execPath !== '/usr/bin/node') {
490
- if (process.execPath === '/usr/lib/penguins-eggs/bin/node') {
491
- ret = true;
492
- }
493
- return ret;
494
- }
495
- /**
496
- * Controlla se è un pacchetto sorgente
497
- */
498
- static isSources() {
499
- let ret = false;
500
- if (__dirname.substring(0, 6) === '/home/') {
501
- ret = true;
502
- }
503
- return ret;
504
- }
505
- /**
506
- * Controlla se è un pacchetto npm
507
- */
508
- static isNpmPackage() {
509
- return !(this.isPackage() || this.isSources());
510
- }
511
- /**
512
- *
513
- */
514
- static rootPenguin() {
515
- return path.resolve(__dirname, '../../');
516
- }
517
- /**
518
- * return the short name of the package: eggs
519
- * @returns eggs
520
- */
521
- static getFriendName() {
522
- return pjson.shortName;
523
- }
524
- /**
525
- * return the version of the package
526
- * @returns version example 8.0.0
527
- */
528
- static getPackageVersion() {
529
- return pjson.version;
530
- }
531
- /**
532
- * Get author name
533
- */
534
- static getAuthorName() {
535
- return 'Piero Proietti piero.proietti@gmail.com';
536
- }
537
- /**
538
- * Return the Debian version
539
- * @returns {number} Versione di Debian
540
- */
541
- static getDebianVersion() {
542
- const cmd = "cat /etc/debian_version | /usr/bin/cut -f1 -d'.'";
543
- const version = Number(shx.exec(cmd, { silent: true }).stdout);
544
- return version;
545
- }
546
- /**
547
- * Return true if live system
548
- * @returns {boolean} isLive
549
- */
550
- static isLive() {
551
- let retVal = false;
552
- const paths = [
553
- '/lib/live/mount', // debian-live
554
- '/run/live/rootfs/filesystem.squashfs', // debian trixie
555
- '/lib/live/mount/rootfs/filesystem.squashfs', // ubuntu bionic
556
- '/live/aufs', // mx-linux
557
- '/media/root-rw', // AlpineLinux
558
- '/run/archiso/airootfs', // Arch
559
- '/run/miso/sfs/livefs', // Manjarolinux
560
- '/run/rootfsbase' // Fedora
561
- ];
562
- for (let i = 0; i < paths.length; i++) {
563
- if (Utils.isMountpoint(paths[i])) {
564
- retVal = true;
565
- }
566
- }
567
- return retVal;
568
- }
569
- /**
570
- * Ritorna vero se path è un mountpoint
571
- * @param path
572
- */
573
- static isMountpoint(path = '') {
574
- const cmd = `mountpoint -q ${path}`;
575
- // return 0 if the directory is a mountpoint, non-zero if not.
576
- const result = shx.exec(cmd, { silent: true }).code;
577
- return result === 0;
578
- }
579
- /**
580
- *
581
- * @param device
582
- * @returns
583
- */
584
- static isBlockDevice(device = '') {
585
- const cmd = `lsblk -d -o name | grep ${device}`;
586
- const result = shx.exec(cmd, { silent: true }).code;
587
- return result === 0;
588
- }
589
- /**
590
- * return true if eggs run as root
591
- * @returns isRoot
592
- */
593
- static isRoot(command = '') {
594
- if (process.getuid && process.getuid() === 0) {
595
- return true;
596
- }
597
- return false;
598
- }
599
- /**
600
- *
601
- * @param command
602
- */
603
- static useRoot(command = '') {
604
- Utils.titles(pjson.shortName + ' ' + command + ` need to run with root privileges. Please, prefix it with sudo`);
605
- }
606
- /**
607
- * get the kernel version
608
- */
609
- static kernelVersion() {
610
- return os.release();
611
- }
612
- /**
613
- * return the name of network device
614
- */
615
- static async iface() {
616
- // return shx.exec(`ifconfig | awk 'FNR==1 { print $1 }' | tr --d :`, { silent: true }).stdout.trim()
617
- const interfaces = Object.keys(os.networkInterfaces());
618
- let netDeviceName = '';
619
- for (const k in interfaces) {
620
- if (interfaces[k] != 'lo') {
621
- netDeviceName = interfaces[k];
622
- }
623
- }
624
- return netDeviceName;
625
- }
626
- /**
627
- * address
628
- */
629
- static address() {
630
- const interfaces = os.networkInterfaces();
631
- let address = '';
632
- if (interfaces !== undefined) {
633
- for (const devName in interfaces) {
634
- const iface = interfaces[devName];
635
- if (iface !== undefined) {
636
- for (const alias of iface) {
637
- if (alias.family === 'IPv4' &&
638
- alias.address !== '127.0.0.1' &&
639
- !alias.internal) {
640
- // take just the first!
641
- if (address === '') {
642
- address = alias.address;
643
- }
644
- }
645
- }
646
- }
647
- }
648
- }
649
- return address;
650
- }
651
- /**
652
- * netmask
653
- */
654
- static netmask() {
655
- const interfaces = os.networkInterfaces();
656
- let netmask = '';
657
- if (interfaces !== undefined) {
658
- for (const devName in interfaces) {
659
- const iface = interfaces[devName];
660
- if (iface !== undefined) {
661
- for (const alias of iface) {
662
- if (alias.family === 'IPv4' &&
663
- alias.address !== '127.0.0.1' &&
664
- !alias.internal) {
665
- // take just the first!
666
- if (netmask === '') {
667
- netmask = alias.netmask;
668
- }
669
- }
670
- }
671
- }
672
- }
673
- }
674
- return netmask;
675
- }
676
- /**
677
- * cidr
678
- */
679
- static cidr() {
680
- const interfaces = os.networkInterfaces();
681
- let cidr = '';
682
- if (interfaces !== undefined) {
683
- for (const devName in interfaces) {
684
- const iface = interfaces[devName];
685
- if (iface !== undefined) {
686
- for (const alias of iface) {
687
- if (alias.family === 'IPv4' &&
688
- alias.address !== '127.0.0.1' &&
689
- !alias.internal) {
690
- // take just the first!
691
- if (cidr === '') {
692
- if (alias.cidr !== null) {
693
- cidr = alias.cidr;
694
- }
695
- }
696
- }
697
- }
698
- }
699
- }
700
- }
701
- return cidr;
702
- }
703
- /**
704
- *
705
- * broadcast
706
- */
707
- static broadcast() {
708
- let n = new Netmask(Utils.cidr());
709
- return n.broadcast;
710
- }
711
- /**
712
- * dns
713
- */
714
- static getDns() {
715
- return dns.getServers();
716
- }
717
- /**
718
- * getDomain
719
- */
720
- static getDomain() {
721
- return shx.exec('domainname', { silent: true }).stdout.trim();
722
- // return shx.exec(`route -n | grep 'UG[ \t]' | awk '{print $2}'`, { silent: true }).stdout.trim()
723
- }
724
- /**
725
- * @returns gateway
726
- */
727
- static gateway() {
728
- return shx.exec(`ip r | grep 'default' | awk '{print $3}'`, { silent: true }).stdout.trim();
729
- //return shx.exec(`route -n | grep 'UG[ \t]' | awk '{print $2}'`, { silent: true }).stdout.trim()
730
- }
731
- /**
732
- * write a file
733
- * @param file
734
- * @param text
735
- */
736
- static write(file, text) {
737
- text = text.trim() + '\n';
738
- file = file.trim();
739
- fs.writeFileSync(file, text);
740
- }
741
- /**
742
- *
743
- * @param file
744
- * @param cmd
745
- */
746
- static writeX(file, cmd) {
747
- let text = `#!/bin/sh\n\n`;
748
- text += `# Created at: ${Utils.formatDate(new Date())}\n`;
749
- text += `# By: penguins_eggs v. ${Utils.getPackageVersion()}\n`;
750
- text += `# ==> Perri\'s Brewery edition <== \n\n`;
751
- text += cmd;
752
- Utils.write(file, text);
753
- shx.chmod('+x', file);
754
- }
755
- /**
756
- *
757
- * @param file
758
- * @param cmd
759
- */
760
- static writeXs(file, cmds) {
761
- let cmd = '';
762
- for (const elem of cmds) {
763
- cmd += elem + '\n';
764
- }
765
- Utils.writeX(file, cmd);
766
- }
767
- /**
768
- *
769
- * @param msg
770
- */
771
- static async customConfirm(msg = 'Select yes to continue... ') {
772
- const varResult = await Utils.customConfirmCompanion(msg);
773
- const result = JSON.parse(varResult);
774
- if (result.confirm === 'Yes') {
775
- return true;
776
- }
777
- else {
778
- return false;
779
- }
780
- }
781
- /**
782
- *
783
- * @param msg
784
- */
785
- static async customConfirmCompanion(msg = 'Select yes to continue... ') {
786
- return new Promise(function (resolve) {
787
- const questions = [
788
- {
789
- type: 'list',
790
- name: 'confirm',
791
- message: msg,
792
- choices: ['No', 'Yes'],
793
- default: 'No'
794
- }
795
- ];
796
- inquirer.prompt(questions).then(function (options) {
797
- resolve(JSON.stringify(options));
798
- });
799
- });
800
- }
801
- /**
802
- *
803
- * @param msg
804
- */
805
- static async customConfirmAbort(msg = 'Confirm') {
806
- return new Promise(function (resolve) {
807
- const questions = [
808
- {
809
- type: 'list',
810
- name: 'confirm',
811
- message: msg,
812
- choices: ['No', 'Yes', 'Abort'],
813
- default: 'Yes'
814
- }
815
- ];
816
- inquirer.prompt(questions).then(function (options) {
817
- resolve(JSON.stringify(options));
818
- });
819
- });
820
- }
821
- /**
822
- *
823
- */
824
- static async pressKeyToExit(warning = 'Process will end', procContinue = true) {
825
- Utils.warning(warning);
826
- let msg = 'Press a key to exit...';
827
- if (procContinue) {
828
- msg = 'Press a key to continue...';
829
- }
830
- console.log(msg);
831
- const pressKeyToExit = spawnSync('read _ ', { shell: true, stdio: [0, 1, 2] });
832
- if (!procContinue) {
833
- process.exit(0);
834
- }
835
- }
836
- static async debug(cmd = 'cmd', procContinue = true) {
837
- console.log(chalk.redBright('DEBUG >>> ') + cmd + '\n');
838
- let msg = 'Press a key to exit...';
839
- if (procContinue) {
840
- msg = 'Press a key to continue...';
841
- }
842
- console.log(msg);
843
- const pressKeyToExit = spawnSync('read _ ', { shell: true, stdio: [0, 1, 2] });
844
- if (!procContinue) {
845
- process.exit(0);
846
- }
847
- }
848
- /**
849
- * titles
850
- * Penguin's are gettings alive!
851
- */
852
- static titles(command = '') {
853
- console.clear();
854
- console.log('');
855
- console.log(' E G G S: the reproductive system of penguins');
856
- console.log('');
857
- console.log(Utils.flag());
858
- console.log('command: ' + chalk.bgBlack.white(command) + '\n');
859
- }
860
- /**
861
- *
862
- * @returns flag
863
- */
864
- static flag() {
865
- return chalk.bgGreen.whiteBright(' ' + pjson.name + ' ') +
866
- chalk.bgWhite.blue(" Perri's Brewery edition ") +
867
- chalk.bgRed.whiteBright(' ver. ' + pjson.version + ' ');
868
- }
869
- /**
870
- *
871
- * @param verbose
872
- */
873
- static setEcho(verbose = false) {
874
- let echo = { echo: false, ignore: true };
875
- if (verbose) {
876
- echo = { echo: true, ignore: false };
877
- }
878
- return echo;
879
- }
880
- /**
881
- *
882
- * @param bytes
883
- * @param decimals
884
- * @returns
885
- */
886
- static formatBytes(bytes, decimals = 2) {
887
- if (bytes === 0)
888
- return '0 Bytes';
889
- const k = 1024;
890
- const dm = decimals < 0 ? 0 : decimals;
891
- const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
892
- const i = Math.floor(Math.log(bytes) / Math.log(k));
893
- return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + sizes[i];
894
- }
895
- /**
896
- *
897
- * @returns wardrobe
898
- */
899
- static async wardrobe() {
900
- let wardrobe = `${os.homedir()}/.wardrobe`;
901
- if (Utils.isRoot()) {
902
- wardrobe = `/home/${await Utils.getPrimaryUser()}/.wardrobe`;
903
- }
904
- return wardrobe;
905
- }
906
- // Se il metodo fa parte di una classe, usa `static`. Altrimenti, rimuovilo.
907
- static getOsRelease() {
908
- const osReleasePath = path.join('/etc', 'os-release');
909
- // Inizializza l'oggetto con valori predefiniti
910
- const osInfo = {
911
- ID: '',
912
- VERSION_ID: '',
913
- VERSION_CODENAME: 'n/a'
914
- };
915
- // Verifica se il file esiste
916
- if (!fs.existsSync(osReleasePath)) {
917
- console.error('/etc/os-release file does not exist.');
918
- return osInfo;
919
- }
920
- // Leggi il contenuto del file
921
- let fileContent;
922
- try {
923
- fileContent = fs.readFileSync(osReleasePath, 'utf8');
924
- }
925
- catch (error) {
926
- console.error('Error reading /etc/os-release:', error);
927
- return osInfo;
928
- }
929
- // Analizza ogni linea
930
- const lines = fileContent.split('\n');
931
- lines.forEach(line => {
932
- if (line.startsWith('#') || line.trim() === '')
933
- return;
934
- const [key, value] = line.split('=');
935
- if (key && value) {
936
- const trimmedKey = key.trim();
937
- const trimmedValue = value.trim().replace(/"/g, '');
938
- // Popola solo le chiavi desiderate
939
- if (trimmedKey === 'ID') {
940
- osInfo.ID = trimmedValue;
941
- }
942
- else if (trimmedKey === 'VERSION_ID') {
943
- osInfo.VERSION_ID = trimmedValue;
944
- }
945
- else if (trimmedKey === 'VERSION_CODENAME') {
946
- osInfo.VERSION_CODENAME = trimmedValue;
947
- }
948
- }
949
- });
950
- // capitalize distroId
951
- osInfo.ID = osInfo.ID[0].toUpperCase() + osInfo.ID.slice(1).toLowerCase();
952
- osInfo.VERSION_CODENAME = osInfo.VERSION_CODENAME.toLowerCase();
953
- return osInfo;
954
- }
955
- }