penguins-eggs 10.1.0 → 10.1.1

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 (440) hide show
  1. package/.oclif.manifest.json +1 -32
  2. package/README.md +109 -78
  3. package/conf/derivatives.yaml +3 -0
  4. package/conf/distros/buster/calamares/modules/users.yml +1 -0
  5. package/conf/distros/noble/calamares/modules/users.yml +1 -0
  6. package/dist/classes/bleach.d.ts +32 -0
  7. package/dist/classes/bleach.js +135 -0
  8. package/dist/classes/cli-autologin.d.ts +52 -0
  9. package/dist/classes/cli-autologin.js +247 -0
  10. package/dist/classes/compressors.d.ts +54 -0
  11. package/dist/classes/compressors.js +109 -0
  12. package/dist/classes/daddy.d.ts +26 -0
  13. package/dist/classes/daddy.js +167 -0
  14. package/dist/classes/distro.d.ts +56 -0
  15. package/dist/classes/distro.js +413 -0
  16. package/dist/classes/diversions.d.ts +52 -0
  17. package/dist/classes/diversions.js +126 -0
  18. package/dist/classes/incubation/branding.d.ts +17 -0
  19. package/dist/classes/incubation/branding.js +85 -0
  20. package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
  21. package/dist/classes/incubation/fisherman-helper/displaymanager.js +40 -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 +83 -0
  26. package/dist/classes/incubation/fisherman.d.ts +70 -0
  27. package/dist/classes/incubation/fisherman.js +263 -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/bionic.d.ts +32 -0
  31. package/dist/classes/incubation/incubator.d/bionic.js +83 -0
  32. package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
  33. package/dist/classes/incubation/incubator.d/buster.js +85 -0
  34. package/dist/classes/incubation/incubator.d/jessie.d.ts +31 -0
  35. package/dist/classes/incubation/incubator.d/jessie.js +44 -0
  36. package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
  37. package/dist/classes/incubation/incubator.d/noble.js +85 -0
  38. package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
  39. package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
  40. package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
  41. package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
  42. package/dist/classes/incubation/incubator.d/rolling.d.ts +32 -0
  43. package/dist/classes/incubation/incubator.d/rolling.js +80 -0
  44. package/dist/classes/incubation/incubator.d.ts +44 -0
  45. package/dist/classes/incubation/incubator.js +382 -0
  46. package/dist/classes/incubation/installer.d.ts +13 -0
  47. package/dist/classes/incubation/installer.js +52 -0
  48. package/dist/classes/keyboards.d.ts +50 -0
  49. package/dist/classes/keyboards.js +287 -0
  50. package/dist/classes/locales.d.ts +21 -0
  51. package/dist/classes/locales.js +77 -0
  52. package/dist/classes/network.d.ts +37 -0
  53. package/dist/classes/network.js +98 -0
  54. package/dist/classes/ovary.d/bind-live-fs.d.ts +18 -0
  55. package/dist/classes/ovary.d/bind-live-fs.js +177 -0
  56. package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
  57. package/dist/classes/ovary.d/bind-vfs.js +37 -0
  58. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
  59. package/dist/classes/ovary.d/create-xdg-autostart.js +194 -0
  60. package/dist/classes/ovary.d/edit-live-fs.d.ts +20 -0
  61. package/dist/classes/ovary.d/edit-live-fs.js +245 -0
  62. package/dist/classes/ovary.d/fertilization.d.ts +12 -0
  63. package/dist/classes/ovary.d/fertilization.js +51 -0
  64. package/dist/classes/ovary.d/finished.d.ts +13 -0
  65. package/dist/classes/ovary.d/finished.js +41 -0
  66. package/dist/classes/ovary.d/initrd.d.ts +21 -0
  67. package/dist/classes/ovary.d/initrd.js +68 -0
  68. package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
  69. package/dist/classes/ovary.d/kernel-copy.js +22 -0
  70. package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
  71. package/dist/classes/ovary.d/live-create-structure.js +90 -0
  72. package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
  73. package/dist/classes/ovary.d/make-dot-disk.js +40 -0
  74. package/dist/classes/ovary.d/make-efi.d.ts +12 -0
  75. package/dist/classes/ovary.d/make-efi.js +271 -0
  76. package/dist/classes/ovary.d/make-iso.d.ts +13 -0
  77. package/dist/classes/ovary.d/make-iso.js +45 -0
  78. package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
  79. package/dist/classes/ovary.d/make-squashfs.js +110 -0
  80. package/dist/classes/ovary.d/merged.d.ts +27 -0
  81. package/dist/classes/ovary.d/merged.js +77 -0
  82. package/dist/classes/ovary.d/produce.d.ts +23 -0
  83. package/dist/classes/ovary.d/produce.js +293 -0
  84. package/dist/classes/ovary.d/rexec.d.ts +13 -0
  85. package/dist/classes/ovary.d/rexec.js +34 -0
  86. package/dist/classes/ovary.d/syslinux.d.ts +12 -0
  87. package/dist/classes/ovary.d/syslinux.js +79 -0
  88. package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
  89. package/dist/classes/ovary.d/user-create-live.js +93 -0
  90. package/dist/classes/ovary.d/users-remove.d.ts +9 -0
  91. package/dist/classes/ovary.d/users-remove.js +38 -0
  92. package/dist/classes/ovary.d/xorriso-commend.d.ts +14 -0
  93. package/dist/classes/ovary.d/xorriso-commend.js +119 -0
  94. package/dist/classes/ovary.d.ts +82 -0
  95. package/dist/classes/ovary.js +86 -0
  96. package/dist/classes/pacman.d/aldos.d.ts +52 -0
  97. package/dist/classes/pacman.d/aldos.js +100 -0
  98. package/dist/classes/pacman.d/alpine.d.ts +56 -0
  99. package/dist/classes/pacman.d/alpine.js +162 -0
  100. package/dist/classes/pacman.d/archlinux.d.ts +62 -0
  101. package/dist/classes/pacman.d/archlinux.js +136 -0
  102. package/dist/classes/pacman.d/debian.d.ts +65 -0
  103. package/dist/classes/pacman.d/debian.js +143 -0
  104. package/dist/classes/pacman.d/fedora.d.ts +53 -0
  105. package/dist/classes/pacman.d/fedora.js +101 -0
  106. package/dist/classes/pacman.d/openmamba.d.ts +52 -0
  107. package/dist/classes/pacman.d/openmamba.js +100 -0
  108. package/dist/classes/pacman.d/opensuse.d.ts +53 -0
  109. package/dist/classes/pacman.d/opensuse.js +102 -0
  110. package/dist/classes/pacman.d/voidlinux.d.ts +52 -0
  111. package/dist/classes/pacman.d/voidlinux.js +90 -0
  112. package/dist/classes/pacman.d.ts +139 -0
  113. package/dist/classes/pacman.js +776 -0
  114. package/dist/classes/pve-live.d.ts +17 -0
  115. package/dist/classes/pve-live.js +52 -0
  116. package/dist/classes/pxe.d.ts +74 -0
  117. package/dist/classes/pxe.js +410 -0
  118. package/dist/classes/settings.d.ts +52 -0
  119. package/dist/classes/settings.js +185 -0
  120. package/dist/classes/sources_list.d.ts +28 -0
  121. package/dist/classes/sources_list.js +89 -0
  122. package/dist/classes/systemctl.d.ts +47 -0
  123. package/dist/classes/systemctl.js +86 -0
  124. package/dist/classes/tailor.d.ts +50 -0
  125. package/dist/classes/tailor.js +527 -0
  126. package/dist/classes/tools.d.ts +26 -0
  127. package/dist/classes/tools.js +50 -0
  128. package/dist/classes/users.d.ts +28 -0
  129. package/dist/classes/users.js +143 -0
  130. package/dist/classes/utils.d/architecture.d.ts +41 -0
  131. package/dist/classes/utils.d/architecture.js +87 -0
  132. package/dist/classes/utils.d/console-output.d.ts +26 -0
  133. package/dist/classes/utils.d/console-output.js +46 -0
  134. package/dist/classes/utils.d/filesystem.d.ts +53 -0
  135. package/dist/classes/utils.d/filesystem.js +152 -0
  136. package/dist/classes/utils.d/formatters.d.ts +32 -0
  137. package/dist/classes/utils.d/formatters.js +64 -0
  138. package/dist/classes/utils.d/kernel.d.ts +83 -0
  139. package/dist/classes/utils.d/kernel.js +288 -0
  140. package/dist/classes/utils.d/network.d.ts +43 -0
  141. package/dist/classes/utils.d/network.js +133 -0
  142. package/dist/classes/utils.d/package-info.d.ts +55 -0
  143. package/dist/classes/utils.d/package-info.js +137 -0
  144. package/dist/classes/utils.d/snapshot.d.ts +44 -0
  145. package/dist/classes/utils.d/snapshot.js +102 -0
  146. package/dist/classes/utils.d/system.d.ts +63 -0
  147. package/dist/classes/utils.d/system.js +200 -0
  148. package/dist/classes/utils.d/user-interaction.d.ts +39 -0
  149. package/dist/classes/utils.d/user-interaction.js +104 -0
  150. package/dist/classes/utils.d.ts +95 -0
  151. package/dist/classes/utils.js +111 -0
  152. package/dist/classes/xdg.d.ts +45 -0
  153. package/dist/classes/xdg.js +337 -0
  154. package/dist/classes/yolk.d.ts +33 -0
  155. package/dist/classes/yolk.js +114 -0
  156. package/dist/commands/adapt.d.ts +17 -0
  157. package/dist/commands/adapt.js +33 -0
  158. package/dist/commands/analyze.d.ts +26 -0
  159. package/dist/commands/analyze.js +95 -0
  160. package/dist/commands/calamares.d.ts +29 -0
  161. package/dist/commands/calamares.js +112 -0
  162. package/dist/commands/config.d.ts +35 -0
  163. package/dist/commands/config.js +120 -0
  164. package/dist/commands/cuckoo.d.ts +16 -0
  165. package/dist/commands/cuckoo.js +62 -0
  166. package/dist/commands/dad.d.ts +21 -0
  167. package/dist/commands/dad.js +47 -0
  168. package/dist/commands/export/iso.d.ts +19 -0
  169. package/dist/commands/export/iso.js +55 -0
  170. package/dist/commands/export/pkg.d.ts +29 -0
  171. package/dist/commands/export/pkg.js +163 -0
  172. package/dist/commands/export/tarballs.d.ts +27 -0
  173. package/dist/commands/export/tarballs.js +79 -0
  174. package/dist/commands/install.d.ts +38 -0
  175. package/dist/commands/install.js +91 -0
  176. package/dist/commands/kill.d.ts +24 -0
  177. package/dist/commands/kill.js +50 -0
  178. package/dist/commands/love.d.ts +21 -0
  179. package/dist/commands/love.js +73 -0
  180. package/dist/commands/mom.d.ts +16 -0
  181. package/dist/commands/mom.js +30 -0
  182. package/dist/commands/pods.d.ts +22 -0
  183. package/dist/commands/pods.js +92 -0
  184. package/dist/commands/produce.d.ts +35 -0
  185. package/dist/commands/produce.js +221 -0
  186. package/dist/commands/status.d.ts +23 -0
  187. package/dist/commands/status.js +31 -0
  188. package/dist/commands/syncfrom.d.ts +45 -0
  189. package/dist/commands/syncfrom.js +152 -0
  190. package/dist/commands/syncto.d.ts +40 -0
  191. package/dist/commands/syncto.js +175 -0
  192. package/dist/commands/tools/clean.d.ts +18 -0
  193. package/dist/commands/tools/clean.js +37 -0
  194. package/dist/commands/tools/ppa.d.ts +26 -0
  195. package/dist/commands/tools/ppa.js +138 -0
  196. package/dist/commands/tools/skel.d.ts +18 -0
  197. package/dist/commands/tools/skel.js +44 -0
  198. package/dist/commands/tools/stat.d.ts +31 -0
  199. package/dist/commands/tools/stat.js +70 -0
  200. package/dist/commands/tools/yolk.d.ts +24 -0
  201. package/dist/commands/tools/yolk.js +45 -0
  202. package/dist/commands/update.d.ts +51 -0
  203. package/dist/commands/update.js +219 -0
  204. package/dist/commands/wardrobe/get.d.ts +23 -0
  205. package/dist/commands/wardrobe/get.js +52 -0
  206. package/dist/commands/wardrobe/list.d.ts +24 -0
  207. package/dist/commands/wardrobe/list.js +125 -0
  208. package/dist/commands/wardrobe/show.d.ts +25 -0
  209. package/dist/commands/wardrobe/show.js +97 -0
  210. package/dist/commands/wardrobe/wear.d.ts +26 -0
  211. package/dist/commands/wardrobe/wear.js +84 -0
  212. package/dist/index.d.ts +8 -0
  213. package/dist/index.js +8 -0
  214. package/dist/index_old.d.ts +8 -0
  215. package/dist/index_old.js +8 -0
  216. package/dist/interfaces/i-addons.d.ts +12 -0
  217. package/dist/interfaces/i-addons.js +8 -0
  218. package/dist/interfaces/i-analyze.d.ts +17 -0
  219. package/dist/interfaces/i-analyze.js +17 -0
  220. package/dist/interfaces/i-app.d.ts +14 -0
  221. package/dist/interfaces/i-app.js +8 -0
  222. package/dist/interfaces/i-branding.d.ts +36 -0
  223. package/dist/interfaces/i-branding.js +8 -0
  224. package/dist/interfaces/i-calamares-displaymanager.d.ts +17 -0
  225. package/dist/interfaces/i-calamares-displaymanager.js +1 -0
  226. package/dist/interfaces/i-calamares-finished.d.ts +12 -0
  227. package/dist/interfaces/i-calamares-finished.js +1 -0
  228. package/dist/interfaces/i-calamares-packages.d.ts +28 -0
  229. package/dist/interfaces/i-calamares-packages.js +1 -0
  230. package/dist/interfaces/i-calamares-partition.d.ts +40 -0
  231. package/dist/interfaces/i-calamares-partition.js +1 -0
  232. package/dist/interfaces/i-config-tools.d.ts +15 -0
  233. package/dist/interfaces/i-config-tools.js +8 -0
  234. package/dist/interfaces/i-devices.d.ts +20 -0
  235. package/dist/interfaces/i-devices.js +8 -0
  236. package/dist/interfaces/i-distro.d.ts +23 -0
  237. package/dist/interfaces/i-distro.js +8 -0
  238. package/dist/interfaces/i-drive-list.d.ts +33 -0
  239. package/dist/interfaces/i-drive-list.js +8 -0
  240. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  241. package/dist/interfaces/i-eggs-config.js +8 -0
  242. package/dist/interfaces/i-excludes.d.ts +14 -0
  243. package/dist/interfaces/i-excludes.js +8 -0
  244. package/dist/interfaces/i-exec.d.ts +11 -0
  245. package/dist/interfaces/i-exec.js +8 -0
  246. package/dist/interfaces/i-initrd.d.ts +13 -0
  247. package/dist/interfaces/i-initrd.js +8 -0
  248. package/dist/interfaces/i-install.d.ts +16 -0
  249. package/dist/interfaces/i-install.js +8 -0
  250. package/dist/interfaces/i-installer.d.ts +17 -0
  251. package/dist/interfaces/i-installer.js +8 -0
  252. package/dist/interfaces/i-luks-passphrase.d.ts +11 -0
  253. package/dist/interfaces/i-luks-passphrase.js +8 -0
  254. package/dist/interfaces/i-materia.d.ts +36 -0
  255. package/dist/interfaces/i-materia.js +8 -0
  256. package/dist/interfaces/i-net.d.ts +16 -0
  257. package/dist/interfaces/i-net.js +8 -0
  258. package/dist/interfaces/i-os-release.d.ts +5 -0
  259. package/dist/interfaces/i-os-release.js +1 -0
  260. package/dist/interfaces/i-packages.d.ts +16 -0
  261. package/dist/interfaces/i-packages.js +8 -0
  262. package/dist/interfaces/i-partitions.d.ts +16 -0
  263. package/dist/interfaces/i-partitions.js +8 -0
  264. package/dist/interfaces/i-pxe.d.ts +45 -0
  265. package/dist/interfaces/i-pxe.js +1 -0
  266. package/dist/interfaces/i-remix.d.ts +21 -0
  267. package/dist/interfaces/i-remix.js +8 -0
  268. package/dist/interfaces/i-settings.d.ts +33 -0
  269. package/dist/interfaces/i-settings.js +8 -0
  270. package/dist/interfaces/i-user.d.ts +14 -0
  271. package/dist/interfaces/i-user.js +8 -0
  272. package/dist/interfaces/i-workdir.d.ts +14 -0
  273. package/dist/interfaces/i-workdir.js +8 -0
  274. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  275. package/dist/interfaces/i-xkb-model.js +8 -0
  276. package/dist/interfaces/index.d.ts +26 -0
  277. package/dist/interfaces/index.js +8 -0
  278. package/dist/krill/classes/cfs.d.ts +17 -0
  279. package/dist/krill/classes/cfs.js +39 -0
  280. package/dist/krill/classes/krill_enums.d.ts +37 -0
  281. package/dist/krill/classes/krill_enums.js +41 -0
  282. package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
  283. package/dist/krill/classes/prepare.d/confirm.js +30 -0
  284. package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
  285. package/dist/krill/classes/prepare.d/keyboard.js +62 -0
  286. package/dist/krill/classes/prepare.d/location.d.ts +17 -0
  287. package/dist/krill/classes/prepare.d/location.js +59 -0
  288. package/dist/krill/classes/prepare.d/network.d.ts +14 -0
  289. package/dist/krill/classes/prepare.d/network.js +68 -0
  290. package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
  291. package/dist/krill/classes/prepare.d/partitions.js +86 -0
  292. package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
  293. package/dist/krill/classes/prepare.d/summary.js +69 -0
  294. package/dist/krill/classes/prepare.d/users.d.ts +6 -0
  295. package/dist/krill/classes/prepare.d/users.js +63 -0
  296. package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
  297. package/dist/krill/classes/prepare.d/welcome.js +30 -0
  298. package/dist/krill/classes/prepare.d.ts +89 -0
  299. package/dist/krill/classes/prepare.js +314 -0
  300. package/dist/krill/classes/sequence.d/add_user.d.ts +20 -0
  301. package/dist/krill/classes/sequence.d/add_user.js +66 -0
  302. package/dist/krill/classes/sequence.d/bootloader.d.ts +14 -0
  303. package/dist/krill/classes/sequence.d/bootloader.js +95 -0
  304. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +14 -0
  305. package/dist/krill/classes/sequence.d/bootloader_config.js +165 -0
  306. package/dist/krill/classes/sequence.d/change_password.d.ts +15 -0
  307. package/dist/krill/classes/sequence.d/change_password.js +18 -0
  308. package/dist/krill/classes/sequence.d/del_live_user.d.ts +14 -0
  309. package/dist/krill/classes/sequence.d/del_live_user.js +39 -0
  310. package/dist/krill/classes/sequence.d/fstab.d.ts +14 -0
  311. package/dist/krill/classes/sequence.d/fstab.js +189 -0
  312. package/dist/krill/classes/sequence.d/grubcfg.d.ts +17 -0
  313. package/dist/krill/classes/sequence.d/grubcfg.js +33 -0
  314. package/dist/krill/classes/sequence.d/hostname.d.ts +13 -0
  315. package/dist/krill/classes/sequence.d/hostname.js +50 -0
  316. package/dist/krill/classes/sequence.d/initramfs.d.ts +13 -0
  317. package/dist/krill/classes/sequence.d/initramfs.js +54 -0
  318. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +14 -0
  319. package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
  320. package/dist/krill/classes/sequence.d/locale.d.ts +13 -0
  321. package/dist/krill/classes/sequence.d/locale.js +91 -0
  322. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +10 -0
  323. package/dist/krill/classes/sequence.d/locale_cfg.js +58 -0
  324. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +14 -0
  325. package/dist/krill/classes/sequence.d/m_keyboard.js +58 -0
  326. package/dist/krill/classes/sequence.d/machine_id.d.ts +15 -0
  327. package/dist/krill/classes/sequence.d/machine_id.js +33 -0
  328. package/dist/krill/classes/sequence.d/mkfs.d.ts +15 -0
  329. package/dist/krill/classes/sequence.d/mkfs.js +72 -0
  330. package/dist/krill/classes/sequence.d/mount_fs.d.ts +17 -0
  331. package/dist/krill/classes/sequence.d/mount_fs.js +68 -0
  332. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +17 -0
  333. package/dist/krill/classes/sequence.d/mount_vfs.js +40 -0
  334. package/dist/krill/classes/sequence.d/network_cfg.d.ts +19 -0
  335. package/dist/krill/classes/sequence.d/network_cfg.js +73 -0
  336. package/dist/krill/classes/sequence.d/packages.d.ts +14 -0
  337. package/dist/krill/classes/sequence.d/packages.js +111 -0
  338. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +17 -0
  339. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
  340. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +17 -0
  341. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +36 -0
  342. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
  343. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +78 -0
  344. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
  345. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +32 -0
  346. package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
  347. package/dist/krill/classes/sequence.d/partition.js +84 -0
  348. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +13 -0
  349. package/dist/krill/classes/sequence.d/remove_installer_link.js +35 -0
  350. package/dist/krill/classes/sequence.d/umount.d.ts +14 -0
  351. package/dist/krill/classes/sequence.d/umount.js +28 -0
  352. package/dist/krill/classes/sequence.d/unpackfs.d.ts +13 -0
  353. package/dist/krill/classes/sequence.d/unpackfs.js +20 -0
  354. package/dist/krill/classes/sequence.d.ts +133 -0
  355. package/dist/krill/classes/sequence.js +396 -0
  356. package/dist/krill/components/finished.d.ts +16 -0
  357. package/dist/krill/components/finished.js +56 -0
  358. package/dist/krill/components/information.d.ts +8 -0
  359. package/dist/krill/components/information.js +162 -0
  360. package/dist/krill/components/install.d.ts +15 -0
  361. package/dist/krill/components/install.js +60 -0
  362. package/dist/krill/components/keyboard.d.ts +16 -0
  363. package/dist/krill/components/keyboard.js +54 -0
  364. package/dist/krill/components/location.d.ts +16 -0
  365. package/dist/krill/components/location.js +59 -0
  366. package/dist/krill/components/network.d.ts +19 -0
  367. package/dist/krill/components/network.js +65 -0
  368. package/dist/krill/components/partitions.d.ts +18 -0
  369. package/dist/krill/components/partitions.js +89 -0
  370. package/dist/krill/components/steps.d.ts +13 -0
  371. package/dist/krill/components/steps.js +148 -0
  372. package/dist/krill/components/summary.d.ts +25 -0
  373. package/dist/krill/components/summary.js +77 -0
  374. package/dist/krill/components/title.d.ts +11 -0
  375. package/dist/krill/components/title.js +35 -0
  376. package/dist/krill/components/users.d.ts +24 -0
  377. package/dist/krill/components/users.js +80 -0
  378. package/dist/krill/components/welcome.d.ts +13 -0
  379. package/dist/krill/components/welcome.js +63 -0
  380. package/dist/krill/interfaces/i_krill.d.ts +44 -0
  381. package/dist/krill/interfaces/i_krill.js +8 -0
  382. package/dist/krill/interfaces/i_krill_config.d.ts +35 -0
  383. package/dist/krill/interfaces/i_krill_config.js +8 -0
  384. package/dist/krill/lib/get_address.d.ts +8 -0
  385. package/dist/krill/lib/get_address.js +23 -0
  386. package/dist/krill/lib/get_dns.d.ts +8 -0
  387. package/dist/krill/lib/get_dns.js +23 -0
  388. package/dist/krill/lib/get_domain.d.ts +8 -0
  389. package/dist/krill/lib/get_domain.js +23 -0
  390. package/dist/krill/lib/get_gateway.d.ts +8 -0
  391. package/dist/krill/lib/get_gateway.js +23 -0
  392. package/dist/krill/lib/get_hostname.d.ts +8 -0
  393. package/dist/krill/lib/get_hostname.js +23 -0
  394. package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
  395. package/dist/krill/lib/get_luks_passphrase.js +40 -0
  396. package/dist/krill/lib/get_netmask.d.ts +8 -0
  397. package/dist/krill/lib/get_netmask.js +23 -0
  398. package/dist/krill/lib/get_password.d.ts +8 -0
  399. package/dist/krill/lib/get_password.js +36 -0
  400. package/dist/krill/lib/get_userfullname.d.ts +8 -0
  401. package/dist/krill/lib/get_userfullname.js +23 -0
  402. package/dist/krill/lib/get_username.d.ts +8 -0
  403. package/dist/krill/lib/get_username.js +23 -0
  404. package/dist/krill/lib/select_address_type.d.ts +8 -0
  405. package/dist/krill/lib/select_address_type.js +24 -0
  406. package/dist/krill/lib/select_filesystem_type.d.ts +8 -0
  407. package/dist/krill/lib/select_filesystem_type.js +39 -0
  408. package/dist/krill/lib/select_installation_device.d.ts +8 -0
  409. package/dist/krill/lib/select_installation_device.js +40 -0
  410. package/dist/krill/lib/select_installation_mode.d.ts +9 -0
  411. package/dist/krill/lib/select_installation_mode.js +25 -0
  412. package/dist/krill/lib/select_interface.d.ts +8 -0
  413. package/dist/krill/lib/select_interface.js +24 -0
  414. package/dist/krill/lib/select_keyboard_layout.d.ts +11 -0
  415. package/dist/krill/lib/select_keyboard_layout.js +36 -0
  416. package/dist/krill/lib/select_keyboard_model.d.ts +11 -0
  417. package/dist/krill/lib/select_keyboard_model.js +34 -0
  418. package/dist/krill/lib/select_keyboard_option.d.ts +11 -0
  419. package/dist/krill/lib/select_keyboard_option.js +34 -0
  420. package/dist/krill/lib/select_keyboard_variant.d.ts +11 -0
  421. package/dist/krill/lib/select_keyboard_variant.js +35 -0
  422. package/dist/krill/lib/select_languages.d.ts +8 -0
  423. package/dist/krill/lib/select_languages.js +28 -0
  424. package/dist/krill/lib/select_regions.d.ts +8 -0
  425. package/dist/krill/lib/select_regions.js +24 -0
  426. package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
  427. package/dist/krill/lib/select_replaced_partition.js +31 -0
  428. package/dist/krill/lib/select_user_swap_choice.d.ts +9 -0
  429. package/dist/krill/lib/select_user_swap_choice.js +35 -0
  430. package/dist/krill/lib/select_zones.d.ts +8 -0
  431. package/dist/krill/lib/select_zones.js +518 -0
  432. package/dist/lib/kill_me_softly.d.ts +11 -0
  433. package/dist/lib/kill_me_softly.js +61 -0
  434. package/dist/lib/utils.d.ts +42 -0
  435. package/dist/lib/utils.js +87 -0
  436. package/dist/penguins-eggs_10.1.1-0_amd64.deb +0 -0
  437. package/dist/penguins-eggs_10.1.1-0_amd64.deb.sha256 +1 -0
  438. package/package.json +25 -23
  439. package/scripts/_eggs +6 -12
  440. package/scripts/eggs.bash +1 -2
@@ -0,0 +1,527 @@
1
+ /**
2
+ * ./src/classes/tailor.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import 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. sudo apt update | apt install curl');
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 'Arch': {
110
+ tailorList = `${this.costume}/arch.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 Arch`);
115
+ process.exit();
116
+ }
117
+ }
118
+ break;
119
+ }
120
+ case 'Alpine': {
121
+ tailorList = `${this.costume}/alpine.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 Alpine`);
126
+ process.exit();
127
+ }
128
+ }
129
+ break;
130
+ }
131
+ case 'Almalinux':
132
+ case 'Rocky':
133
+ case 'Fedora': {
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
+ } // end analyze
145
+ /**
146
+ * find materials
147
+ */
148
+ if (fs.existsSync(tailorList)) {
149
+ this.materials = yaml.load(fs.readFileSync(tailorList, 'utf8'));
150
+ }
151
+ else {
152
+ switch (this.category) {
153
+ case 'costume': {
154
+ Utils.titles(`${this.category}: ${this.costume}`);
155
+ console.log("Tailor's list " + chalk.cyan(tailorList) + ' is not found \non your wardrobe ' + chalk.cyan(this.wardrobe) + '.\n');
156
+ console.log('Costume will not be installed, operations will abort.\n');
157
+ Utils.pressKeyToExit();
158
+ process.exit();
159
+ break;
160
+ }
161
+ case 'accessory': {
162
+ Utils.titles(`${this.category}: ${this.costume}`);
163
+ console.log("Tailor's list " + chalk.cyan(tailorList) + ' is not found \non your wardrobe ' + chalk.cyan(this.wardrobe) + '.\n');
164
+ console.log('vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv');
165
+ console.log('Accessory will not be installed,');
166
+ console.log('operations will continue.');
167
+ console.log('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^');
168
+ sleep(3000);
169
+ return;
170
+ }
171
+ }
172
+ }
173
+ /**
174
+ * sequence
175
+ */
176
+ const sources_list = new SourcesList();
177
+ let step = '';
178
+ if (this.materials.sequence !== undefined) {
179
+ step = 'analyzing sequence';
180
+ Utils.warning(step);
181
+ /**
182
+ * sequence/repositories
183
+ */
184
+ if (this.materials.sequence.repositories !== undefined) {
185
+ if (distro.familyId === 'debian') {
186
+ /**
187
+ * sequence/repositories/sources_list
188
+ */
189
+ // evito di fallire se sources_list non è presente
190
+ if (this.materials.sequence.repositories.sources_list !== undefined) {
191
+ step = 'analyzing repositories';
192
+ Utils.warning(step);
193
+ if (distro.distroLike === 'Debian') {
194
+ await sources_list.components(this.materials.sequence.repositories.sources_list);
195
+ }
196
+ }
197
+ /**
198
+ * sequence/repositories/sources_list_d
199
+ */
200
+ if (this.materials.sequence.repositories.sources_list_d !== undefined && this.materials.sequence.repositories.sources_list_d[0] !== null) {
201
+ step = 'adding repositories to /etc/apt/sources_list_d';
202
+ Utils.warning(step);
203
+ for (const cmd of this.materials.sequence.repositories.sources_list_d) {
204
+ try {
205
+ // repeat 3 times if fail curl or others commands
206
+ for (let i = 0; i < 2; i++) {
207
+ const result = await exec(cmd, this.echo);
208
+ if (result.code === 0) {
209
+ break;
210
+ }
211
+ }
212
+ }
213
+ catch (error) {
214
+ await Utils.pressKeyToExit(JSON.stringify(error));
215
+ }
216
+ }
217
+ }
218
+ }
219
+ /**
220
+ * sequence/repositories/update
221
+ */
222
+ if (this.materials.sequence.repositories.update === undefined) {
223
+ console.log('repositiories, and repositories.update MUST be defined on sequence');
224
+ process.exit();
225
+ }
226
+ step = 'repositories update';
227
+ Utils.warning(step);
228
+ if (this.materials.sequence.repositories.update) {
229
+ switch (distro.familyId) {
230
+ case 'debian': {
231
+ await exec('apt-get update', Utils.setEcho(false));
232
+ break;
233
+ }
234
+ case 'archlinux': {
235
+ await exec('pacman -Sy', Utils.setEcho(false));
236
+ break;
237
+ }
238
+ case 'alpine': {
239
+ await exec('apk update', Utils.setEcho(false));
240
+ break;
241
+ }
242
+ case 'fedora': {
243
+ await exec('dnf update', Utils.setEcho(false));
244
+ break;
245
+ }
246
+ }
247
+ }
248
+ /**
249
+ * sequence/repositories/upgrade
250
+ */
251
+ if (this.materials.sequence.repositories.upgrade !== undefined) {
252
+ step = 'repositories upgrade';
253
+ Utils.warning(step);
254
+ if (this.materials.sequence.repositories.upgrade) {
255
+ switch (distro.familyId) {
256
+ case 'debian': {
257
+ await exec('apt-get full-upgrade', Utils.setEcho(false));
258
+ break;
259
+ }
260
+ case 'archlinux': {
261
+ await exec('pacman -Su', Utils.setEcho(false));
262
+ break;
263
+ }
264
+ case 'alpine': {
265
+ await exec('apk upgrade', Utils.setEcho(false));
266
+ break;
267
+ }
268
+ case 'fedora': {
269
+ await exec('dnf upgrade', Utils.setEcho(false));
270
+ break;
271
+ }
272
+ }
273
+ } // upgrade true
274
+ } // undefined upgrade
275
+ } // end sequence/repositories
276
+ /**
277
+ * sequence/cmds
278
+ */
279
+ if (this.materials.sequence.cmds !== undefined && Array.isArray(this.materials.sequence.cmds)) {
280
+ step = 'sequence commands';
281
+ Utils.warning(step);
282
+ for (const cmd of this.materials.sequence.cmds) {
283
+ if (fs.existsSync(`${this.costume}/${cmd}`)) {
284
+ await exec(`${this.costume}/${cmd} ${this.materials.name}`, Utils.setEcho(true));
285
+ }
286
+ else {
287
+ // exec cmd real env
288
+ await exec(`${cmd} ${this.materials.name}`, Utils.setEcho(true));
289
+ }
290
+ }
291
+ }
292
+ /**
293
+ * install packages
294
+ */
295
+ if (this.materials.sequence.packages !== undefined) {
296
+ const packages = await this.packagesExists(this.materials.sequence.packages);
297
+ if (packages.length > 1) {
298
+ switch (distro.familyId) {
299
+ case 'debian': {
300
+ await this.packagesInstall(packages);
301
+ break;
302
+ }
303
+ case 'archlinux': {
304
+ await this.packagesInstall(this.materials.sequence.packages, 'packages', `pacman -Sy --noconfirm`);
305
+ break;
306
+ }
307
+ case 'alpine': {
308
+ await this.packagesInstall(this.materials.sequence.packages, 'packages', `apk add`);
309
+ break;
310
+ }
311
+ case 'fedora': {
312
+ await this.packagesInstall(this.materials.sequence.packages, 'packages', `dnf install -y`);
313
+ break;
314
+ }
315
+ }
316
+ }
317
+ }
318
+ /**
319
+ * sequence/packages_python
320
+ */
321
+ if (this.materials.sequence.packages_python !== undefined && Array.isArray(this.materials.sequence.packages_python)) {
322
+ let cmd = 'pip install ';
323
+ let pip = '';
324
+ for (const elem of this.materials.sequence.packages_python) {
325
+ cmd += ` ${elem}`;
326
+ pip += `, ${elem}`;
327
+ }
328
+ step = `installing python packages pip ${pip.slice(2)}`;
329
+ Utils.warning(step);
330
+ await exec(cmd, this.echo);
331
+ }
332
+ /**
333
+ * sequence/accessories
334
+ */
335
+ if (!no_accessories) {
336
+ if (this.materials.sequence.accessories !== undefined && Array.isArray(this.materials.sequence.accessories)) {
337
+ step = 'wearing accessories';
338
+ for (const elem of this.materials.sequence.accessories) {
339
+ if ((elem === 'firmwares' || elem === './firmwares') && no_firmwares) {
340
+ continue;
341
+ }
342
+ if (elem.slice(0, 2) === './') {
343
+ // local accessory
344
+ const tailor = new Tailor(`${this.costume}/${elem.slice(2)}`, 'accessory');
345
+ await tailor.prepare(verbose);
346
+ }
347
+ else {
348
+ // global accessory
349
+ const tailor = new Tailor(`${this.wardrobe}/accessories/${elem}`, 'accessory');
350
+ await tailor.prepare(verbose);
351
+ }
352
+ }
353
+ }
354
+ } // no-accessories
355
+ } // end sequence
356
+ /**
357
+ * customize
358
+ */
359
+ if (this.materials.finalize !== undefined) {
360
+ /**
361
+ * finalize/customize
362
+ */
363
+ if (this.materials.finalize.customize && fs.existsSync(`/${this.costume}/sysroot`)) {
364
+ step = `finalize/customize: copying ${this.costume}/sysroot/ to /`;
365
+ Utils.warning(step);
366
+ let cmd = `rsync -avx ${this.costume}/sysroot/* / ${this.toNull}`;
367
+ await exec(cmd, this.echo);
368
+ // chown
369
+ cmd = `chown root:root /etc/sudoers.d /etc/skel -R`;
370
+ await exec(cmd, this.echo);
371
+ /**
372
+ * Copyng skel in /home/user
373
+ */
374
+ if (fs.existsSync(`${this.costume}/sysroot/etc/skel`)) {
375
+ const user = await Utils.getPrimaryUser();
376
+ step = `finalize/customize: copying skel in /home/${user}/`;
377
+ Utils.warning(step);
378
+ cmd = `rsync -avx ${this.costume}/sysroot/etc/skel/.config /home/${user}/ ${this.toNull}`;
379
+ await exec(cmd, this.echo);
380
+ await exec(`chown ${user}:${user} /home/${user}/ -R`);
381
+ }
382
+ }
383
+ /**
384
+ * finalize/cmds
385
+ */
386
+ if (this.materials.finalize.cmds !== undefined && Array.isArray(this.materials.finalize.cmds)) {
387
+ step = 'finalize/commands';
388
+ Utils.warning(step);
389
+ for (const cmd of this.materials.finalize.cmds) {
390
+ if (fs.existsSync(`${this.costume}/${cmd}`)) {
391
+ await exec(`${this.costume}/${cmd} ${this.materials.name}`, Utils.setEcho(true));
392
+ }
393
+ else {
394
+ // exec cmd real env
395
+ await exec(`${cmd}`, Utils.setEcho(true));
396
+ }
397
+ }
398
+ }
399
+ }
400
+ // show log
401
+ if (fs.existsSync(this.log)) {
402
+ await exec(`cat ${this.log}`);
403
+ }
404
+ /**
405
+ * reboot
406
+ */
407
+ if (this.materials.reboot) {
408
+ Utils.warning('Reboot');
409
+ await Utils.pressKeyToExit('system need to reboot', true);
410
+ await exec('reboot');
411
+ }
412
+ else {
413
+ console.log(`You look good with: ${this.materials.name}`);
414
+ }
415
+ }
416
+ /**
417
+ *
418
+ * @param packages
419
+ * @param verbose
420
+ * @param section
421
+ * @returns
422
+ */
423
+ async packagesExists(wanted) {
424
+ Utils.warning(`checking packages exists ${this.costume}`);
425
+ wanted.sort();
426
+ const distro = new Distro();
427
+ let cmd = "";
428
+ if (distro.familyId === "debian") {
429
+ // cmd=`apt-cache --no-generate pkgnames`
430
+ cmd = `apt-cache pkgnames`;
431
+ }
432
+ else if (distro.familyId === "archlinux") {
433
+ cmd = `pacman -S --list | awk '{print $2}'`;
434
+ }
435
+ else if (distro.familyId === "alpine") {
436
+ cmd = `apk search | awk -F'-[0-9]' '{print $1}' | sort -u`;
437
+ }
438
+ else if (distro.familyId === 'fedora') {
439
+ cmd = `dnf list --available | awk '{print $1}' | sed 's/\.[^.]*$//'`;
440
+ }
441
+ //available = (await exec(cmd, { capture: true, echo: false, ignore: false })).data.split('\n')
442
+ let available = [];
443
+ available = (await exec(cmd, { capture: true, echo: false, ignore: false })).data.split('\n');
444
+ available.sort();
445
+ let exists = [];
446
+ let not_exists = [];
447
+ for (const elem of wanted) {
448
+ if (available.includes(elem)) {
449
+ exists.push(elem);
450
+ }
451
+ else {
452
+ not_exists.push(elem);
453
+ fs.appendFileSync(this.log, `- ${elem}\n`);
454
+ }
455
+ }
456
+ if (not_exists.length > 0) {
457
+ console.log(`${this.materials.name}, ${not_exists.length} following packages was not found:`);
458
+ for (const elem of not_exists) {
459
+ console.log(`-${elem}`);
460
+ }
461
+ console.log();
462
+ console.log("Wait 3 seconds");
463
+ await sleep(3000);
464
+ }
465
+ return exists;
466
+ }
467
+ /**
468
+ * - check if every package if installed
469
+ * - if find any packages to install, install it
470
+ */
471
+ async packagesInstall(packages, comment = 'packages', cmd = 'apt-get install -yqq ') {
472
+ Utils.warning(`installing existing packages ${this.costume}`);
473
+ if (packages[0] !== null) {
474
+ const elements = [];
475
+ let strElements = '';
476
+ for (const elem of packages) {
477
+ elements.push(elem);
478
+ cmd += ` ${elem}`;
479
+ strElements += `, ${elem}`;
480
+ }
481
+ if (elements.length > 0) {
482
+ let step = `installing ${comment}: `;
483
+ if (!this.verbose) {
484
+ step += strElements.slice(2);
485
+ }
486
+ /**
487
+ * prova 3 volte
488
+ */
489
+ const limit = 3;
490
+ for (let tempts = 1; tempts < limit; tempts++) {
491
+ Utils.titles(step);
492
+ Utils.warning(`tempts ${tempts} of ${limit}`);
493
+ if (await this.tryCheckSuccess(cmd, this.echo)) {
494
+ break;
495
+ }
496
+ }
497
+ }
498
+ }
499
+ }
500
+ /**
501
+ *
502
+ * @param cmd
503
+ * @param echo
504
+ * @returns
505
+ */
506
+ async tryCheckSuccess(cmd, echo) {
507
+ let success = false;
508
+ try {
509
+ await exec(cmd, echo);
510
+ success = true;
511
+ }
512
+ catch {
513
+ success = false;
514
+ }
515
+ return success;
516
+ }
517
+ }
518
+ /**
519
+ *
520
+ * @param ms
521
+ * @returns
522
+ */
523
+ function sleep(ms = 0) {
524
+ return new Promise((resolve) => {
525
+ setTimeout(resolve, ms);
526
+ });
527
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * ./src/classes/tools.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ 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.10.0.0 / 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.10.0.0 / 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
+ }