penguins-eggs 25.10.28 → 25.10.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/.oclif.manifest.json +1 -1
  2. package/addons/eggs/theme/applications/install-system.desktop +8 -6
  3. package/assets/calamares/io.calamares.calamares.policy +25 -0
  4. package/dist/classes/bleach.d.ts +37 -0
  5. package/dist/classes/bleach.js +148 -0
  6. package/dist/classes/cli-autologin.d.ts +52 -0
  7. package/dist/classes/cli-autologin.js +252 -0
  8. package/dist/classes/compressors.d.ts +54 -0
  9. package/dist/classes/compressors.js +109 -0
  10. package/dist/classes/daddy.d.ts +26 -0
  11. package/dist/classes/daddy.js +179 -0
  12. package/dist/classes/distro.d.ts +32 -0
  13. package/dist/classes/distro.js +363 -0
  14. package/dist/classes/diversions.d.ts +53 -0
  15. package/dist/classes/diversions.js +131 -0
  16. package/dist/classes/incubation/branding.d.ts +17 -0
  17. package/dist/classes/incubation/branding.js +85 -0
  18. package/dist/classes/incubation/customize/customize-partitions.d.ts +12 -0
  19. package/dist/classes/incubation/customize/customize-partitions.js +37 -0
  20. package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +1 -0
  21. package/dist/classes/incubation/fisherman-helper/initcpio.js +69 -0
  22. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  23. package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
  24. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  25. package/dist/classes/incubation/fisherman-helper/settings.js +116 -0
  26. package/dist/classes/incubation/fisherman.d.ts +71 -0
  27. package/dist/classes/incubation/fisherman.js +281 -0
  28. package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
  29. package/dist/classes/incubation/incubator.d/alpine.js +78 -0
  30. package/dist/classes/incubation/incubator.d/archlinux.d.ts +32 -0
  31. package/dist/classes/incubation/incubator.d/archlinux.js +82 -0
  32. package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
  33. package/dist/classes/incubation/incubator.d/bionic.js +83 -0
  34. package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
  35. package/dist/classes/incubation/incubator.d/buster.js +101 -0
  36. package/dist/classes/incubation/incubator.d/fedora.d.ts +32 -0
  37. package/dist/classes/incubation/incubator.d/fedora.js +81 -0
  38. package/dist/classes/incubation/incubator.d/focal.d.ts +32 -0
  39. package/dist/classes/incubation/incubator.d/focal.js +85 -0
  40. package/dist/classes/incubation/incubator.d/manjaro.d.ts +32 -0
  41. package/dist/classes/incubation/incubator.d/manjaro.js +82 -0
  42. package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
  43. package/dist/classes/incubation/incubator.d/noble.js +102 -0
  44. package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
  45. package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
  46. package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
  47. package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
  48. package/dist/classes/incubation/incubator.d/trixie.d.ts +32 -0
  49. package/dist/classes/incubation/incubator.d/trixie.js +98 -0
  50. package/dist/classes/incubation/incubator.d.ts +49 -0
  51. package/dist/classes/incubation/incubator.js +383 -0
  52. package/dist/classes/incubation/installer.d.ts +13 -0
  53. package/dist/classes/incubation/installer.js +52 -0
  54. package/dist/classes/keyboards.d.ts +50 -0
  55. package/dist/classes/keyboards.js +287 -0
  56. package/dist/classes/locales.d.ts +21 -0
  57. package/dist/classes/locales.js +77 -0
  58. package/dist/classes/network.d.ts +37 -0
  59. package/dist/classes/network.js +98 -0
  60. package/dist/classes/ovary.d/bind-live-fs.d.ts +18 -0
  61. package/dist/classes/ovary.d/bind-live-fs.js +185 -0
  62. package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
  63. package/dist/classes/ovary.d/bind-vfs.js +37 -0
  64. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
  65. package/dist/classes/ovary.d/create-xdg-autostart.js +193 -0
  66. package/dist/classes/ovary.d/edit-live-fs.d.ts +20 -0
  67. package/dist/classes/ovary.d/edit-live-fs.js +239 -0
  68. package/dist/classes/ovary.d/fertilization.d.ts +12 -0
  69. package/dist/classes/ovary.d/fertilization.js +53 -0
  70. package/dist/classes/ovary.d/finished.d.ts +13 -0
  71. package/dist/classes/ovary.d/finished.js +40 -0
  72. package/dist/classes/ovary.d/initrd.d.ts +21 -0
  73. package/dist/classes/ovary.d/initrd.js +96 -0
  74. package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
  75. package/dist/classes/ovary.d/kernel-copy.js +22 -0
  76. package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
  77. package/dist/classes/ovary.d/live-create-structure.js +70 -0
  78. package/dist/classes/ovary.d/luks-get-password.d.ts +12 -0
  79. package/dist/classes/ovary.d/luks-get-password.js +58 -0
  80. package/dist/classes/ovary.d/luks-helpers.d.ts +19 -0
  81. package/dist/classes/ovary.d/luks-helpers.js +73 -0
  82. package/dist/classes/ovary.d/luks-home-support.d.ts +12 -0
  83. package/dist/classes/ovary.d/luks-home-support.js +70 -0
  84. package/dist/classes/ovary.d/luks-home.d.ts +15 -0
  85. package/dist/classes/ovary.d/luks-home.js +132 -0
  86. package/dist/classes/ovary.d/luks-interactive-crypto-config.d.ts +47 -0
  87. package/dist/classes/ovary.d/luks-interactive-crypto-config.js +139 -0
  88. package/dist/classes/ovary.d/luks-root-initrd.d.ts +17 -0
  89. package/dist/classes/ovary.d/luks-root-initrd.js +213 -0
  90. package/dist/classes/ovary.d/luks-root.d.ts +15 -0
  91. package/dist/classes/ovary.d/luks-root.js +123 -0
  92. package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
  93. package/dist/classes/ovary.d/make-dot-disk.js +71 -0
  94. package/dist/classes/ovary.d/make-efi.d.ts +14 -0
  95. package/dist/classes/ovary.d/make-efi.js +296 -0
  96. package/dist/classes/ovary.d/make-iso.d.ts +13 -0
  97. package/dist/classes/ovary.d/make-iso.js +45 -0
  98. package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
  99. package/dist/classes/ovary.d/make-squashfs.js +111 -0
  100. package/dist/classes/ovary.d/merged.d.ts +27 -0
  101. package/dist/classes/ovary.d/merged.js +78 -0
  102. package/dist/classes/ovary.d/produce.d.ts +23 -0
  103. package/dist/classes/ovary.d/produce.js +349 -0
  104. package/dist/classes/ovary.d/rexec.d.ts +13 -0
  105. package/dist/classes/ovary.d/rexec.js +34 -0
  106. package/dist/classes/ovary.d/syslinux.d.ts +12 -0
  107. package/dist/classes/ovary.d/syslinux.js +99 -0
  108. package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
  109. package/dist/classes/ovary.d/user-create-live.js +97 -0
  110. package/dist/classes/ovary.d/users-remove.d.ts +9 -0
  111. package/dist/classes/ovary.d/users-remove.js +38 -0
  112. package/dist/classes/ovary.d/xorriso-command.d.ts +14 -0
  113. package/dist/classes/ovary.d/xorriso-command.js +125 -0
  114. package/dist/classes/ovary.d.ts +111 -0
  115. package/dist/classes/ovary.js +122 -0
  116. package/dist/classes/pacman.d/alpine.d.ts +56 -0
  117. package/dist/classes/pacman.d/alpine.js +167 -0
  118. package/dist/classes/pacman.d/archlinux.d.ts +62 -0
  119. package/dist/classes/pacman.d/archlinux.js +128 -0
  120. package/dist/classes/pacman.d/debian.d.ts +65 -0
  121. package/dist/classes/pacman.d/debian.js +143 -0
  122. package/dist/classes/pacman.d/fedora.d.ts +53 -0
  123. package/dist/classes/pacman.d/fedora.js +107 -0
  124. package/dist/classes/pacman.d/openmamba.d.ts +52 -0
  125. package/dist/classes/pacman.d/openmamba.js +106 -0
  126. package/dist/classes/pacman.d/opensuse.d.ts +53 -0
  127. package/dist/classes/pacman.d/opensuse.js +109 -0
  128. package/dist/classes/pacman.d.ts +139 -0
  129. package/dist/classes/pacman.js +683 -0
  130. package/dist/classes/pve-live.d.ts +17 -0
  131. package/dist/classes/pve-live.js +52 -0
  132. package/dist/classes/pxe.d.ts +76 -0
  133. package/dist/classes/pxe.js +353 -0
  134. package/dist/classes/settings.d.ts +52 -0
  135. package/dist/classes/settings.js +185 -0
  136. package/dist/classes/sources_list.d.ts +28 -0
  137. package/dist/classes/sources_list.js +89 -0
  138. package/dist/classes/systemctl.d.ts +47 -0
  139. package/dist/classes/systemctl.js +86 -0
  140. package/dist/classes/tailor.d.ts +50 -0
  141. package/dist/classes/tailor.js +563 -0
  142. package/dist/classes/tools.d.ts +26 -0
  143. package/dist/classes/tools.js +50 -0
  144. package/dist/classes/users.d.ts +28 -0
  145. package/dist/classes/users.js +143 -0
  146. package/dist/classes/utils.d/kernel.d.ts +39 -0
  147. package/dist/classes/utils.d/kernel.js +206 -0
  148. package/dist/classes/utils.d.ts +330 -0
  149. package/dist/classes/utils.js +968 -0
  150. package/dist/classes/xdg.d.ts +45 -0
  151. package/dist/classes/xdg.js +337 -0
  152. package/dist/classes/yolk.d.ts +33 -0
  153. package/dist/classes/yolk.js +114 -0
  154. package/dist/commands/adapt.d.ts +17 -0
  155. package/dist/commands/adapt.js +33 -0
  156. package/dist/commands/analyze.d.ts +26 -0
  157. package/dist/commands/analyze.js +95 -0
  158. package/dist/commands/calamares.d.ts +29 -0
  159. package/dist/commands/calamares.js +112 -0
  160. package/dist/commands/config.d.ts +35 -0
  161. package/dist/commands/config.js +120 -0
  162. package/dist/commands/cuckoo.d.ts +17 -0
  163. package/dist/commands/cuckoo.js +61 -0
  164. package/dist/commands/dad.d.ts +21 -0
  165. package/dist/commands/dad.js +47 -0
  166. package/dist/commands/export/iso.d.ts +19 -0
  167. package/dist/commands/export/iso.js +55 -0
  168. package/dist/commands/export/pkg.d.ts +29 -0
  169. package/dist/commands/export/pkg.js +173 -0
  170. package/dist/commands/export/tarballs.d.ts +27 -0
  171. package/dist/commands/export/tarballs.js +79 -0
  172. package/dist/commands/install.d.ts +39 -0
  173. package/dist/commands/install.js +113 -0
  174. package/dist/commands/kill.d.ts +24 -0
  175. package/dist/commands/kill.js +50 -0
  176. package/dist/commands/love.d.ts +25 -0
  177. package/dist/commands/love.js +118 -0
  178. package/dist/commands/mom.d.ts +16 -0
  179. package/dist/commands/mom.js +30 -0
  180. package/dist/commands/pods.d.ts +22 -0
  181. package/dist/commands/pods.js +92 -0
  182. package/dist/commands/produce.d.ts +37 -0
  183. package/dist/commands/produce.js +232 -0
  184. package/dist/commands/status.d.ts +23 -0
  185. package/dist/commands/status.js +31 -0
  186. package/dist/commands/tools/clean.d.ts +18 -0
  187. package/dist/commands/tools/clean.js +37 -0
  188. package/dist/commands/tools/repo.d.ts +31 -0
  189. package/dist/commands/tools/repo.js +246 -0
  190. package/dist/commands/tools/skel.d.ts +18 -0
  191. package/dist/commands/tools/skel.js +44 -0
  192. package/dist/commands/tools/stat.d.ts +31 -0
  193. package/dist/commands/tools/stat.js +70 -0
  194. package/dist/commands/tools/yolk.d.ts +24 -0
  195. package/dist/commands/tools/yolk.js +45 -0
  196. package/dist/commands/update.d.ts +46 -0
  197. package/dist/commands/update.js +238 -0
  198. package/dist/commands/wardrobe/get.d.ts +23 -0
  199. package/dist/commands/wardrobe/get.js +52 -0
  200. package/dist/commands/wardrobe/list.d.ts +24 -0
  201. package/dist/commands/wardrobe/list.js +125 -0
  202. package/dist/commands/wardrobe/show.d.ts +25 -0
  203. package/dist/commands/wardrobe/show.js +97 -0
  204. package/dist/commands/wardrobe/wear.d.ts +26 -0
  205. package/dist/commands/wardrobe/wear.js +84 -0
  206. package/dist/dhcpd-proxy/classes/packet.d.ts +36 -0
  207. package/dist/dhcpd-proxy/classes/packet.js +124 -0
  208. package/dist/dhcpd-proxy/index.d.ts +4 -0
  209. package/dist/dhcpd-proxy/index.js +4 -0
  210. package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +45 -0
  211. package/dist/dhcpd-proxy/interfaces/i-pxe.js +1 -0
  212. package/dist/dhcpd-proxy/lib/packet/converters.d.ts +11 -0
  213. package/dist/dhcpd-proxy/lib/packet/converters.js +395 -0
  214. package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +10 -0
  215. package/dist/dhcpd-proxy/lib/packet/message-types.js +12 -0
  216. package/dist/dhcpd-proxy/lib/packet/options.d.ts +8 -0
  217. package/dist/dhcpd-proxy/lib/packet/options.js +264 -0
  218. package/dist/dhcpd-proxy/lib/sprintf.d.ts +6 -0
  219. package/dist/dhcpd-proxy/lib/sprintf.js +130 -0
  220. package/dist/dhcpd-proxy/lib/utils.d.ts +126 -0
  221. package/dist/dhcpd-proxy/lib/utils.js +255 -0
  222. package/dist/dhcpd-proxy/simple-proxy.d.ts +11 -0
  223. package/dist/dhcpd-proxy/simple-proxy.js +118 -0
  224. package/dist/index.d.ts +8 -0
  225. package/dist/index.js +8 -0
  226. package/dist/interfaces/calamares/i-calamares-bootloader.d.ts +23 -0
  227. package/dist/interfaces/calamares/i-calamares-bootloader.js +7 -0
  228. package/dist/interfaces/calamares/i-calamares-branding.d.ts +46 -0
  229. package/dist/interfaces/calamares/i-calamares-branding.js +1 -0
  230. package/dist/interfaces/calamares/i-calamares-displaymanager.d.ts +34 -0
  231. package/dist/interfaces/calamares/i-calamares-displaymanager.js +1 -0
  232. package/dist/interfaces/calamares/i-calamares-finished.d.ts +14 -0
  233. package/dist/interfaces/calamares/i-calamares-finished.js +1 -0
  234. package/dist/interfaces/calamares/i-calamares-packages.d.ts +26 -0
  235. package/dist/interfaces/calamares/i-calamares-packages.js +1 -0
  236. package/dist/interfaces/calamares/i-calamares-partitions.d.ts +39 -0
  237. package/dist/interfaces/calamares/i-calamares-partitions.js +1 -0
  238. package/dist/interfaces/calamares/i-calamares-settings.d.ts +36 -0
  239. package/dist/interfaces/calamares/i-calamares-settings.js +1 -0
  240. package/dist/interfaces/i-addons.d.ts +12 -0
  241. package/dist/interfaces/i-addons.js +8 -0
  242. package/dist/interfaces/i-analyze.d.ts +17 -0
  243. package/dist/interfaces/i-analyze.js +17 -0
  244. package/dist/interfaces/i-app.d.ts +14 -0
  245. package/dist/interfaces/i-app.js +8 -0
  246. package/dist/interfaces/i-config-tools.d.ts +15 -0
  247. package/dist/interfaces/i-config-tools.js +8 -0
  248. package/dist/interfaces/i-devices.d.ts +20 -0
  249. package/dist/interfaces/i-devices.js +8 -0
  250. package/dist/interfaces/i-distro.d.ts +23 -0
  251. package/dist/interfaces/i-distro.js +8 -0
  252. package/dist/interfaces/i-drive-list.d.ts +33 -0
  253. package/dist/interfaces/i-drive-list.js +8 -0
  254. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  255. package/dist/interfaces/i-eggs-config.js +8 -0
  256. package/dist/interfaces/i-excludes.d.ts +14 -0
  257. package/dist/interfaces/i-excludes.js +8 -0
  258. package/dist/interfaces/i-exec.d.ts +11 -0
  259. package/dist/interfaces/i-exec.js +8 -0
  260. package/dist/interfaces/i-initrd.d.ts +13 -0
  261. package/dist/interfaces/i-initrd.js +8 -0
  262. package/dist/interfaces/i-install.d.ts +16 -0
  263. package/dist/interfaces/i-install.js +8 -0
  264. package/dist/interfaces/i-installer.d.ts +17 -0
  265. package/dist/interfaces/i-installer.js +8 -0
  266. package/dist/interfaces/i-luks-passphrase.d.ts +11 -0
  267. package/dist/interfaces/i-luks-passphrase.js +8 -0
  268. package/dist/interfaces/i-materia.d.ts +36 -0
  269. package/dist/interfaces/i-materia.js +8 -0
  270. package/dist/interfaces/i-net.d.ts +16 -0
  271. package/dist/interfaces/i-net.js +8 -0
  272. package/dist/interfaces/i-os-release.d.ts +5 -0
  273. package/dist/interfaces/i-os-release.js +1 -0
  274. package/dist/interfaces/i-packages.d.ts +16 -0
  275. package/dist/interfaces/i-packages.js +8 -0
  276. package/dist/interfaces/i-partitions.d.ts +16 -0
  277. package/dist/interfaces/i-partitions.js +8 -0
  278. package/dist/interfaces/i-pxe.d.ts +45 -0
  279. package/dist/interfaces/i-pxe.js +1 -0
  280. package/dist/interfaces/i-remix.d.ts +21 -0
  281. package/dist/interfaces/i-remix.js +8 -0
  282. package/dist/interfaces/i-settings.d.ts +33 -0
  283. package/dist/interfaces/i-settings.js +8 -0
  284. package/dist/interfaces/i-user.d.ts +14 -0
  285. package/dist/interfaces/i-user.js +8 -0
  286. package/dist/interfaces/i-workdir.d.ts +14 -0
  287. package/dist/interfaces/i-workdir.js +8 -0
  288. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  289. package/dist/interfaces/i-xkb-model.js +8 -0
  290. package/dist/interfaces/index.d.ts +26 -0
  291. package/dist/interfaces/index.js +8 -0
  292. package/dist/krill/classes/cfs.d.ts +17 -0
  293. package/dist/krill/classes/cfs.js +39 -0
  294. package/dist/krill/classes/krill_enums.d.ts +37 -0
  295. package/dist/krill/classes/krill_enums.js +41 -0
  296. package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
  297. package/dist/krill/classes/prepare.d/confirm.js +30 -0
  298. package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
  299. package/dist/krill/classes/prepare.d/keyboard.js +62 -0
  300. package/dist/krill/classes/prepare.d/location.d.ts +17 -0
  301. package/dist/krill/classes/prepare.d/location.js +59 -0
  302. package/dist/krill/classes/prepare.d/network.d.ts +14 -0
  303. package/dist/krill/classes/prepare.d/network.js +68 -0
  304. package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
  305. package/dist/krill/classes/prepare.d/partitions.js +86 -0
  306. package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
  307. package/dist/krill/classes/prepare.d/summary.js +72 -0
  308. package/dist/krill/classes/prepare.d/users.d.ts +6 -0
  309. package/dist/krill/classes/prepare.d/users.js +63 -0
  310. package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
  311. package/dist/krill/classes/prepare.d/welcome.js +30 -0
  312. package/dist/krill/classes/prepare.d.ts +89 -0
  313. package/dist/krill/classes/prepare.js +319 -0
  314. package/dist/krill/classes/sequence.d/add_user.d.ts +20 -0
  315. package/dist/krill/classes/sequence.d/add_user.js +77 -0
  316. package/dist/krill/classes/sequence.d/bootloader.d.ts +14 -0
  317. package/dist/krill/classes/sequence.d/bootloader.js +117 -0
  318. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +14 -0
  319. package/dist/krill/classes/sequence.d/bootloader_config.js +192 -0
  320. package/dist/krill/classes/sequence.d/change_password.d.ts +15 -0
  321. package/dist/krill/classes/sequence.d/change_password.js +18 -0
  322. package/dist/krill/classes/sequence.d/del_live_user.d.ts +14 -0
  323. package/dist/krill/classes/sequence.d/del_live_user.js +39 -0
  324. package/dist/krill/classes/sequence.d/fstab.d.ts +14 -0
  325. package/dist/krill/classes/sequence.d/fstab.js +177 -0
  326. package/dist/krill/classes/sequence.d/grubcfg.d.ts +17 -0
  327. package/dist/krill/classes/sequence.d/grubcfg.js +35 -0
  328. package/dist/krill/classes/sequence.d/hostname.d.ts +13 -0
  329. package/dist/krill/classes/sequence.d/hostname.js +50 -0
  330. package/dist/krill/classes/sequence.d/initramfs.d.ts +13 -0
  331. package/dist/krill/classes/sequence.d/initramfs.js +54 -0
  332. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +14 -0
  333. package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
  334. package/dist/krill/classes/sequence.d/locale.d.ts +13 -0
  335. package/dist/krill/classes/sequence.d/locale.js +91 -0
  336. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +10 -0
  337. package/dist/krill/classes/sequence.d/locale_cfg.js +58 -0
  338. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +14 -0
  339. package/dist/krill/classes/sequence.d/m_keyboard.js +58 -0
  340. package/dist/krill/classes/sequence.d/machine_id.d.ts +15 -0
  341. package/dist/krill/classes/sequence.d/machine_id.js +33 -0
  342. package/dist/krill/classes/sequence.d/mkfs.d.ts +15 -0
  343. package/dist/krill/classes/sequence.d/mkfs.js +88 -0
  344. package/dist/krill/classes/sequence.d/mount_fs.d.ts +17 -0
  345. package/dist/krill/classes/sequence.d/mount_fs.js +68 -0
  346. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +17 -0
  347. package/dist/krill/classes/sequence.d/mount_vfs.js +59 -0
  348. package/dist/krill/classes/sequence.d/network_cfg.d.ts +19 -0
  349. package/dist/krill/classes/sequence.d/network_cfg.js +73 -0
  350. package/dist/krill/classes/sequence.d/packages.d.ts +14 -0
  351. package/dist/krill/classes/sequence.d/packages.js +111 -0
  352. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +17 -0
  353. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
  354. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +16 -0
  355. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +51 -0
  356. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
  357. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +77 -0
  358. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
  359. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +33 -0
  360. package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
  361. package/dist/krill/classes/sequence.d/partition.js +84 -0
  362. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +13 -0
  363. package/dist/krill/classes/sequence.d/remove_installer_link.js +35 -0
  364. package/dist/krill/classes/sequence.d/umount.d.ts +14 -0
  365. package/dist/krill/classes/sequence.d/umount.js +28 -0
  366. package/dist/krill/classes/sequence.d/unpackfs.d.ts +13 -0
  367. package/dist/krill/classes/sequence.d/unpackfs.js +20 -0
  368. package/dist/krill/classes/sequence.d.ts +134 -0
  369. package/dist/krill/classes/sequence.js +400 -0
  370. package/dist/krill/components/finished.d.ts +16 -0
  371. package/dist/krill/components/finished.js +56 -0
  372. package/dist/krill/components/information.d.ts +8 -0
  373. package/dist/krill/components/information.js +162 -0
  374. package/dist/krill/components/install.d.ts +15 -0
  375. package/dist/krill/components/install.js +60 -0
  376. package/dist/krill/components/keyboard.d.ts +16 -0
  377. package/dist/krill/components/keyboard.js +54 -0
  378. package/dist/krill/components/location.d.ts +16 -0
  379. package/dist/krill/components/location.js +59 -0
  380. package/dist/krill/components/network.d.ts +19 -0
  381. package/dist/krill/components/network.js +65 -0
  382. package/dist/krill/components/partitions.d.ts +18 -0
  383. package/dist/krill/components/partitions.js +89 -0
  384. package/dist/krill/components/steps.d.ts +13 -0
  385. package/dist/krill/components/steps.js +148 -0
  386. package/dist/krill/components/summary.d.ts +25 -0
  387. package/dist/krill/components/summary.js +77 -0
  388. package/dist/krill/components/title.d.ts +11 -0
  389. package/dist/krill/components/title.js +35 -0
  390. package/dist/krill/components/users.d.ts +24 -0
  391. package/dist/krill/components/users.js +80 -0
  392. package/dist/krill/components/welcome.d.ts +13 -0
  393. package/dist/krill/components/welcome.js +63 -0
  394. package/dist/krill/interfaces/i_krill.d.ts +44 -0
  395. package/dist/krill/interfaces/i_krill.js +8 -0
  396. package/dist/krill/interfaces/i_krill_config.d.ts +35 -0
  397. package/dist/krill/interfaces/i_krill_config.js +8 -0
  398. package/dist/krill/lib/get_address.d.ts +8 -0
  399. package/dist/krill/lib/get_address.js +23 -0
  400. package/dist/krill/lib/get_dns.d.ts +8 -0
  401. package/dist/krill/lib/get_dns.js +23 -0
  402. package/dist/krill/lib/get_domain.d.ts +8 -0
  403. package/dist/krill/lib/get_domain.js +23 -0
  404. package/dist/krill/lib/get_gateway.d.ts +8 -0
  405. package/dist/krill/lib/get_gateway.js +23 -0
  406. package/dist/krill/lib/get_hostname.d.ts +8 -0
  407. package/dist/krill/lib/get_hostname.js +23 -0
  408. package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
  409. package/dist/krill/lib/get_luks_passphrase.js +32 -0
  410. package/dist/krill/lib/get_netmask.d.ts +8 -0
  411. package/dist/krill/lib/get_netmask.js +23 -0
  412. package/dist/krill/lib/get_password.d.ts +8 -0
  413. package/dist/krill/lib/get_password.js +36 -0
  414. package/dist/krill/lib/get_userfullname.d.ts +8 -0
  415. package/dist/krill/lib/get_userfullname.js +23 -0
  416. package/dist/krill/lib/get_username.d.ts +8 -0
  417. package/dist/krill/lib/get_username.js +23 -0
  418. package/dist/krill/lib/select_address_type.d.ts +8 -0
  419. package/dist/krill/lib/select_address_type.js +24 -0
  420. package/dist/krill/lib/select_filesystem_type.d.ts +8 -0
  421. package/dist/krill/lib/select_filesystem_type.js +40 -0
  422. package/dist/krill/lib/select_installation_device.d.ts +8 -0
  423. package/dist/krill/lib/select_installation_device.js +40 -0
  424. package/dist/krill/lib/select_installation_mode.d.ts +9 -0
  425. package/dist/krill/lib/select_installation_mode.js +25 -0
  426. package/dist/krill/lib/select_interface.d.ts +8 -0
  427. package/dist/krill/lib/select_interface.js +24 -0
  428. package/dist/krill/lib/select_keyboard_layout.d.ts +11 -0
  429. package/dist/krill/lib/select_keyboard_layout.js +36 -0
  430. package/dist/krill/lib/select_keyboard_model.d.ts +11 -0
  431. package/dist/krill/lib/select_keyboard_model.js +34 -0
  432. package/dist/krill/lib/select_keyboard_option.d.ts +11 -0
  433. package/dist/krill/lib/select_keyboard_option.js +34 -0
  434. package/dist/krill/lib/select_keyboard_variant.d.ts +11 -0
  435. package/dist/krill/lib/select_keyboard_variant.js +35 -0
  436. package/dist/krill/lib/select_languages.d.ts +8 -0
  437. package/dist/krill/lib/select_languages.js +28 -0
  438. package/dist/krill/lib/select_regions.d.ts +8 -0
  439. package/dist/krill/lib/select_regions.js +24 -0
  440. package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
  441. package/dist/krill/lib/select_replaced_partition.js +31 -0
  442. package/dist/krill/lib/select_user_swap_choice.d.ts +9 -0
  443. package/dist/krill/lib/select_user_swap_choice.js +35 -0
  444. package/dist/krill/lib/select_zones.d.ts +8 -0
  445. package/dist/krill/lib/select_zones.js +518 -0
  446. package/dist/lib/kill_me_softly.d.ts +11 -0
  447. package/dist/lib/kill_me_softly.js +61 -0
  448. package/dist/lib/utils.d.ts +19 -0
  449. package/dist/lib/utils.js +65 -0
  450. package/dracut/dracut.conf.d/50-live.conf +12 -13
  451. package/package.json +1 -1
  452. package/perrisbrewery/template/dependencies.yaml +1 -0
@@ -0,0 +1,563 @@
1
+ /**
2
+ * ./src/classes/tailor.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
+ import chalk from 'chalk';
9
+ import fs from 'node:fs';
10
+ import yaml from 'js-yaml';
11
+ import path from 'node:path';
12
+ import { exec } from '../lib/utils.js';
13
+ import Distro from './distro.js';
14
+ import Pacman from './pacman.js';
15
+ import SourcesList from './sources_list.js';
16
+ import Utils from './utils.js';
17
+ /**
18
+ *
19
+ */
20
+ export default class Tailor {
21
+ materials = {};
22
+ category = 'costume';
23
+ costume = '';
24
+ echo = {};
25
+ toNull = ' > /dev/null 2>&1';
26
+ verbose = false;
27
+ wardrobe = '';
28
+ log = '';
29
+ /**
30
+ * @param wardrobe
31
+ * @param costume
32
+ */
33
+ constructor(costume, category = 'costume') {
34
+ this.costume = costume;
35
+ this.wardrobe = path.dirname(path.dirname(costume));
36
+ this.log = path.dirname(this.wardrobe) + "/wardrobe.log";
37
+ this.category = category;
38
+ }
39
+ /**
40
+ *
41
+ */
42
+ async prepare(verbose = true, no_accessories = false, no_firmwares = false) {
43
+ if (verbose) {
44
+ this.verbose = true;
45
+ this.toNull = '';
46
+ }
47
+ this.echo = Utils.setEcho(verbose);
48
+ Utils.warning(`preparing ${this.costume}`);
49
+ if (!fs.existsSync(this.log)) {
50
+ fs.writeFileSync(this.log, "# eggs wardrobe wear\n\n");
51
+ }
52
+ fs.appendFileSync(this.log, `## ${this.costume}\n`);
53
+ fs.appendFileSync(this.log, `Packages not found:\n`);
54
+ /**
55
+ * check curl presence
56
+ */
57
+ if (!Pacman.packageIsInstalled('curl')) {
58
+ Utils.pressKeyToExit('In this tailoring shop we use curl. Install it with your package manager');
59
+ process.exit();
60
+ }
61
+ // Analyze distro
62
+ const distro = new Distro();
63
+ let tailorList = '';
64
+ switch (distro.distroLike) {
65
+ case 'Debian': {
66
+ tailorList = `${this.costume}/debian.yml`;
67
+ if (!fs.existsSync(tailorList)) {
68
+ tailorList = `${this.costume}/devuan.yml`;
69
+ if (!fs.existsSync(tailorList)) {
70
+ tailorList = `${this.costume}/ubuntu.yml`;
71
+ if (!fs.existsSync(tailorList)) {
72
+ console.log(`no costume definition found compatible Debian`);
73
+ process.exit();
74
+ }
75
+ }
76
+ }
77
+ break;
78
+ }
79
+ case 'Devuan': {
80
+ tailorList = `${this.costume}/devuan.yml`;
81
+ if (!fs.existsSync(tailorList)) {
82
+ tailorList = `${this.costume}/debian.yml`;
83
+ if (!fs.existsSync(tailorList)) {
84
+ tailorList = `${this.costume}/ubuntu.yml`;
85
+ if (!fs.existsSync(tailorList)) {
86
+ console.log(`no costume definition found compatible Devuan`);
87
+ process.exit();
88
+ }
89
+ }
90
+ }
91
+ break;
92
+ }
93
+ case 'Ubuntu': {
94
+ tailorList = `${this.costume}/ubuntu.yml`;
95
+ if (!fs.existsSync(tailorList)) {
96
+ tailorList = `${this.costume}/debian.yml`;
97
+ console.log(`trying ` + tailorList);
98
+ if (!fs.existsSync(tailorList)) {
99
+ tailorList = `${this.costume}/devuan.yml`;
100
+ console.log(`trying ` + tailorList);
101
+ if (!fs.existsSync(tailorList)) {
102
+ console.log(`no costume definition found compatible Ubuntu`);
103
+ process.exit();
104
+ }
105
+ }
106
+ }
107
+ break;
108
+ }
109
+ case 'Alpine': {
110
+ tailorList = `${this.costume}/alpine.yml`;
111
+ if (!fs.existsSync(tailorList)) {
112
+ tailorList = `${this.costume}/debian.yml`;
113
+ if (!fs.existsSync(tailorList)) {
114
+ console.log(`no costume definition found compatible Alpine`);
115
+ process.exit();
116
+ }
117
+ }
118
+ break;
119
+ }
120
+ case 'Arch': {
121
+ tailorList = `${this.costume}/arch.yml`;
122
+ if (!fs.existsSync(tailorList)) {
123
+ tailorList = `${this.costume}/debian.yml`;
124
+ if (!fs.existsSync(tailorList)) {
125
+ console.log(`no costume definition found compatible Arch`);
126
+ process.exit();
127
+ }
128
+ }
129
+ break;
130
+ }
131
+ case 'Fedora':
132
+ case 'Almalinux':
133
+ case 'Rocky': {
134
+ tailorList = `${this.costume}/fedora.yml`;
135
+ if (!fs.existsSync(tailorList)) {
136
+ tailorList = `${this.costume}/debian.yml`;
137
+ if (!fs.existsSync(tailorList)) {
138
+ console.log(`no costume definition found compatible Fedora`);
139
+ process.exit();
140
+ }
141
+ }
142
+ break;
143
+ }
144
+ case 'Opensuse': {
145
+ tailorList = `${this.costume}/opensuse.yml`;
146
+ if (!fs.existsSync(tailorList)) {
147
+ tailorList = `${this.costume}/debian.yml`;
148
+ if (!fs.existsSync(tailorList)) {
149
+ console.log(`no costume definition found compatible opensuse`);
150
+ process.exit();
151
+ }
152
+ }
153
+ break;
154
+ }
155
+ } // end analyze
156
+ /**
157
+ * find materials
158
+ */
159
+ if (fs.existsSync(tailorList)) {
160
+ this.materials = yaml.load(fs.readFileSync(tailorList, 'utf8'));
161
+ }
162
+ else {
163
+ switch (this.category) {
164
+ case 'costume': {
165
+ Utils.titles(`${this.category}: ${this.costume}`);
166
+ console.log("Tailor's list " + chalk.cyan(tailorList) + ' is not found \non your wardrobe ' + chalk.cyan(this.wardrobe) + '.\n');
167
+ console.log('Costume will not be installed, operations will abort.\n');
168
+ Utils.pressKeyToExit();
169
+ process.exit();
170
+ break;
171
+ }
172
+ case 'accessory': {
173
+ Utils.titles(`${this.category}: ${this.costume}`);
174
+ console.log("Tailor's list " + chalk.cyan(tailorList) + ' is not found \non your wardrobe ' + chalk.cyan(this.wardrobe) + '.\n');
175
+ console.log('vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv');
176
+ console.log('Accessory will not be installed,');
177
+ console.log('operations will continue.');
178
+ console.log('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^');
179
+ sleep(3000);
180
+ return;
181
+ }
182
+ }
183
+ }
184
+ /**
185
+ * sequence
186
+ */
187
+ const sources_list = new SourcesList();
188
+ let step = '';
189
+ if (this.materials.sequence !== undefined) {
190
+ step = 'analyzing sequence';
191
+ Utils.warning(step);
192
+ /**
193
+ * sequence/repositories
194
+ */
195
+ if (this.materials.sequence.repositories !== undefined) {
196
+ if (distro.familyId === 'debian') {
197
+ /**
198
+ * sequence/repositories/sources_list
199
+ */
200
+ // evito di fallire se sources_list non è presente
201
+ if (this.materials.sequence.repositories.sources_list !== undefined) {
202
+ step = 'analyzing repositories';
203
+ Utils.warning(step);
204
+ if (distro.distroLike === 'Debian') {
205
+ await sources_list.components(this.materials.sequence.repositories.sources_list);
206
+ }
207
+ }
208
+ /**
209
+ * sequence/repositories/sources_list_d
210
+ */
211
+ if (this.materials.sequence.repositories.sources_list_d !== undefined && this.materials.sequence.repositories.sources_list_d[0] !== null) {
212
+ step = 'adding repositories to /etc/apt/sources_list_d';
213
+ Utils.warning(step);
214
+ for (const cmd of this.materials.sequence.repositories.sources_list_d) {
215
+ try {
216
+ // repeat 3 times if fail curl or others commands
217
+ for (let i = 0; i < 2; i++) {
218
+ const result = await exec(cmd, this.echo);
219
+ if (result.code === 0) {
220
+ break;
221
+ }
222
+ }
223
+ }
224
+ catch (error) {
225
+ await Utils.pressKeyToExit(JSON.stringify(error));
226
+ }
227
+ }
228
+ }
229
+ }
230
+ /**
231
+ * sequence/repositories/update
232
+ */
233
+ if (this.materials.sequence.repositories.update === undefined) {
234
+ console.log('repositiories, and repositories.update MUST be defined on sequence');
235
+ process.exit();
236
+ }
237
+ step = 'repositories update';
238
+ Utils.warning(step);
239
+ if (this.materials.sequence.repositories.update) {
240
+ switch (distro.familyId) {
241
+ case 'alpine': {
242
+ await exec('apk update', Utils.setEcho(false));
243
+ break;
244
+ }
245
+ case 'archlinux': {
246
+ await exec('pacman -Sy', Utils.setEcho(false));
247
+ break;
248
+ }
249
+ case 'debian': {
250
+ await exec('apt-get update', Utils.setEcho(false));
251
+ break;
252
+ }
253
+ case 'fedora': {
254
+ await exec('dnf check-update --refresh', Utils.setEcho(false));
255
+ break;
256
+ }
257
+ case 'opensuse': {
258
+ await exec('zypper refresh', Utils.setEcho(true));
259
+ break;
260
+ }
261
+ }
262
+ }
263
+ /**
264
+ * sequence/repositories/upgrade
265
+ */
266
+ if (this.materials.sequence.repositories.upgrade !== undefined) {
267
+ step = 'repositories upgrade';
268
+ Utils.warning(step);
269
+ if (this.materials.sequence.repositories.upgrade) {
270
+ switch (distro.familyId) {
271
+ case 'alpine': {
272
+ await exec('apk upgrade', Utils.setEcho(false));
273
+ break;
274
+ }
275
+ case 'archlinux': {
276
+ await exec('pacman -Su', Utils.setEcho(false));
277
+ break;
278
+ }
279
+ case 'debian': {
280
+ await exec('apt-get full-upgrade', Utils.setEcho(false));
281
+ break;
282
+ }
283
+ case 'fedora': {
284
+ await exec('dnf upgrade', Utils.setEcho(false));
285
+ break;
286
+ }
287
+ case 'opensuse': {
288
+ await exec('zypper update', Utils.setEcho(true));
289
+ break;
290
+ }
291
+ }
292
+ } // upgrade true
293
+ } // undefined upgrade
294
+ } // end sequence/repositories
295
+ /**
296
+ * sequence/cmds
297
+ */
298
+ if (this.materials.sequence.cmds !== undefined && Array.isArray(this.materials.sequence.cmds)) {
299
+ step = 'sequence commands';
300
+ Utils.warning(step);
301
+ for (const cmd of this.materials.sequence.cmds) {
302
+ if (fs.existsSync(`${this.costume}/${cmd}`)) {
303
+ // exec ./costume/cmd
304
+ await exec(`${this.costume}/${cmd} `, Utils.setEcho(true));
305
+ }
306
+ else {
307
+ // exec cmd
308
+ await exec(`${cmd}`, Utils.setEcho(true));
309
+ }
310
+ }
311
+ }
312
+ /**
313
+ * install packages
314
+ */
315
+ if (this.materials.sequence.packages !== undefined) {
316
+ const packages = await this.packagesExists(this.materials.sequence.packages);
317
+ console.log(this.materials.sequence.packages);
318
+ if (packages.length > 1) {
319
+ switch (distro.familyId) {
320
+ case 'alpine': {
321
+ await this.packagesInstall(this.materials.sequence.packages, 'packages', `apk add`);
322
+ break;
323
+ }
324
+ case 'archlinux': {
325
+ await this.packagesInstall(this.materials.sequence.packages, 'packages', `pacman -Sy --noconfirm`);
326
+ break;
327
+ }
328
+ case 'debian': {
329
+ await this.packagesInstall(packages);
330
+ break;
331
+ }
332
+ case 'fedora': {
333
+ await this.packagesInstall(this.materials.sequence.packages, 'packages', `dnf install -y`);
334
+ break;
335
+ }
336
+ case 'opensuse': {
337
+ // Quanto mi è costato
338
+ // await this.packagesInstall(this.materials.sequence.packages, 'packages', `zypper install --no-confirm`)
339
+ await this.packagesInstall(this.materials.sequence.packages, 'packages', `zypper install --no-confirm`);
340
+ break;
341
+ }
342
+ }
343
+ }
344
+ }
345
+ /**
346
+ * sequence/packages_python
347
+ */
348
+ if (this.materials.sequence.packages_python !== undefined && Array.isArray(this.materials.sequence.packages_python)) {
349
+ let cmd = 'pip install ';
350
+ let pip = '';
351
+ for (const elem of this.materials.sequence.packages_python) {
352
+ cmd += ` ${elem}`;
353
+ pip += `, ${elem}`;
354
+ }
355
+ step = `installing python packages pip ${pip.slice(2)}`;
356
+ Utils.warning(step);
357
+ await exec(cmd, this.echo);
358
+ }
359
+ /**
360
+ * sequence/accessories
361
+ */
362
+ if (!no_accessories) {
363
+ if (this.materials.sequence.accessories !== undefined && Array.isArray(this.materials.sequence.accessories)) {
364
+ step = 'wearing accessories';
365
+ for (const elem of this.materials.sequence.accessories) {
366
+ if ((elem === 'firmwares' || elem === './firmwares') && no_firmwares) {
367
+ continue;
368
+ }
369
+ if (elem.slice(0, 2) === './') {
370
+ // local accessory
371
+ const tailor = new Tailor(`${this.costume}/${elem.slice(2)}`, 'accessory');
372
+ await tailor.prepare(verbose);
373
+ }
374
+ else {
375
+ // global accessory
376
+ const tailor = new Tailor(`${this.wardrobe}/accessories/${elem}`, 'accessory');
377
+ await tailor.prepare(verbose);
378
+ }
379
+ }
380
+ }
381
+ } // no-accessories
382
+ } // end sequence
383
+ /**
384
+ * customize
385
+ */
386
+ if (this.materials.finalize !== undefined) {
387
+ /**
388
+ * finalize/customize
389
+ */
390
+ if (this.materials.finalize.customize && fs.existsSync(`/${this.costume}/sysroot`)) {
391
+ step = `finalize/customize: copying ${this.costume}/sysroot/ to /`;
392
+ Utils.warning(step);
393
+ let cmd = `rsync -avx ${this.costume}/sysroot/* / ${this.toNull}`;
394
+ await exec(cmd, this.echo);
395
+ // chown
396
+ cmd = `chown root:root /etc/sudoers.d /etc/skel -R`;
397
+ await exec(cmd, this.echo);
398
+ /**
399
+ * Copyng skel in /home/user
400
+ */
401
+ if (fs.existsSync(`${this.costume}/sysroot/etc/skel`)) {
402
+ const user = await Utils.getPrimaryUser();
403
+ step = `finalize/customize: copying skel in /home/${user}/`;
404
+ Utils.warning(step);
405
+ cmd = `rsync -avx ${this.costume}/sysroot/etc/skel/.config /home/${user}/ ${this.toNull}`;
406
+ await exec(cmd, this.echo);
407
+ await exec(`chown ${user}:${user} /home/${user}/ -R`);
408
+ }
409
+ }
410
+ /**
411
+ * finalize/cmds
412
+ */
413
+ if (this.materials.finalize.cmds !== undefined && Array.isArray(this.materials.finalize.cmds)) {
414
+ step = 'finalize/commands';
415
+ Utils.warning(step);
416
+ for (const cmd of this.materials.finalize.cmds) {
417
+ if (fs.existsSync(`${this.costume}/${cmd}`)) {
418
+ // Qui passiamo ${this.materials.name}
419
+ await exec(`${this.costume}/${cmd} ${this.materials.name}`, Utils.setEcho(true));
420
+ }
421
+ else {
422
+ // exec cmd real env
423
+ await exec(`${cmd}`, Utils.setEcho(true));
424
+ }
425
+ }
426
+ }
427
+ }
428
+ // show log
429
+ if (fs.existsSync(this.log)) {
430
+ await exec(`cat ${this.log}`);
431
+ }
432
+ /**
433
+ * reboot
434
+ */
435
+ if (this.materials.reboot) {
436
+ Utils.warning('Reboot');
437
+ await Utils.pressKeyToExit('system need to reboot', true);
438
+ await exec('reboot');
439
+ }
440
+ else {
441
+ console.log(`You look good with: ${this.materials.name}`);
442
+ }
443
+ }
444
+ /**
445
+ *
446
+ * @param packages
447
+ * @param verbose
448
+ * @param section
449
+ * @returns
450
+ */
451
+ async packagesExists(wanted) {
452
+ Utils.warning(`checking packages exists ${this.costume}`);
453
+ wanted.sort();
454
+ const distro = new Distro();
455
+ let cmd = "";
456
+ if (distro.familyId === "alpine") {
457
+ cmd = `apk search | awk -F'-[0-9]' '{print $1}' | sort -u`;
458
+ }
459
+ else if (distro.familyId === "archlinux") {
460
+ cmd = `pacman -S --list | awk '{print $2}'`;
461
+ }
462
+ else if (distro.familyId === "debian") {
463
+ // cmd=`apt-cache --no-generate pkgnames`
464
+ cmd = `apt-cache pkgnames`;
465
+ }
466
+ else if (distro.familyId === 'fedora') {
467
+ cmd = `dnf list --available | awk '{print $1}' | sed 's/\.[^.]*$//'`;
468
+ }
469
+ else if (distro.familyId === 'opensuse') { //controllare
470
+ // questo funziona diretto
471
+ cmd = `zypper --non-interactive packages | cut -d '|' -f 3 | sed '1,2d' | sed '/^$/d' | sort -u`;
472
+ }
473
+ let available = [];
474
+ const result = await exec(cmd, { capture: true, echo: false, ignore: false });
475
+ // trim di tutto per eseguire il confronto
476
+ available = result.data.split('\n').map(line => line.trim());
477
+ // precedente
478
+ // available = (await exec(cmd, { capture: true, echo: false, ignore: false })).data.split('\n')
479
+ available.sort();
480
+ wanted.sort();
481
+ let exists = [];
482
+ let not_exists = [];
483
+ for (const elem of wanted) {
484
+ if (available.includes(elem)) {
485
+ exists.push(elem);
486
+ }
487
+ else {
488
+ not_exists.push(elem);
489
+ fs.appendFileSync(this.log, `- ${elem}\n`);
490
+ }
491
+ }
492
+ if (not_exists.length > 0) {
493
+ console.log(`${this.materials.name}, ${not_exists.length} following packages was not found:`);
494
+ for (const elem of not_exists) {
495
+ console.log(`-${elem}`);
496
+ }
497
+ console.log();
498
+ console.log("Wait 3 seconds");
499
+ await sleep(3000);
500
+ }
501
+ return exists;
502
+ }
503
+ /**
504
+ * - check if every package if installed
505
+ * - if find any packages to install, install it
506
+ */
507
+ async packagesInstall(packages, comment = 'packages', cmd = 'apt-get install -yqq ') {
508
+ Utils.warning(`installing existing packages ${this.costume}`);
509
+ if (packages[0] !== null) {
510
+ const elements = [];
511
+ let strElements = '';
512
+ for (const elem of packages) {
513
+ elements.push(elem);
514
+ cmd += ` ${elem}`;
515
+ strElements += `, ${elem}`;
516
+ }
517
+ if (elements.length > 0) {
518
+ let step = `installing ${comment}: `;
519
+ if (!this.verbose) {
520
+ step += strElements.slice(2);
521
+ }
522
+ /**
523
+ * prova 3 volte
524
+ */
525
+ const limit = 3;
526
+ for (let tempts = 1; tempts < limit; tempts++) {
527
+ Utils.titles(step);
528
+ Utils.warning(`tempts ${tempts} of ${limit}`);
529
+ if (await this.tryCheckSuccess(cmd, this.echo)) {
530
+ break;
531
+ }
532
+ }
533
+ }
534
+ }
535
+ }
536
+ /**
537
+ *
538
+ * @param cmd
539
+ * @param echo
540
+ * @returns
541
+ */
542
+ async tryCheckSuccess(cmd, echo) {
543
+ let success = false;
544
+ try {
545
+ await exec(cmd, Utils.setEcho(true));
546
+ success = true;
547
+ }
548
+ catch {
549
+ success = false;
550
+ }
551
+ return success;
552
+ }
553
+ }
554
+ /**
555
+ *
556
+ * @param ms
557
+ * @returns
558
+ */
559
+ function sleep(ms = 0) {
560
+ return new Promise((resolve) => {
561
+ setTimeout(resolve, ms);
562
+ });
563
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * ./src/classes/tools.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
+ interface IEggsConfigTools {
9
+ localPathIso: string;
10
+ remoteHost: string;
11
+ remotePathPackages: string;
12
+ remotePathIso: string;
13
+ remoteUser: string;
14
+ }
15
+ /**
16
+ * Utils: general porpourse utils
17
+ * @remarks all the utilities
18
+ */
19
+ export default class Tools {
20
+ config: IEggsConfigTools;
21
+ snapshot_dir: string;
22
+ snapshot_name: string;
23
+ tools_yaml: string;
24
+ loadSettings(): Promise<boolean>;
25
+ }
26
+ export {};
@@ -0,0 +1,50 @@
1
+ /**
2
+ * ./src/classes/tools.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
+ import yaml from 'js-yaml';
9
+ import fs from 'node:fs';
10
+ import Settings from './settings.js';
11
+ import Utils from './utils.js';
12
+ /**
13
+ * Utils: general porpourse utils
14
+ * @remarks all the utilities
15
+ */
16
+ export default class Tools {
17
+ config = {};
18
+ snapshot_dir = '';
19
+ snapshot_name = '';
20
+ tools_yaml = '/etc/penguins-eggs.d/tools.yaml';
21
+ /*
22
+ * Load configuration from /etc/penguins-eggs.yaml
23
+ * @returns {boolean} Success
24
+ */
25
+ async loadSettings() {
26
+ let foundSettings = false;
27
+ if (fs.existsSync(this.tools_yaml)) {
28
+ foundSettings = true;
29
+ const loaded = yaml.load(fs.readFileSync(this.tools_yaml, 'utf8'));
30
+ this.config.remoteHost = loaded.remoteHost;
31
+ this.config.remoteUser = loaded.remoteUser;
32
+ this.config.remotePathPackages = loaded.remotePathPackages;
33
+ this.config.remotePathIso = loaded.remotePathIso;
34
+ this.config.localPathIso = loaded.localPathIso;
35
+ /**
36
+ * da eggs
37
+ */
38
+ const settings = new Settings();
39
+ settings.load();
40
+ this.snapshot_dir = settings.config.snapshot_dir;
41
+ const prefix = settings.config.snapshot_prefix;
42
+ this.snapshot_name = prefix + settings.config.snapshot_basename + '_' + Utils.uefiArch();
43
+ }
44
+ else {
45
+ console.log(`Can't find: ${this.tools_yaml}`);
46
+ process.exit(1);
47
+ }
48
+ return foundSettings;
49
+ }
50
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * ./src/classes/users.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
+ /**
9
+ *
10
+ */
11
+ export default class Users {
12
+ gecos: string;
13
+ gid: string;
14
+ hasHome: boolean;
15
+ home: string;
16
+ login: string;
17
+ password: string;
18
+ saveIt: boolean;
19
+ shell: string;
20
+ size: number;
21
+ uid: string;
22
+ constructor(login: string, password: string, uid: string, gid: string, gecos: string, home: string, shell: string);
23
+ /**
24
+ * getSize
25
+ * @param verbose
26
+ */
27
+ getValues(): Promise<void>;
28
+ }