penguins-eggs 10.0.60 → 10.1.0

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