penguins-eggs 25.10.23 → 25.10.24

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 (461) hide show
  1. package/.oclif.manifest.json +17 -3
  2. package/README.md +32 -30
  3. package/README.pdf +1008 -1045
  4. package/addons/eggs/theme/livecd/{grub.theme.cfg → full.grub.theme.cfg} +1 -1
  5. package/addons/eggs/theme/livecd/{isolinux.theme.cfg → full.isolinux.theme.cfg} +1 -1
  6. package/addons/eggs/theme/livecd/generic-splash.png +0 -0
  7. package/addons/eggs/theme/livecd/generic.grub.main.cfg +29 -0
  8. package/addons/eggs/theme/livecd/generic.grub.theme.cfg +67 -0
  9. package/addons/eggs/theme/livecd/generic.isolinux.main.cfg +34 -0
  10. package/addons/eggs/theme/livecd/generic.isolinux.theme.cfg +34 -0
  11. package/addons/eggs/theme/livecd/simple.grub.main.cfg +29 -0
  12. package/addons/eggs/theme/livecd/simple.grub.theme.cfg +67 -0
  13. package/addons/eggs/theme/livecd/{isolinux.main.simple.cfg → simple.isolinux.main.cfg} +1 -1
  14. package/addons/eggs/theme/livecd/simple.isolinux.theme.cfg +47 -0
  15. package/dist/classes/bleach.d.ts +37 -0
  16. package/dist/classes/bleach.js +148 -0
  17. package/dist/classes/cli-autologin.d.ts +52 -0
  18. package/dist/classes/cli-autologin.js +252 -0
  19. package/dist/classes/compressors.d.ts +54 -0
  20. package/dist/classes/compressors.js +109 -0
  21. package/dist/classes/daddy.d.ts +26 -0
  22. package/dist/classes/daddy.js +175 -0
  23. package/dist/classes/distro.d.ts +32 -0
  24. package/dist/classes/distro.js +363 -0
  25. package/dist/classes/diversions.d.ts +53 -0
  26. package/dist/classes/diversions.js +131 -0
  27. package/dist/classes/incubation/branding.d.ts +17 -0
  28. package/dist/classes/incubation/branding.js +85 -0
  29. package/dist/classes/incubation/customize/customize-partitions.d.ts +4 -0
  30. package/dist/classes/incubation/customize/customize-partitions.js +29 -0
  31. package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +1 -0
  32. package/dist/classes/incubation/fisherman-helper/initcpio.js +69 -0
  33. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  34. package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
  35. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  36. package/dist/classes/incubation/fisherman-helper/settings.js +116 -0
  37. package/dist/classes/incubation/fisherman.d.ts +71 -0
  38. package/dist/classes/incubation/fisherman.js +281 -0
  39. package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
  40. package/dist/classes/incubation/incubator.d/alpine.js +78 -0
  41. package/dist/classes/incubation/incubator.d/archlinux.d.ts +32 -0
  42. package/dist/classes/incubation/incubator.d/archlinux.js +82 -0
  43. package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
  44. package/dist/classes/incubation/incubator.d/bionic.js +83 -0
  45. package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
  46. package/dist/classes/incubation/incubator.d/buster.js +101 -0
  47. package/dist/classes/incubation/incubator.d/fedora.d.ts +32 -0
  48. package/dist/classes/incubation/incubator.d/fedora.js +81 -0
  49. package/dist/classes/incubation/incubator.d/focal.d.ts +32 -0
  50. package/dist/classes/incubation/incubator.d/focal.js +85 -0
  51. package/dist/classes/incubation/incubator.d/manjaro.d.ts +32 -0
  52. package/dist/classes/incubation/incubator.d/manjaro.js +82 -0
  53. package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
  54. package/dist/classes/incubation/incubator.d/noble.js +102 -0
  55. package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
  56. package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
  57. package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
  58. package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
  59. package/dist/classes/incubation/incubator.d/trixie.d.ts +32 -0
  60. package/dist/classes/incubation/incubator.d/trixie.js +98 -0
  61. package/dist/classes/incubation/incubator.d.ts +48 -0
  62. package/dist/classes/incubation/incubator.js +378 -0
  63. package/dist/classes/incubation/installer.d.ts +13 -0
  64. package/dist/classes/incubation/installer.js +52 -0
  65. package/dist/classes/keyboards.d.ts +50 -0
  66. package/dist/classes/keyboards.js +287 -0
  67. package/dist/classes/locales.d.ts +21 -0
  68. package/dist/classes/locales.js +77 -0
  69. package/dist/classes/network.d.ts +37 -0
  70. package/dist/classes/network.js +98 -0
  71. package/dist/classes/ovary.d/bind-live-fs.d.ts +18 -0
  72. package/dist/classes/ovary.d/bind-live-fs.js +185 -0
  73. package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
  74. package/dist/classes/ovary.d/bind-vfs.js +37 -0
  75. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
  76. package/dist/classes/ovary.d/create-xdg-autostart.js +194 -0
  77. package/dist/classes/ovary.d/edit-live-fs.d.ts +20 -0
  78. package/dist/classes/ovary.d/edit-live-fs.js +239 -0
  79. package/dist/classes/ovary.d/fertilization.d.ts +12 -0
  80. package/dist/classes/ovary.d/fertilization.js +53 -0
  81. package/dist/classes/ovary.d/finished.d.ts +13 -0
  82. package/dist/classes/ovary.d/finished.js +40 -0
  83. package/dist/classes/ovary.d/initrd.d.ts +21 -0
  84. package/dist/classes/ovary.d/initrd.js +96 -0
  85. package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
  86. package/dist/classes/ovary.d/kernel-copy.js +22 -0
  87. package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
  88. package/dist/classes/ovary.d/live-create-structure.js +70 -0
  89. package/dist/classes/ovary.d/luks-get-password.d.ts +12 -0
  90. package/dist/classes/ovary.d/luks-get-password.js +58 -0
  91. package/dist/classes/ovary.d/luks-home-support.d.ts +12 -0
  92. package/dist/classes/ovary.d/luks-home-support.js +75 -0
  93. package/dist/classes/ovary.d/luks-home.d.ts +15 -0
  94. package/dist/classes/ovary.d/luks-home.js +152 -0
  95. package/dist/classes/ovary.d/luks-root-initrd.d.ts +17 -0
  96. package/dist/classes/ovary.d/luks-root-initrd.js +213 -0
  97. package/dist/classes/ovary.d/luks-root.d.ts +15 -0
  98. package/dist/classes/ovary.d/luks-root.js +151 -0
  99. package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
  100. package/dist/classes/ovary.d/make-dot-disk.js +71 -0
  101. package/dist/classes/ovary.d/make-efi.d.ts +14 -0
  102. package/dist/classes/ovary.d/make-efi.js +290 -0
  103. package/dist/classes/ovary.d/make-iso.d.ts +13 -0
  104. package/dist/classes/ovary.d/make-iso.js +45 -0
  105. package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
  106. package/dist/classes/ovary.d/make-squashfs.js +111 -0
  107. package/dist/classes/ovary.d/merged.d.ts +27 -0
  108. package/dist/classes/ovary.d/merged.js +78 -0
  109. package/dist/classes/ovary.d/produce.d.ts +23 -0
  110. package/dist/classes/ovary.d/produce.js +348 -0
  111. package/dist/classes/ovary.d/rexec.d.ts +13 -0
  112. package/dist/classes/ovary.d/rexec.js +34 -0
  113. package/dist/classes/ovary.d/syslinux.d.ts +12 -0
  114. package/dist/classes/ovary.d/syslinux.js +95 -0
  115. package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
  116. package/dist/classes/ovary.d/user-create-live.js +97 -0
  117. package/dist/classes/ovary.d/users-remove.d.ts +9 -0
  118. package/dist/classes/ovary.d/users-remove.js +38 -0
  119. package/dist/classes/ovary.d/xorriso-command.d.ts +14 -0
  120. package/dist/classes/ovary.d/xorriso-command.js +120 -0
  121. package/dist/classes/ovary.d.ts +105 -0
  122. package/dist/classes/ovary.js +116 -0
  123. package/dist/classes/pacman.d/alpine.d.ts +56 -0
  124. package/dist/classes/pacman.d/alpine.js +167 -0
  125. package/dist/classes/pacman.d/archlinux.d.ts +62 -0
  126. package/dist/classes/pacman.d/archlinux.js +128 -0
  127. package/dist/classes/pacman.d/debian.d.ts +65 -0
  128. package/dist/classes/pacman.d/debian.js +143 -0
  129. package/dist/classes/pacman.d/fedora.d.ts +53 -0
  130. package/dist/classes/pacman.d/fedora.js +107 -0
  131. package/dist/classes/pacman.d/openmamba.d.ts +52 -0
  132. package/dist/classes/pacman.d/openmamba.js +106 -0
  133. package/dist/classes/pacman.d/opensuse.d.ts +53 -0
  134. package/dist/classes/pacman.d/opensuse.js +109 -0
  135. package/dist/classes/pacman.d.ts +139 -0
  136. package/dist/classes/pacman.js +683 -0
  137. package/dist/classes/pve-live.d.ts +17 -0
  138. package/dist/classes/pve-live.js +52 -0
  139. package/dist/classes/pxe.d.ts +76 -0
  140. package/dist/classes/pxe.js +353 -0
  141. package/dist/classes/settings.d.ts +52 -0
  142. package/dist/classes/settings.js +185 -0
  143. package/dist/classes/sources_list.d.ts +28 -0
  144. package/dist/classes/sources_list.js +89 -0
  145. package/dist/classes/systemctl.d.ts +47 -0
  146. package/dist/classes/systemctl.js +86 -0
  147. package/dist/classes/tailor.d.ts +50 -0
  148. package/dist/classes/tailor.js +563 -0
  149. package/dist/classes/tools.d.ts +26 -0
  150. package/dist/classes/tools.js +50 -0
  151. package/dist/classes/users.d.ts +28 -0
  152. package/dist/classes/users.js +143 -0
  153. package/dist/classes/utils.d/kernel.d.ts +39 -0
  154. package/dist/classes/utils.d/kernel.js +206 -0
  155. package/dist/classes/utils.d.ts +330 -0
  156. package/dist/classes/utils.js +968 -0
  157. package/dist/classes/xdg.d.ts +45 -0
  158. package/dist/classes/xdg.js +337 -0
  159. package/dist/classes/yolk.d.ts +33 -0
  160. package/dist/classes/yolk.js +114 -0
  161. package/dist/commands/adapt.d.ts +17 -0
  162. package/dist/commands/adapt.js +33 -0
  163. package/dist/commands/analyze.d.ts +26 -0
  164. package/dist/commands/analyze.js +95 -0
  165. package/dist/commands/calamares.d.ts +29 -0
  166. package/dist/commands/calamares.js +112 -0
  167. package/dist/commands/config.d.ts +35 -0
  168. package/dist/commands/config.js +120 -0
  169. package/dist/commands/cuckoo.d.ts +17 -0
  170. package/dist/commands/cuckoo.js +61 -0
  171. package/dist/commands/dad.d.ts +21 -0
  172. package/dist/commands/dad.js +47 -0
  173. package/dist/commands/export/iso.d.ts +19 -0
  174. package/dist/commands/export/iso.js +55 -0
  175. package/dist/commands/export/pkg.d.ts +29 -0
  176. package/dist/commands/export/pkg.js +173 -0
  177. package/dist/commands/export/tarballs.d.ts +27 -0
  178. package/dist/commands/export/tarballs.js +79 -0
  179. package/dist/commands/install.d.ts +39 -0
  180. package/dist/commands/install.js +113 -0
  181. package/dist/commands/kill.d.ts +24 -0
  182. package/dist/commands/kill.js +50 -0
  183. package/dist/commands/love.d.ts +25 -0
  184. package/dist/commands/love.js +118 -0
  185. package/dist/commands/mom.d.ts +16 -0
  186. package/dist/commands/mom.js +30 -0
  187. package/dist/commands/pods.d.ts +22 -0
  188. package/dist/commands/pods.js +92 -0
  189. package/dist/commands/produce.d.ts +37 -0
  190. package/dist/commands/produce.js +232 -0
  191. package/dist/commands/status.d.ts +23 -0
  192. package/dist/commands/status.js +31 -0
  193. package/dist/commands/tools/clean.d.ts +18 -0
  194. package/dist/commands/tools/clean.js +37 -0
  195. package/dist/commands/tools/repo.d.ts +31 -0
  196. package/dist/commands/tools/repo.js +246 -0
  197. package/dist/commands/tools/skel.d.ts +18 -0
  198. package/dist/commands/tools/skel.js +44 -0
  199. package/dist/commands/tools/stat.d.ts +31 -0
  200. package/dist/commands/tools/stat.js +70 -0
  201. package/dist/commands/tools/yolk.d.ts +24 -0
  202. package/dist/commands/tools/yolk.js +45 -0
  203. package/dist/commands/update.d.ts +46 -0
  204. package/dist/commands/update.js +238 -0
  205. package/dist/commands/wardrobe/get.d.ts +23 -0
  206. package/dist/commands/wardrobe/get.js +52 -0
  207. package/dist/commands/wardrobe/list.d.ts +24 -0
  208. package/dist/commands/wardrobe/list.js +125 -0
  209. package/dist/commands/wardrobe/show.d.ts +25 -0
  210. package/dist/commands/wardrobe/show.js +97 -0
  211. package/dist/commands/wardrobe/wear.d.ts +26 -0
  212. package/dist/commands/wardrobe/wear.js +84 -0
  213. package/dist/dhcpd-proxy/classes/packet.d.ts +36 -0
  214. package/dist/dhcpd-proxy/classes/packet.js +124 -0
  215. package/dist/dhcpd-proxy/index.d.ts +4 -0
  216. package/dist/dhcpd-proxy/index.js +4 -0
  217. package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +45 -0
  218. package/dist/dhcpd-proxy/interfaces/i-pxe.js +1 -0
  219. package/dist/dhcpd-proxy/lib/packet/converters.d.ts +11 -0
  220. package/dist/dhcpd-proxy/lib/packet/converters.js +395 -0
  221. package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +10 -0
  222. package/dist/dhcpd-proxy/lib/packet/message-types.js +12 -0
  223. package/dist/dhcpd-proxy/lib/packet/options.d.ts +8 -0
  224. package/dist/dhcpd-proxy/lib/packet/options.js +264 -0
  225. package/dist/dhcpd-proxy/lib/sprintf.d.ts +6 -0
  226. package/dist/dhcpd-proxy/lib/sprintf.js +130 -0
  227. package/dist/dhcpd-proxy/lib/utils.d.ts +126 -0
  228. package/dist/dhcpd-proxy/lib/utils.js +255 -0
  229. package/dist/dhcpd-proxy/simple-proxy.d.ts +11 -0
  230. package/dist/dhcpd-proxy/simple-proxy.js +118 -0
  231. package/dist/index.d.ts +8 -0
  232. package/dist/index.js +8 -0
  233. package/dist/interfaces/calamares/i-calamares-bootloader.d.ts +23 -0
  234. package/dist/interfaces/calamares/i-calamares-bootloader.js +7 -0
  235. package/dist/interfaces/calamares/i-calamares-branding.d.ts +46 -0
  236. package/dist/interfaces/calamares/i-calamares-branding.js +1 -0
  237. package/dist/interfaces/calamares/i-calamares-displaymanager.d.ts +34 -0
  238. package/dist/interfaces/calamares/i-calamares-displaymanager.js +1 -0
  239. package/dist/interfaces/calamares/i-calamares-finished.d.ts +14 -0
  240. package/dist/interfaces/calamares/i-calamares-finished.js +1 -0
  241. package/dist/interfaces/calamares/i-calamares-packages.d.ts +26 -0
  242. package/dist/interfaces/calamares/i-calamares-packages.js +1 -0
  243. package/dist/interfaces/calamares/i-calamares-partitions.d.ts +39 -0
  244. package/dist/interfaces/calamares/i-calamares-partitions.js +1 -0
  245. package/dist/interfaces/calamares/i-calamares-settings.d.ts +36 -0
  246. package/dist/interfaces/calamares/i-calamares-settings.js +1 -0
  247. package/dist/interfaces/i-addons.d.ts +12 -0
  248. package/dist/interfaces/i-addons.js +8 -0
  249. package/dist/interfaces/i-analyze.d.ts +17 -0
  250. package/dist/interfaces/i-analyze.js +17 -0
  251. package/dist/interfaces/i-app.d.ts +14 -0
  252. package/dist/interfaces/i-app.js +8 -0
  253. package/dist/interfaces/i-config-tools.d.ts +15 -0
  254. package/dist/interfaces/i-config-tools.js +8 -0
  255. package/dist/interfaces/i-devices.d.ts +20 -0
  256. package/dist/interfaces/i-devices.js +8 -0
  257. package/dist/interfaces/i-distro.d.ts +23 -0
  258. package/dist/interfaces/i-distro.js +8 -0
  259. package/dist/interfaces/i-drive-list.d.ts +33 -0
  260. package/dist/interfaces/i-drive-list.js +8 -0
  261. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  262. package/dist/interfaces/i-eggs-config.js +8 -0
  263. package/dist/interfaces/i-excludes.d.ts +14 -0
  264. package/dist/interfaces/i-excludes.js +8 -0
  265. package/dist/interfaces/i-exec.d.ts +11 -0
  266. package/dist/interfaces/i-exec.js +8 -0
  267. package/dist/interfaces/i-initrd.d.ts +13 -0
  268. package/dist/interfaces/i-initrd.js +8 -0
  269. package/dist/interfaces/i-install.d.ts +16 -0
  270. package/dist/interfaces/i-install.js +8 -0
  271. package/dist/interfaces/i-installer.d.ts +17 -0
  272. package/dist/interfaces/i-installer.js +8 -0
  273. package/dist/interfaces/i-luks-passphrase.d.ts +11 -0
  274. package/dist/interfaces/i-luks-passphrase.js +8 -0
  275. package/dist/interfaces/i-materia.d.ts +36 -0
  276. package/dist/interfaces/i-materia.js +8 -0
  277. package/dist/interfaces/i-net.d.ts +16 -0
  278. package/dist/interfaces/i-net.js +8 -0
  279. package/dist/interfaces/i-os-release.d.ts +5 -0
  280. package/dist/interfaces/i-os-release.js +1 -0
  281. package/dist/interfaces/i-packages.d.ts +16 -0
  282. package/dist/interfaces/i-packages.js +8 -0
  283. package/dist/interfaces/i-partitions.d.ts +16 -0
  284. package/dist/interfaces/i-partitions.js +8 -0
  285. package/dist/interfaces/i-pxe.d.ts +45 -0
  286. package/dist/interfaces/i-pxe.js +1 -0
  287. package/dist/interfaces/i-remix.d.ts +21 -0
  288. package/dist/interfaces/i-remix.js +8 -0
  289. package/dist/interfaces/i-settings.d.ts +33 -0
  290. package/dist/interfaces/i-settings.js +8 -0
  291. package/dist/interfaces/i-user.d.ts +14 -0
  292. package/dist/interfaces/i-user.js +8 -0
  293. package/dist/interfaces/i-workdir.d.ts +14 -0
  294. package/dist/interfaces/i-workdir.js +8 -0
  295. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  296. package/dist/interfaces/i-xkb-model.js +8 -0
  297. package/dist/interfaces/index.d.ts +26 -0
  298. package/dist/interfaces/index.js +8 -0
  299. package/dist/krill/classes/cfs.d.ts +17 -0
  300. package/dist/krill/classes/cfs.js +39 -0
  301. package/dist/krill/classes/krill_enums.d.ts +37 -0
  302. package/dist/krill/classes/krill_enums.js +41 -0
  303. package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
  304. package/dist/krill/classes/prepare.d/confirm.js +30 -0
  305. package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
  306. package/dist/krill/classes/prepare.d/keyboard.js +62 -0
  307. package/dist/krill/classes/prepare.d/location.d.ts +17 -0
  308. package/dist/krill/classes/prepare.d/location.js +59 -0
  309. package/dist/krill/classes/prepare.d/network.d.ts +14 -0
  310. package/dist/krill/classes/prepare.d/network.js +68 -0
  311. package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
  312. package/dist/krill/classes/prepare.d/partitions.js +86 -0
  313. package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
  314. package/dist/krill/classes/prepare.d/summary.js +72 -0
  315. package/dist/krill/classes/prepare.d/users.d.ts +6 -0
  316. package/dist/krill/classes/prepare.d/users.js +63 -0
  317. package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
  318. package/dist/krill/classes/prepare.d/welcome.js +30 -0
  319. package/dist/krill/classes/prepare.d.ts +89 -0
  320. package/dist/krill/classes/prepare.js +319 -0
  321. package/dist/krill/classes/sequence.d/add_user.d.ts +20 -0
  322. package/dist/krill/classes/sequence.d/add_user.js +77 -0
  323. package/dist/krill/classes/sequence.d/bootloader.d.ts +14 -0
  324. package/dist/krill/classes/sequence.d/bootloader.js +117 -0
  325. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +14 -0
  326. package/dist/krill/classes/sequence.d/bootloader_config.js +192 -0
  327. package/dist/krill/classes/sequence.d/change_password.d.ts +15 -0
  328. package/dist/krill/classes/sequence.d/change_password.js +18 -0
  329. package/dist/krill/classes/sequence.d/del_live_user.d.ts +14 -0
  330. package/dist/krill/classes/sequence.d/del_live_user.js +39 -0
  331. package/dist/krill/classes/sequence.d/fstab.d.ts +14 -0
  332. package/dist/krill/classes/sequence.d/fstab.js +177 -0
  333. package/dist/krill/classes/sequence.d/grubcfg.d.ts +17 -0
  334. package/dist/krill/classes/sequence.d/grubcfg.js +35 -0
  335. package/dist/krill/classes/sequence.d/hostname.d.ts +13 -0
  336. package/dist/krill/classes/sequence.d/hostname.js +50 -0
  337. package/dist/krill/classes/sequence.d/initramfs.d.ts +13 -0
  338. package/dist/krill/classes/sequence.d/initramfs.js +54 -0
  339. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +14 -0
  340. package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
  341. package/dist/krill/classes/sequence.d/locale.d.ts +13 -0
  342. package/dist/krill/classes/sequence.d/locale.js +91 -0
  343. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +10 -0
  344. package/dist/krill/classes/sequence.d/locale_cfg.js +58 -0
  345. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +14 -0
  346. package/dist/krill/classes/sequence.d/m_keyboard.js +58 -0
  347. package/dist/krill/classes/sequence.d/machine_id.d.ts +15 -0
  348. package/dist/krill/classes/sequence.d/machine_id.js +33 -0
  349. package/dist/krill/classes/sequence.d/mkfs.d.ts +15 -0
  350. package/dist/krill/classes/sequence.d/mkfs.js +88 -0
  351. package/dist/krill/classes/sequence.d/mount_fs.d.ts +17 -0
  352. package/dist/krill/classes/sequence.d/mount_fs.js +68 -0
  353. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +17 -0
  354. package/dist/krill/classes/sequence.d/mount_vfs.js +59 -0
  355. package/dist/krill/classes/sequence.d/network_cfg.d.ts +19 -0
  356. package/dist/krill/classes/sequence.d/network_cfg.js +73 -0
  357. package/dist/krill/classes/sequence.d/packages.d.ts +14 -0
  358. package/dist/krill/classes/sequence.d/packages.js +111 -0
  359. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +17 -0
  360. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
  361. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +16 -0
  362. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +51 -0
  363. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
  364. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +77 -0
  365. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
  366. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +33 -0
  367. package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
  368. package/dist/krill/classes/sequence.d/partition.js +84 -0
  369. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +13 -0
  370. package/dist/krill/classes/sequence.d/remove_installer_link.js +35 -0
  371. package/dist/krill/classes/sequence.d/umount.d.ts +14 -0
  372. package/dist/krill/classes/sequence.d/umount.js +28 -0
  373. package/dist/krill/classes/sequence.d/unpackfs.d.ts +13 -0
  374. package/dist/krill/classes/sequence.d/unpackfs.js +20 -0
  375. package/dist/krill/classes/sequence.d.ts +134 -0
  376. package/dist/krill/classes/sequence.js +400 -0
  377. package/dist/krill/components/finished.d.ts +16 -0
  378. package/dist/krill/components/finished.js +56 -0
  379. package/dist/krill/components/information.d.ts +8 -0
  380. package/dist/krill/components/information.js +162 -0
  381. package/dist/krill/components/install.d.ts +15 -0
  382. package/dist/krill/components/install.js +60 -0
  383. package/dist/krill/components/keyboard.d.ts +16 -0
  384. package/dist/krill/components/keyboard.js +54 -0
  385. package/dist/krill/components/location.d.ts +16 -0
  386. package/dist/krill/components/location.js +59 -0
  387. package/dist/krill/components/network.d.ts +19 -0
  388. package/dist/krill/components/network.js +65 -0
  389. package/dist/krill/components/partitions.d.ts +18 -0
  390. package/dist/krill/components/partitions.js +89 -0
  391. package/dist/krill/components/steps.d.ts +13 -0
  392. package/dist/krill/components/steps.js +148 -0
  393. package/dist/krill/components/summary.d.ts +25 -0
  394. package/dist/krill/components/summary.js +77 -0
  395. package/dist/krill/components/title.d.ts +11 -0
  396. package/dist/krill/components/title.js +35 -0
  397. package/dist/krill/components/users.d.ts +24 -0
  398. package/dist/krill/components/users.js +80 -0
  399. package/dist/krill/components/welcome.d.ts +13 -0
  400. package/dist/krill/components/welcome.js +63 -0
  401. package/dist/krill/interfaces/i_krill.d.ts +44 -0
  402. package/dist/krill/interfaces/i_krill.js +8 -0
  403. package/dist/krill/interfaces/i_krill_config.d.ts +35 -0
  404. package/dist/krill/interfaces/i_krill_config.js +8 -0
  405. package/dist/krill/lib/get_address.d.ts +8 -0
  406. package/dist/krill/lib/get_address.js +23 -0
  407. package/dist/krill/lib/get_dns.d.ts +8 -0
  408. package/dist/krill/lib/get_dns.js +23 -0
  409. package/dist/krill/lib/get_domain.d.ts +8 -0
  410. package/dist/krill/lib/get_domain.js +23 -0
  411. package/dist/krill/lib/get_gateway.d.ts +8 -0
  412. package/dist/krill/lib/get_gateway.js +23 -0
  413. package/dist/krill/lib/get_hostname.d.ts +8 -0
  414. package/dist/krill/lib/get_hostname.js +23 -0
  415. package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
  416. package/dist/krill/lib/get_luks_passphrase.js +32 -0
  417. package/dist/krill/lib/get_netmask.d.ts +8 -0
  418. package/dist/krill/lib/get_netmask.js +23 -0
  419. package/dist/krill/lib/get_password.d.ts +8 -0
  420. package/dist/krill/lib/get_password.js +36 -0
  421. package/dist/krill/lib/get_userfullname.d.ts +8 -0
  422. package/dist/krill/lib/get_userfullname.js +23 -0
  423. package/dist/krill/lib/get_username.d.ts +8 -0
  424. package/dist/krill/lib/get_username.js +23 -0
  425. package/dist/krill/lib/select_address_type.d.ts +8 -0
  426. package/dist/krill/lib/select_address_type.js +24 -0
  427. package/dist/krill/lib/select_filesystem_type.d.ts +8 -0
  428. package/dist/krill/lib/select_filesystem_type.js +40 -0
  429. package/dist/krill/lib/select_installation_device.d.ts +8 -0
  430. package/dist/krill/lib/select_installation_device.js +40 -0
  431. package/dist/krill/lib/select_installation_mode.d.ts +9 -0
  432. package/dist/krill/lib/select_installation_mode.js +25 -0
  433. package/dist/krill/lib/select_interface.d.ts +8 -0
  434. package/dist/krill/lib/select_interface.js +24 -0
  435. package/dist/krill/lib/select_keyboard_layout.d.ts +11 -0
  436. package/dist/krill/lib/select_keyboard_layout.js +36 -0
  437. package/dist/krill/lib/select_keyboard_model.d.ts +11 -0
  438. package/dist/krill/lib/select_keyboard_model.js +34 -0
  439. package/dist/krill/lib/select_keyboard_option.d.ts +11 -0
  440. package/dist/krill/lib/select_keyboard_option.js +34 -0
  441. package/dist/krill/lib/select_keyboard_variant.d.ts +11 -0
  442. package/dist/krill/lib/select_keyboard_variant.js +35 -0
  443. package/dist/krill/lib/select_languages.d.ts +8 -0
  444. package/dist/krill/lib/select_languages.js +28 -0
  445. package/dist/krill/lib/select_regions.d.ts +8 -0
  446. package/dist/krill/lib/select_regions.js +24 -0
  447. package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
  448. package/dist/krill/lib/select_replaced_partition.js +31 -0
  449. package/dist/krill/lib/select_user_swap_choice.d.ts +9 -0
  450. package/dist/krill/lib/select_user_swap_choice.js +35 -0
  451. package/dist/krill/lib/select_zones.d.ts +8 -0
  452. package/dist/krill/lib/select_zones.js +518 -0
  453. package/dist/lib/kill_me_softly.d.ts +11 -0
  454. package/dist/lib/kill_me_softly.js +61 -0
  455. package/dist/lib/utils.d.ts +19 -0
  456. package/dist/lib/utils.js +65 -0
  457. package/package.json +3 -3
  458. package/scripts/_eggs +3 -1
  459. package/scripts/eggs.bash +2 -2
  460. /package/addons/eggs/theme/livecd/{grub.main.cfg → full.grub.main.cfg} +0 -0
  461. /package/addons/eggs/theme/livecd/{isolinux.main.full.cfg → full.isolinux.main.cfg} +0 -0
@@ -0,0 +1,45 @@
1
+ /**
2
+ * ./src/classes/xdg.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
+ * Xdg: xdg-user-dirs, etc
10
+ * @remarks all the utilities
11
+ */
12
+ export default class Xdg {
13
+ /**
14
+ *
15
+ * @param olduser
16
+ * @param newuser
17
+ * @param chroot
18
+ */
19
+ static autologin(olduser: string, newuser: string, chroot?: string): Promise<void>;
20
+ /**
21
+ *
22
+ * @param user
23
+ * @param chroot
24
+ * @param verbose
25
+ */
26
+ static create(user: string, chroot: string, traduce?: boolean, verbose?: boolean): Promise<void>;
27
+ /**
28
+ *
29
+ * @param chroot
30
+ * @param path
31
+ * @param verbose
32
+ */
33
+ static mk(chroot: string, path: string, verbose?: boolean): Promise<void>;
34
+ /**
35
+ * Copia della configurazione in /etc/skel
36
+ * @param user
37
+ * @param verbose
38
+ */
39
+ static skel(user: string, verbose?: boolean): Promise<void>;
40
+ /**
41
+ *
42
+ * @param xdg_dir
43
+ */
44
+ static traduce(xdg_dir?: string, traduce?: boolean): string;
45
+ }
@@ -0,0 +1,337 @@
1
+ /**
2
+ * ./src/classes/xdg.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 fs from 'node:fs';
9
+ import path from 'node:path';
10
+ import shx from 'shelljs';
11
+ // libraries
12
+ import { exec } from '../lib/utils.js';
13
+ import Distro from './distro.js';
14
+ import Pacman from './pacman.js';
15
+ import Utils from './utils.js';
16
+ const xdg_dirs = ['DESKTOP', 'DOWNLOAD', 'TEMPLATES', 'PUBLICSHARE', 'DOCUMENTS', 'MUSIC', 'PICTURES', 'VIDEOS'];
17
+ /**
18
+ * Xdg: xdg-user-dirs, etc
19
+ * @remarks all the utilities
20
+ */
21
+ export default class Xdg {
22
+ /**
23
+ *
24
+ * @param olduser
25
+ * @param newuser
26
+ * @param chroot
27
+ */
28
+ static async autologin(olduser, newuser, chroot = '/') {
29
+ // console.log("old: " + olduser, "new: " + newuser, "chroot: " + chroot)
30
+ if (Pacman.isInstalledGui()) {
31
+ /**
32
+ * SLIM & SLIMSKI
33
+ */
34
+ let slimConf = '';
35
+ if (Pacman.packageIsInstalled('slim')) {
36
+ slimConf = 'slim.conf';
37
+ if (fs.existsSync('/etc/slim.local.conf')) {
38
+ slimConf = 'slim.local.conf';
39
+ }
40
+ }
41
+ if (Pacman.packageIsInstalled('slimski')) {
42
+ slimConf = 'slimski.conf';
43
+ if (fs.existsSync('/etc/slimski.local.conf')) {
44
+ slimConf = 'slimski.local.conf';
45
+ }
46
+ }
47
+ if (slimConf !== '') {
48
+ let content = fs.readFileSync(`${chroot}/etc/${slimConf}`, 'utf8');
49
+ const regexAutoLogin = new RegExp(`auto_login\\s*no`, 'g');
50
+ content = content.replaceAll(regexAutoLogin, 'auto_login yes');
51
+ const regexDefaultUser = new RegExp(`default_user\\s*${olduser}`, 'g');
52
+ content = content.replace(regexDefaultUser, `default_user ${newuser}`);
53
+ fs.writeFileSync(`${chroot}/etc/${slimConf}`, content, 'utf8');
54
+ /**
55
+ * LIGHTDM
56
+ */
57
+ }
58
+ else if (Pacman.packageIsInstalled('lightdm')) {
59
+ const dc = `${chroot}/etc/lightdm/`;
60
+ const files = fs.readdirSync(dc);
61
+ for (const elem of files) {
62
+ const curFile = dc + elem;
63
+ if (!fs.statSync(`/${curFile}`).isDirectory()) {
64
+ let content = fs.readFileSync(curFile, 'utf8');
65
+ const find = '[Seat:*]';
66
+ if (content.includes(find)) {
67
+ const regex = new RegExp(`autologin-user\\s*=\\s*${olduser}`, 'g'); // remove spaces
68
+ content = content.replace(regex, `autologin-user=${newuser}`);
69
+ fs.writeFileSync(curFile, content, 'utf8');
70
+ }
71
+ }
72
+ }
73
+ }
74
+ else if (Pacman.packageIsInstalled('lxdm')) {
75
+ let lxdmConf = '/etc/lxdm/lxdm.conf';
76
+ if (fs.existsSync(lxdmConf)) {
77
+ let content = fs.readFileSync(lxdmConf, 'utf8');
78
+ const regex = new RegExp(`autologin\\s*=\\s*${olduser}`, 'g'); // remove spaces
79
+ content = content.replace(regex, `autologin=${newuser}`);
80
+ fs.writeFileSync(lxdmConf, content, 'utf8');
81
+ }
82
+ }
83
+ else if (Pacman.packageIsInstalled('sddm')) {
84
+ /**
85
+ * SDDM
86
+ */
87
+ let sddmChanged = false;
88
+ const curFile = `${chroot}/etc/sddm.conf`;
89
+ if (fs.existsSync(curFile)) {
90
+ let content = fs.readFileSync(curFile, 'utf8');
91
+ const find = '[Autologin]';
92
+ if (content.includes(find)) {
93
+ const regex = new RegExp(`User\\s*=\\s*${olduser}`, 'g'); // replace space
94
+ content = content.replace(regex, `User=${newuser}`);
95
+ fs.writeFileSync(curFile, content, 'utf8');
96
+ sddmChanged = true;
97
+ }
98
+ }
99
+ if (!sddmChanged) {
100
+ const dc = `${chroot}/etc/sddm.conf.d/`;
101
+ if (fs.existsSync(dc)) {
102
+ const files = fs.readdirSync(dc);
103
+ for (const elem of files) {
104
+ const curFile = dc + elem;
105
+ let content = fs.readFileSync(curFile, 'utf8');
106
+ const find = '[Autologin]';
107
+ if (content.includes(find)) {
108
+ const regex = new RegExp(`User\\s*=\\s*${olduser}`, 'g'); // replace space
109
+ content = content.replace(regex, `User=${newuser}`);
110
+ fs.writeFileSync(curFile, content, 'utf8');
111
+ sddmChanged = true;
112
+ }
113
+ }
114
+ }
115
+ }
116
+ // sddm.conf don't exists, generate it
117
+ if (!sddmChanged) {
118
+ let session = 'plasma';
119
+ if (Pacman.isInstalledWayland()) {
120
+ session = 'plasma-wayland';
121
+ }
122
+ const content = `[Autologin]\nUser=${newuser}\nSession=${session}\n`;
123
+ const curFile = `${chroot}/etc/sddm.conf`;
124
+ fs.writeFileSync(curFile, content, 'utf8');
125
+ }
126
+ }
127
+ else if (Pacman.packageIsInstalled('gdm') || Pacman.packageIsInstalled('gdm3')) {
128
+ /**
129
+ * GDM/GDM3
130
+ * in manjaro è /etc/gdm/custom.conf
131
+ */
132
+ let gdmConf = `${chroot}/etc/gdm3`;
133
+ if (Pacman.packageIsInstalled('gdm3')) {
134
+ gdmConf = `${chroot}/etc/gdm3`;
135
+ }
136
+ else if (Pacman.packageIsInstalled('gdm')) {
137
+ gdmConf = `${chroot}/etc/gdm`;
138
+ }
139
+ if (fs.existsSync(`${gdmConf}/custom.conf`)) {
140
+ gdmConf += '/custom.conf';
141
+ }
142
+ else if (fs.existsSync(`${gdmConf}/daemon.conf`)) {
143
+ gdmConf += '/daemon.conf';
144
+ }
145
+ else {
146
+ gdmConf = `}/etc/${gdmConf}/custom.conf`;
147
+ }
148
+ const content = `[daemon]\nAutomaticLoginEnable=true\nAutomaticLogin=${newuser}\n`;
149
+ Utils.write(gdmConf, content);
150
+ }
151
+ }
152
+ }
153
+ /**
154
+ *
155
+ * @param user
156
+ * @param chroot
157
+ * @param verbose
158
+ */
159
+ static async create(user, chroot, traduce = true, verbose = false) {
160
+ const echo = Utils.setEcho(verbose);
161
+ /**
162
+ * Creo solo la cartella DESKTOP perchè serve per i link, eventualmente posso creare le altre
163
+ * ma c'è il problema di traduce/non traduce
164
+ */
165
+ xdg_dirs.forEach(async (dir) => {
166
+ if (dir === 'DESKTOP') {
167
+ await Xdg.mk(chroot, `/home/${user}/` + this.traduce(dir, traduce), verbose);
168
+ }
169
+ });
170
+ }
171
+ /**
172
+ *
173
+ * @param chroot
174
+ * @param path
175
+ * @param verbose
176
+ */
177
+ static async mk(chroot, path, verbose = false) {
178
+ const echo = Utils.setEcho(verbose);
179
+ if (!fs.existsSync(chroot + path)) {
180
+ await exec(`mkdir ${chroot}${path}`, echo);
181
+ }
182
+ }
183
+ /**
184
+ * Copia della configurazione in /etc/skel
185
+ * @param user
186
+ * @param verbose
187
+ */
188
+ static async skel(user, verbose = false) {
189
+ const echo = Utils.setEcho(verbose);
190
+ // Remove and create /etc/skel
191
+ await exec('rm /etc/skel -rf', echo);
192
+ await exec('mkdir -p /etc/skel', echo);
193
+ // copy .bash_logout, .bashrc and .profile to /etc/skel
194
+ await exec(`cp /home/${user}/.bash_logout /etc/skel`, echo);
195
+ await exec(`cp /home/${user}/.bashrc /etc/skel`, echo);
196
+ await exec(`cp /home/${user}/.profile /etc/skel`, echo);
197
+ /**
198
+ * copy desktop configuration
199
+ */
200
+ if (Pacman.packageIsInstalled('gnome-session')) {
201
+ // we need a more clean solution
202
+ await rsyncIfExist(`/home/${user}/.config`, '/etc/skel', verbose);
203
+ await rsyncIfExist(`/home/${user}/.gtkrc-2.0`, '/etc/skel', verbose);
204
+ }
205
+ else if (Pacman.packageIsInstalled('cinnamon-common')) {
206
+ // before the check was against cinnamon-core
207
+ await rsyncIfExist(`/home/${user}/.config`, '/etc/skel', verbose);
208
+ // use .cinnamon NOT cinnamon/
209
+ // removed because it's not necessary
210
+ // await rsyncIfExist(`/home/${user}/.cinnamon`, '/etc/skel', verbose)
211
+ }
212
+ else if (Pacman.packageIsInstalled('plasma-desktop')) {
213
+ // use .kde NOT .kde/
214
+ await rsyncIfExist(`/home/${user}/.config`, '/etc/skel', verbose);
215
+ await rsyncIfExist(`/home/${user}/.kde`, '/etc/skel', verbose);
216
+ }
217
+ else if (Pacman.packageIsInstalled('lxde-core')) {
218
+ // we need a more clean solution
219
+ await rsyncIfExist(`/home/${user}/.config`, '/etc/skel', verbose);
220
+ await rsyncIfExist(`/home/${user}/.gtkrc-2.0`, '/etc/skel', verbose);
221
+ }
222
+ else if (Pacman.packageIsInstalled('lxqt-session')) {
223
+ // we need a more clean solution
224
+ await rsyncIfExist(`/home/${user}/.config/lxqt`, '/etc/skel/.config', verbose);
225
+ await rsyncIfExist(`/home/${user}/.gtkrc-2.0`, '/etc/skel', verbose);
226
+ }
227
+ else if (Pacman.packageIsInstalled('mate-session-manager')) {
228
+ // we need a more clean solution
229
+ await rsyncIfExist(`/home/${user}/.config`, '/etc/skel', verbose);
230
+ await rsyncIfExist(`/home/${user}/.gtkrc-2.0`, '/etc/skel', verbose);
231
+ }
232
+ else if (Pacman.packageIsInstalled('xfce4-session')) {
233
+ // use .config/xfce4 NOT .config/xfce4/
234
+ await rsyncIfExist(`/home/${user}/.config/xfce4`, '/etc/skel/.config', verbose);
235
+ await exec('mkdir /etc/skel/.local/share -p', echo);
236
+ await rsyncIfExist(`/home/${user}/.local/share/recently-used.xbel`, '/etc/skel/.local/share', verbose);
237
+ }
238
+ /**
239
+ * special cases
240
+ */
241
+ // Riccardo suggestion
242
+ await rsyncIfExist(`/home/${user}/.mozilla`, '/etc/skel', verbose);
243
+ await rsyncIfExist(`/home/${user}/.kodi`, '/etc/skel', verbose);
244
+ // waydroid
245
+ if (fs.existsSync(`/home/${user}/waydroid-package-manager`)) {
246
+ await rsyncIfExist(`/home/${user}/waydroid-package-manager`, '/etc/skel', verbose);
247
+ }
248
+ // LinuxFX
249
+ if (fs.existsSync(`/home/${user}/.linuxfx`)) {
250
+ // we need to copy: .linuxfx ,kde and ,cinnamon
251
+ await rsyncIfExist(`/home/${user}/.cinnamon`, '/etc/skel', verbose);
252
+ await rsyncIfExist(`/home/${user}/.kde`, '/etc/skel', verbose);
253
+ await rsyncIfExist(`/home/${user}/.linuxfx`, '/etc/skel', verbose);
254
+ await rsyncIfExist(`/home/${user}/.local`, '/etc/skel', verbose);
255
+ }
256
+ await exec('chown root:root /etc/skel -R', echo);
257
+ await exec('chmod a+rwx,g-w,o-w /etc/skel/ -R', echo);
258
+ await execIfExist('chmod a+rwx,g-w-x,o-wx', '/etc/skel/.bashrc', verbose);
259
+ await execIfExist('chmod a+rwx,g-w-x,o-wx', '/etc/skel/.bash_logout', verbose);
260
+ await execIfExist('chmod a+rwx,g-w-x,o-wx', '/etc/skel/.profile', verbose);
261
+ // quirinux
262
+ const distro = new Distro();
263
+ if (distro.distroId === 'Quirinux') {
264
+ await exec('chmod -R 777 /etc/skel/.config');
265
+ await exec('chmod -R 777 /etc/xdg/autostart'); // here we must change ***
266
+ await exec('chmod -R 777 /home/*/.config');
267
+ await exec('chmod -R 777 /opt/estilos-general/.config');
268
+ await exec('chmod -R 777 /opt/estilos/.config');
269
+ await exec('chmod -R 777 /usr/bin/iniciar-asistente');
270
+ // Copy xfce4-theme-switcher
271
+ await exec('mkdir /etc/skel/.config/xfce4-theme-switcher -p', echo);
272
+ await rsyncIfExist(`/home/${user}/.config/xfce4-theme-switcher`, '/etc/skel/.config/xfce4-theme-switcher', verbose);
273
+ }
274
+ /**
275
+ * ALL Desktops:
276
+ */
277
+ // Emer Chen suggestion
278
+ await rmIfExist('/etc/skel/.config/user-dirs.dirs');
279
+ await rmIfExist('/etc/skel/.config/user-dirs.locale');
280
+ await rmIfExist('/etc/skel/.config/gtk-3.0/bookmarks/', 'r');
281
+ // Manuel Senpai suggestion
282
+ // await exec(`grep -IE -r /etc/skel -e ${user}`)
283
+ await rmIfExist('/etc/skel/.local/share/recently-used.xbel');
284
+ await rmIfExist('/etc/skel/.config/xfce4/desktop/', 'r');
285
+ }
286
+ /**
287
+ *
288
+ * @param xdg_dir
289
+ */
290
+ static traduce(xdg_dir = '', traduce = true) {
291
+ let retval = '';
292
+ if (traduce === false) {
293
+ // Capitalize
294
+ retval = xdg_dir.charAt(0).toUpperCase() + xdg_dir.slice(1).toLowerCase();
295
+ console.log(retval);
296
+ }
297
+ else {
298
+ xdg_dirs.forEach(async (dir) => {
299
+ if (dir === xdg_dir) {
300
+ retval = path.basename(shx.exec(`sudo -u ${await Utils.getPrimaryUser()} xdg-user-dir ${dir}`, { silent: true }).stdout.trim());
301
+ }
302
+ });
303
+ }
304
+ return retval;
305
+ }
306
+ }
307
+ /**
308
+ * execIfExist
309
+ * @param cmd
310
+ * @param file
311
+ * @param verbose
312
+ */
313
+ async function execIfExist(cmd, file, verbose = false) {
314
+ const echo = Utils.setEcho(verbose);
315
+ if (fs.existsSync(file)) {
316
+ await exec(`${cmd} ${file}`, echo);
317
+ }
318
+ }
319
+ /**
320
+ *
321
+ */
322
+ async function rsyncIfExist(source, dest = '/etc/skel/', verbose = false) {
323
+ const echo = Utils.setEcho(verbose);
324
+ if (fs.existsSync(source)) {
325
+ await exec(`rsync -avx ${source} ${dest}`, echo);
326
+ }
327
+ }
328
+ /**
329
+ *
330
+ * @param file2Remove
331
+ * @param recursive
332
+ */
333
+ async function rmIfExist(file2Remove, recursive = '') {
334
+ if (fs.existsSync(file2Remove)) {
335
+ await exec(`rm -f${recursive} ${file2Remove}`);
336
+ }
337
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * ./src/classes/yolk.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 Yolk {
12
+ echo: {};
13
+ verbose: boolean;
14
+ yolkDir: string;
15
+ /**
16
+ *
17
+ */
18
+ create(verbose?: boolean): Promise<void>;
19
+ /**
20
+ * Svuota la repo yolk
21
+ */
22
+ erase(): Promise<void>;
23
+ /**
24
+ * Check if yoil exists and it's a repo
25
+ */
26
+ exists(): boolean;
27
+ /**
28
+ * if depends are not Installed
29
+ * download depends
30
+ * @param depends
31
+ */
32
+ installDeps(depends: string[]): Promise<void>;
33
+ }
@@ -0,0 +1,114 @@
1
+ /**
2
+ * ./src/classes/yolk.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 shx from 'shelljs';
11
+ import { exec } from '../lib/utils.js';
12
+ import Bleach from './bleach.js';
13
+ import Pacman from './pacman.js';
14
+ import Utils from './utils.js';
15
+ /**
16
+ *
17
+ */
18
+ export default class Yolk {
19
+ echo = {};
20
+ verbose = false;
21
+ yolkDir = '/var/local/yolk';
22
+ /**
23
+ *
24
+ */
25
+ async create(verbose = false) {
26
+ this.verbose = verbose;
27
+ this.echo = Utils.setEcho(verbose);
28
+ if (Utils.uefiArch() !== 'amd64') {
29
+ Utils.warning(`yolk is not used on ${Utils.uefiArch()} architecture`);
30
+ return;
31
+ }
32
+ Utils.warning(`Creating yolk on ${this.yolkDir}`);
33
+ Utils.warning('Updating system');
34
+ if (!Pacman.commandIsInstalled('dpkg-scanpackages')) {
35
+ Utils.warning(`I cannot find the command dpkg-scanpackages`);
36
+ process.exit(0);
37
+ }
38
+ let cmd = '';
39
+ try {
40
+ cmd = 'apt-get update --yes';
41
+ await exec(cmd, this.echo);
42
+ }
43
+ catch (error) {
44
+ console.log(error);
45
+ await Utils.pressKeyToExit(cmd);
46
+ process.exit(0);
47
+ }
48
+ if (this.exists()) {
49
+ await this.erase();
50
+ }
51
+ else {
52
+ await exec(`mkdir ${this.yolkDir} -p`, this.echo);
53
+ await exec(`chown _apt:root ${this.yolkDir} -R`, this.echo);
54
+ }
55
+ const yolk_yaml = '/etc/penguins-eggs.d/yolk.yaml';
56
+ const yolk = yaml.load(fs.readFileSync(yolk_yaml, 'utf8'));
57
+ process.chdir(this.yolkDir);
58
+ Utils.warning(`Downloading packages and its dependencies`);
59
+ for (const pkg of yolk.packages) {
60
+ Utils.warning(`- ${pkg}`);
61
+ cmd = `apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances ${pkg} | grep "^\\w" | sort -u`;
62
+ let depends = pkg + '\n';
63
+ depends += (await exec(cmd, { capture: true, echo: false })).data;
64
+ await this.installDeps(depends.split('\n'));
65
+ }
66
+ // create Package.gz
67
+ cmd = 'dpkg-scanpackages -h md5,sha1,sha256 . | gzip -c > Packages.gz';
68
+ Utils.warning(cmd);
69
+ await exec(cmd, { capture: true, echo: false });
70
+ // Create Release date: Sat, 14 Aug 2021 07:42:00 UTC
71
+ const now = shx.exec('date -R -u').stdout.trim();
72
+ const content = `Archive: stable\nComponent: yolk\nOrigin: penguins-eggs\nArchitecture: ${Utils.uefiArch()} \nDate: ${now}\n`;
73
+ Utils.warning('Writing Release');
74
+ fs.writeFileSync('Release', content);
75
+ // Cleaning
76
+ Utils.warning('Cleaning apt cache');
77
+ const bleach = new Bleach();
78
+ await bleach.clean(verbose);
79
+ }
80
+ /**
81
+ * Svuota la repo yolk
82
+ */
83
+ async erase() {
84
+ await exec(`rm ${this.yolkDir}/*`, this.echo);
85
+ }
86
+ /**
87
+ * Check if yoil exists and it's a repo
88
+ */
89
+ exists() {
90
+ const check = `${this.yolkDir}/Packages.gz`;
91
+ return fs.existsSync(check);
92
+ }
93
+ /**
94
+ * if depends are not Installed
95
+ * download depends
96
+ * @param depends
97
+ */
98
+ async installDeps(depends) {
99
+ // select for downloads only packages NOT already installed
100
+ const toDownloads = [];
101
+ for (const depend of depends) {
102
+ // if (depend !== '' && !Pacman.packageIsInstalled(depend)) {
103
+ toDownloads.push(depend);
104
+ // }
105
+ }
106
+ // now we go to downloads them
107
+ for (const toDownload of toDownloads) {
108
+ process.chdir(this.yolkDir);
109
+ const cmd = `apt-get download ${toDownload}`;
110
+ // Utils.warning(`- ${cmd}`)
111
+ await exec(cmd, this.echo);
112
+ }
113
+ }
114
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ./src/commands/adapt.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 { Command } from '@oclif/core';
9
+ export default class Adapt extends Command {
10
+ static description: string;
11
+ static examples: string[];
12
+ static flags: {
13
+ help: import("@oclif/core/interfaces").BooleanFlag<void>;
14
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ };
16
+ run(): Promise<void>;
17
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * ./src/commands/adapt.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 { Command, Flags } from '@oclif/core';
9
+ import Utils from '../classes/utils.js';
10
+ import { exec } from '../lib/utils.js';
11
+ export default class Adapt extends Command {
12
+ static description = 'adapt monitor resolution for VM only';
13
+ static examples = ['eggs adapt'];
14
+ static flags = {
15
+ help: Flags.help({ char: 'h' }),
16
+ verbose: Flags.boolean({ char: 'v' })
17
+ };
18
+ async run() {
19
+ const { args, flags } = await this.parse(Adapt);
20
+ let verbose = false;
21
+ if (flags.verbose) {
22
+ verbose = true;
23
+ }
24
+ const echo = Utils.setEcho(verbose);
25
+ // const {args, flags} = this.parse(Adjust)
26
+ Utils.titles(this.id + ' ' + this.argv);
27
+ Utils.warning('Adapt monitor resolutions to the size of window in virtual machines');
28
+ await exec('xrandr --output Virtual-0 --auto', echo);
29
+ await exec('xrandr --output Virtual-1 --auto', echo);
30
+ await exec('xrandr --output Virtual-2 --auto', echo);
31
+ await exec('xrandr --output Virtual-3 --auto', echo);
32
+ }
33
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * ./src/commands/analyze.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 { Command } from '@oclif/core';
9
+ import Users from '../classes/users.js';
10
+ import { IWorkDir } from '../interfaces/i-workdir.js';
11
+ export default class Analyze extends Command {
12
+ static description: string;
13
+ static examples: string[];
14
+ static flags: {
15
+ help: import("@oclif/core/interfaces").BooleanFlag<void>;
16
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ };
18
+ config_file: string;
19
+ snapshot_dir: string;
20
+ work_dir: IWorkDir;
21
+ /**
22
+ * fill
23
+ */
24
+ fill(): Promise<Users[]>;
25
+ run(): Promise<void>;
26
+ }