penguins-eggs 10.0.60 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/.oclif.manifest.json +93 -1
  2. package/README.md +79 -40
  3. package/addons/eggs/theme/calamares/modules/{_users.yml → users.yml} +3 -3
  4. package/addons/eggs/theme/livecd/grub.main.full.cfg +1 -1
  5. package/addons/eggs/theme/livecd/grub.main.simple.cfg +1 -1
  6. package/conf/derivatives.yaml +1 -3
  7. package/conf/derivatives_fedora.yaml +6 -0
  8. package/conf/distros/alpine/calamares/modules/users.yml +3 -3
  9. package/conf/distros/bionic/calamares/calamares-modules/grubcfg/grubcfg.yml +1 -1
  10. package/conf/distros/bionic/calamares/modules/users.yml +3 -3
  11. package/conf/distros/buster/calamares/modules/users.yml +3 -3
  12. package/conf/distros/fedora/calamares/modules/users.yml +3 -3
  13. package/conf/distros/noble/calamares/modules/focal-jammy/users.yml +3 -3
  14. package/conf/distros/opensuse/calamares/modules/users.yml +3 -3
  15. package/conf/distros/rolling/calamares/modules/users.yml +3 -3
  16. package/conf/eggs.yaml +1 -1
  17. package/conf/love.yaml +4 -4
  18. package/package.json +22 -19
  19. package/perrisbrewery/scripts/postinst +98 -0
  20. package/perrisbrewery/scripts/postrm +82 -0
  21. package/perrisbrewery/scripts/preinst +40 -0
  22. package/perrisbrewery/scripts/prerm +47 -0
  23. package/perrisbrewery/template/control.template +17 -0
  24. package/perrisbrewery/template/dependencies-bionic.yaml +33 -0
  25. package/perrisbrewery/template/dependencies.yaml +37 -0
  26. package/perrisbrewery/template/man.template.md +110 -0
  27. package/pods/README.md +14 -0
  28. package/pods/almalinux.sh +10 -0
  29. package/pods/archlinux.sh +10 -0
  30. package/pods/ci/README.md +5 -0
  31. package/pods/ci/kernel-overlay-install.sh +114 -0
  32. package/pods/ci/minimal/almalinux-container2host.sh +165 -0
  33. package/pods/ci/minimal/archlinux-container2host.sh +125 -0
  34. package/pods/ci/minimal/debian-container2host.sh +173 -0
  35. package/pods/ci/minimal/fedora-container2host.sh +170 -0
  36. package/pods/ci/minimal/manjaro-container2host.sh +123 -0
  37. package/pods/ci/minimal/opensuse-container2host.sh +143 -0
  38. package/pods/ci/penguins-eggs-execute.sh +22 -0
  39. package/pods/ci/penguins-eggs-install.sh +115 -0
  40. package/pods/ci/run +34 -0
  41. package/pods/ci/run-on-almalinux.sh +50 -0
  42. package/pods/ci/run-on-archlinux.sh +64 -0
  43. package/pods/ci/run-on-debian.sh +51 -0
  44. package/pods/ci/run-on-devuan.sh +48 -0
  45. package/pods/ci/run-on-fedora.sh +51 -0
  46. package/pods/ci/run-on-manjaro.sh +61 -0
  47. package/pods/ci/run-on-opensuse.sh +58 -0
  48. package/pods/ci/run-on-rockylinux.sh +51 -0
  49. package/pods/ci/run-on-ubuntu.sh +52 -0
  50. package/pods/debian.sh +23 -0
  51. package/pods/devuan.sh +26 -0
  52. package/pods/fedora.sh +12 -0
  53. package/pods/lmde.sh +22 -0
  54. package/pods/manjaro.sh +10 -0
  55. package/pods/opensuse.sh +12 -0
  56. package/pods/podman.command.sh +85 -0
  57. package/pods/rocky.sh +12 -0
  58. package/pods/run-build-packages-debs.sh +45 -0
  59. package/pods/run-create-debs.sh +23 -0
  60. package/pods/ubuntu.sh +24 -0
  61. package/scripts/_eggs +21 -6
  62. package/scripts/eggs.bash +6 -4
  63. package/dist/classes/bleach.d.ts +0 -32
  64. package/dist/classes/bleach.js +0 -135
  65. package/dist/classes/cli-autologin.d.ts +0 -52
  66. package/dist/classes/cli-autologin.js +0 -247
  67. package/dist/classes/compressors.d.ts +0 -54
  68. package/dist/classes/compressors.js +0 -109
  69. package/dist/classes/daddy.d.ts +0 -26
  70. package/dist/classes/daddy.js +0 -167
  71. package/dist/classes/distro.d.ts +0 -32
  72. package/dist/classes/distro.js +0 -341
  73. package/dist/classes/diversions.d.ts +0 -52
  74. package/dist/classes/diversions.js +0 -126
  75. package/dist/classes/incubation/branding.d.ts +0 -17
  76. package/dist/classes/incubation/branding.js +0 -85
  77. package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +0 -11
  78. package/dist/classes/incubation/fisherman-helper/displaymanager.js +0 -40
  79. package/dist/classes/incubation/fisherman-helper/packages.d.ts +0 -20
  80. package/dist/classes/incubation/fisherman-helper/packages.js +0 -72
  81. package/dist/classes/incubation/fisherman-helper/settings.d.ts +0 -15
  82. package/dist/classes/incubation/fisherman-helper/settings.js +0 -83
  83. package/dist/classes/incubation/fisherman.d.ts +0 -70
  84. package/dist/classes/incubation/fisherman.js +0 -263
  85. package/dist/classes/incubation/incubator.d/alpine.d.ts +0 -32
  86. package/dist/classes/incubation/incubator.d/alpine.js +0 -78
  87. package/dist/classes/incubation/incubator.d/bionic.d.ts +0 -32
  88. package/dist/classes/incubation/incubator.d/bionic.js +0 -83
  89. package/dist/classes/incubation/incubator.d/buster.d.ts +0 -32
  90. package/dist/classes/incubation/incubator.d/buster.js +0 -85
  91. package/dist/classes/incubation/incubator.d/jessie.d.ts +0 -31
  92. package/dist/classes/incubation/incubator.d/jessie.js +0 -44
  93. package/dist/classes/incubation/incubator.d/noble.d.ts +0 -32
  94. package/dist/classes/incubation/incubator.d/noble.js +0 -85
  95. package/dist/classes/incubation/incubator.d/openmamba.d.ts +0 -32
  96. package/dist/classes/incubation/incubator.d/openmamba.js +0 -81
  97. package/dist/classes/incubation/incubator.d/opensuse.d.ts +0 -32
  98. package/dist/classes/incubation/incubator.d/opensuse.js +0 -81
  99. package/dist/classes/incubation/incubator.d/rolling.d.ts +0 -32
  100. package/dist/classes/incubation/incubator.d/rolling.js +0 -80
  101. package/dist/classes/incubation/incubator.d.ts +0 -44
  102. package/dist/classes/incubation/incubator.js +0 -382
  103. package/dist/classes/incubation/installer.d.ts +0 -13
  104. package/dist/classes/incubation/installer.js +0 -52
  105. package/dist/classes/keyboards.d.ts +0 -50
  106. package/dist/classes/keyboards.js +0 -287
  107. package/dist/classes/locales.d.ts +0 -21
  108. package/dist/classes/locales.js +0 -77
  109. package/dist/classes/network.d.ts +0 -37
  110. package/dist/classes/network.js +0 -98
  111. package/dist/classes/ovary.d/bind-live-fs.d.ts +0 -18
  112. package/dist/classes/ovary.d/bind-live-fs.js +0 -185
  113. package/dist/classes/ovary.d/bind-vfs.d.ts +0 -17
  114. package/dist/classes/ovary.d/bind-vfs.js +0 -37
  115. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +0 -13
  116. package/dist/classes/ovary.d/create-xdg-autostart.js +0 -194
  117. package/dist/classes/ovary.d/edit-live-fs.d.ts +0 -19
  118. package/dist/classes/ovary.d/edit-live-fs.js +0 -249
  119. package/dist/classes/ovary.d/fertilization.d.ts +0 -12
  120. package/dist/classes/ovary.d/fertilization.js +0 -46
  121. package/dist/classes/ovary.d/finished.d.ts +0 -13
  122. package/dist/classes/ovary.d/finished.js +0 -41
  123. package/dist/classes/ovary.d/initrd.d.ts +0 -21
  124. package/dist/classes/ovary.d/initrd.js +0 -72
  125. package/dist/classes/ovary.d/kernel-copy.d.ts +0 -12
  126. package/dist/classes/ovary.d/kernel-copy.js +0 -36
  127. package/dist/classes/ovary.d/live-create-structure.d.ts +0 -12
  128. package/dist/classes/ovary.d/live-create-structure.js +0 -90
  129. package/dist/classes/ovary.d/make-dot-disk.d.ts +0 -12
  130. package/dist/classes/ovary.d/make-dot-disk.js +0 -40
  131. package/dist/classes/ovary.d/make-efi.d.ts +0 -12
  132. package/dist/classes/ovary.d/make-efi.js +0 -268
  133. package/dist/classes/ovary.d/make-iso.d.ts +0 -13
  134. package/dist/classes/ovary.d/make-iso.js +0 -45
  135. package/dist/classes/ovary.d/make-squashfs.d.ts +0 -18
  136. package/dist/classes/ovary.d/make-squashfs.js +0 -117
  137. package/dist/classes/ovary.d/merged.d.ts +0 -31
  138. package/dist/classes/ovary.d/merged.js +0 -87
  139. package/dist/classes/ovary.d/produce.d.ts +0 -23
  140. package/dist/classes/ovary.d/produce.js +0 -287
  141. package/dist/classes/ovary.d/rexec.d.ts +0 -13
  142. package/dist/classes/ovary.d/rexec.js +0 -34
  143. package/dist/classes/ovary.d/syslinux.d.ts +0 -12
  144. package/dist/classes/ovary.d/syslinux.js +0 -79
  145. package/dist/classes/ovary.d/user-create-live.d.ts +0 -14
  146. package/dist/classes/ovary.d/user-create-live.js +0 -86
  147. package/dist/classes/ovary.d/users-remove.d.ts +0 -9
  148. package/dist/classes/ovary.d/users-remove.js +0 -38
  149. package/dist/classes/ovary.d/xorriso-commend.d.ts +0 -14
  150. package/dist/classes/ovary.d/xorriso-commend.js +0 -119
  151. package/dist/classes/ovary.d.ts +0 -77
  152. package/dist/classes/ovary.js +0 -81
  153. package/dist/classes/pacman.d/aldos.d.ts +0 -52
  154. package/dist/classes/pacman.d/aldos.js +0 -100
  155. package/dist/classes/pacman.d/alpine.d.ts +0 -56
  156. package/dist/classes/pacman.d/alpine.js +0 -162
  157. package/dist/classes/pacman.d/archlinux.d.ts +0 -62
  158. package/dist/classes/pacman.d/archlinux.js +0 -140
  159. package/dist/classes/pacman.d/debian.d.ts +0 -65
  160. package/dist/classes/pacman.d/debian.js +0 -143
  161. package/dist/classes/pacman.d/fedora.d.ts +0 -53
  162. package/dist/classes/pacman.d/fedora.js +0 -101
  163. package/dist/classes/pacman.d/openmamba.d.ts +0 -52
  164. package/dist/classes/pacman.d/openmamba.js +0 -100
  165. package/dist/classes/pacman.d/opensuse.d.ts +0 -53
  166. package/dist/classes/pacman.d/opensuse.js +0 -102
  167. package/dist/classes/pacman.d/voidlinux.d.ts +0 -52
  168. package/dist/classes/pacman.d/voidlinux.js +0 -90
  169. package/dist/classes/pacman.d.ts +0 -139
  170. package/dist/classes/pacman.js +0 -775
  171. package/dist/classes/pve-live.d.ts +0 -17
  172. package/dist/classes/pve-live.js +0 -52
  173. package/dist/classes/pxe.d.ts +0 -74
  174. package/dist/classes/pxe.js +0 -410
  175. package/dist/classes/settings.d.ts +0 -52
  176. package/dist/classes/settings.js +0 -185
  177. package/dist/classes/sources_list.d.ts +0 -28
  178. package/dist/classes/sources_list.js +0 -89
  179. package/dist/classes/systemctl.d.ts +0 -47
  180. package/dist/classes/systemctl.js +0 -86
  181. package/dist/classes/tailor.d.ts +0 -50
  182. package/dist/classes/tailor.js +0 -526
  183. package/dist/classes/tools.d.ts +0 -26
  184. package/dist/classes/tools.js +0 -50
  185. package/dist/classes/users.d.ts +0 -28
  186. package/dist/classes/users.js +0 -143
  187. package/dist/classes/utils.d.ts +0 -327
  188. package/dist/classes/utils.js +0 -1019
  189. package/dist/classes/xdg.d.ts +0 -45
  190. package/dist/classes/xdg.js +0 -337
  191. package/dist/classes/yolk.d.ts +0 -33
  192. package/dist/classes/yolk.js +0 -114
  193. package/dist/commands/adapt.d.ts +0 -17
  194. package/dist/commands/adapt.js +0 -33
  195. package/dist/commands/analyze.d.ts +0 -26
  196. package/dist/commands/analyze.js +0 -95
  197. package/dist/commands/calamares.d.ts +0 -29
  198. package/dist/commands/calamares.js +0 -112
  199. package/dist/commands/config.d.ts +0 -35
  200. package/dist/commands/config.js +0 -120
  201. package/dist/commands/cuckoo.d.ts +0 -16
  202. package/dist/commands/cuckoo.js +0 -62
  203. package/dist/commands/dad.d.ts +0 -20
  204. package/dist/commands/dad.js +0 -46
  205. package/dist/commands/export/iso.d.ts +0 -19
  206. package/dist/commands/export/iso.js +0 -55
  207. package/dist/commands/export/pkg.d.ts +0 -29
  208. package/dist/commands/export/pkg.js +0 -163
  209. package/dist/commands/export/tarballs.d.ts +0 -27
  210. package/dist/commands/export/tarballs.js +0 -84
  211. package/dist/commands/install.d.ts +0 -38
  212. package/dist/commands/install.js +0 -91
  213. package/dist/commands/kill.d.ts +0 -24
  214. package/dist/commands/kill.js +0 -50
  215. package/dist/commands/love.d.ts +0 -20
  216. package/dist/commands/love.js +0 -59
  217. package/dist/commands/mom.d.ts +0 -16
  218. package/dist/commands/mom.js +0 -30
  219. package/dist/commands/produce.d.ts +0 -34
  220. package/dist/commands/produce.js +0 -201
  221. package/dist/commands/status.d.ts +0 -23
  222. package/dist/commands/status.js +0 -31
  223. package/dist/commands/syncfrom.d.ts +0 -45
  224. package/dist/commands/syncfrom.js +0 -152
  225. package/dist/commands/syncto.d.ts +0 -40
  226. package/dist/commands/syncto.js +0 -175
  227. package/dist/commands/tools/clean.d.ts +0 -18
  228. package/dist/commands/tools/clean.js +0 -37
  229. package/dist/commands/tools/ppa.d.ts +0 -26
  230. package/dist/commands/tools/ppa.js +0 -138
  231. package/dist/commands/tools/skel.d.ts +0 -18
  232. package/dist/commands/tools/skel.js +0 -44
  233. package/dist/commands/tools/stat.d.ts +0 -31
  234. package/dist/commands/tools/stat.js +0 -70
  235. package/dist/commands/tools/yolk.d.ts +0 -24
  236. package/dist/commands/tools/yolk.js +0 -45
  237. package/dist/commands/update.d.ts +0 -51
  238. package/dist/commands/update.js +0 -219
  239. package/dist/commands/wardrobe/get.d.ts +0 -23
  240. package/dist/commands/wardrobe/get.js +0 -52
  241. package/dist/commands/wardrobe/list.d.ts +0 -24
  242. package/dist/commands/wardrobe/list.js +0 -125
  243. package/dist/commands/wardrobe/show.d.ts +0 -25
  244. package/dist/commands/wardrobe/show.js +0 -97
  245. package/dist/commands/wardrobe/wear.d.ts +0 -26
  246. package/dist/commands/wardrobe/wear.js +0 -84
  247. package/dist/index.d.ts +0 -54
  248. package/dist/index.js +0 -147
  249. package/dist/index_old.d.ts +0 -8
  250. package/dist/index_old.js +0 -8
  251. package/dist/interfaces/i-addons.d.ts +0 -12
  252. package/dist/interfaces/i-addons.js +0 -8
  253. package/dist/interfaces/i-analyze.d.ts +0 -17
  254. package/dist/interfaces/i-analyze.js +0 -17
  255. package/dist/interfaces/i-app.d.ts +0 -14
  256. package/dist/interfaces/i-app.js +0 -8
  257. package/dist/interfaces/i-branding.d.ts +0 -36
  258. package/dist/interfaces/i-branding.js +0 -8
  259. package/dist/interfaces/i-calamares-displaymanager.d.ts +0 -17
  260. package/dist/interfaces/i-calamares-displaymanager.js +0 -1
  261. package/dist/interfaces/i-calamares-finished.d.ts +0 -12
  262. package/dist/interfaces/i-calamares-finished.js +0 -1
  263. package/dist/interfaces/i-calamares-packages.d.ts +0 -28
  264. package/dist/interfaces/i-calamares-packages.js +0 -1
  265. package/dist/interfaces/i-calamares-partition.d.ts +0 -40
  266. package/dist/interfaces/i-calamares-partition.js +0 -1
  267. package/dist/interfaces/i-config-tools.d.ts +0 -15
  268. package/dist/interfaces/i-config-tools.js +0 -8
  269. package/dist/interfaces/i-devices.d.ts +0 -20
  270. package/dist/interfaces/i-devices.js +0 -8
  271. package/dist/interfaces/i-distro.d.ts +0 -23
  272. package/dist/interfaces/i-distro.js +0 -8
  273. package/dist/interfaces/i-drive-list.d.ts +0 -33
  274. package/dist/interfaces/i-drive-list.js +0 -8
  275. package/dist/interfaces/i-eggs-config.d.ts +0 -32
  276. package/dist/interfaces/i-eggs-config.js +0 -8
  277. package/dist/interfaces/i-excludes.d.ts +0 -14
  278. package/dist/interfaces/i-excludes.js +0 -8
  279. package/dist/interfaces/i-exec.d.ts +0 -11
  280. package/dist/interfaces/i-exec.js +0 -8
  281. package/dist/interfaces/i-initrd.d.ts +0 -13
  282. package/dist/interfaces/i-initrd.js +0 -8
  283. package/dist/interfaces/i-install.d.ts +0 -16
  284. package/dist/interfaces/i-install.js +0 -8
  285. package/dist/interfaces/i-installer.d.ts +0 -17
  286. package/dist/interfaces/i-installer.js +0 -8
  287. package/dist/interfaces/i-luks-passphrase.d.ts +0 -11
  288. package/dist/interfaces/i-luks-passphrase.js +0 -8
  289. package/dist/interfaces/i-materia.d.ts +0 -36
  290. package/dist/interfaces/i-materia.js +0 -8
  291. package/dist/interfaces/i-net.d.ts +0 -16
  292. package/dist/interfaces/i-net.js +0 -8
  293. package/dist/interfaces/i-os-release.d.ts +0 -5
  294. package/dist/interfaces/i-os-release.js +0 -1
  295. package/dist/interfaces/i-packages.d.ts +0 -16
  296. package/dist/interfaces/i-packages.js +0 -8
  297. package/dist/interfaces/i-partitions.d.ts +0 -16
  298. package/dist/interfaces/i-partitions.js +0 -8
  299. package/dist/interfaces/i-pxe.d.ts +0 -45
  300. package/dist/interfaces/i-pxe.js +0 -1
  301. package/dist/interfaces/i-remix.d.ts +0 -21
  302. package/dist/interfaces/i-remix.js +0 -8
  303. package/dist/interfaces/i-settings.d.ts +0 -33
  304. package/dist/interfaces/i-settings.js +0 -8
  305. package/dist/interfaces/i-user.d.ts +0 -14
  306. package/dist/interfaces/i-user.js +0 -8
  307. package/dist/interfaces/i-workdir.d.ts +0 -14
  308. package/dist/interfaces/i-workdir.js +0 -8
  309. package/dist/interfaces/i-xkb-model.d.ts +0 -24
  310. package/dist/interfaces/i-xkb-model.js +0 -8
  311. package/dist/interfaces/index.d.ts +0 -26
  312. package/dist/interfaces/index.js +0 -8
  313. package/dist/krill/classes/cfs.d.ts +0 -17
  314. package/dist/krill/classes/cfs.js +0 -39
  315. package/dist/krill/classes/krill_enums.d.ts +0 -24
  316. package/dist/krill/classes/krill_enums.js +0 -26
  317. package/dist/krill/classes/prepare.d/confirm.d.ts +0 -5
  318. package/dist/krill/classes/prepare.d/confirm.js +0 -30
  319. package/dist/krill/classes/prepare.d/keyboard.d.ts +0 -14
  320. package/dist/krill/classes/prepare.d/keyboard.js +0 -62
  321. package/dist/krill/classes/prepare.d/location.d.ts +0 -17
  322. package/dist/krill/classes/prepare.d/location.js +0 -59
  323. package/dist/krill/classes/prepare.d/network.d.ts +0 -14
  324. package/dist/krill/classes/prepare.d/network.js +0 -68
  325. package/dist/krill/classes/prepare.d/partitions.d.ts +0 -14
  326. package/dist/krill/classes/prepare.d/partitions.js +0 -86
  327. package/dist/krill/classes/prepare.d/summary.d.ts +0 -15
  328. package/dist/krill/classes/prepare.d/summary.js +0 -69
  329. package/dist/krill/classes/prepare.d/users.d.ts +0 -6
  330. package/dist/krill/classes/prepare.d/users.js +0 -63
  331. package/dist/krill/classes/prepare.d/welcome.d.ts +0 -6
  332. package/dist/krill/classes/prepare.d/welcome.js +0 -30
  333. package/dist/krill/classes/prepare.d.ts +0 -64
  334. package/dist/krill/classes/prepare.js +0 -314
  335. package/dist/krill/classes/sequence.d/add_user.d.ts +0 -20
  336. package/dist/krill/classes/sequence.d/add_user.js +0 -48
  337. package/dist/krill/classes/sequence.d/bootloader.d.ts +0 -14
  338. package/dist/krill/classes/sequence.d/bootloader.js +0 -95
  339. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +0 -14
  340. package/dist/krill/classes/sequence.d/bootloader_config.js +0 -165
  341. package/dist/krill/classes/sequence.d/change_password.d.ts +0 -15
  342. package/dist/krill/classes/sequence.d/change_password.js +0 -18
  343. package/dist/krill/classes/sequence.d/del_live_user.d.ts +0 -14
  344. package/dist/krill/classes/sequence.d/del_live_user.js +0 -39
  345. package/dist/krill/classes/sequence.d/fstab.d.ts +0 -14
  346. package/dist/krill/classes/sequence.d/fstab.js +0 -189
  347. package/dist/krill/classes/sequence.d/grubcfg.d.ts +0 -17
  348. package/dist/krill/classes/sequence.d/grubcfg.js +0 -33
  349. package/dist/krill/classes/sequence.d/hostname.d.ts +0 -13
  350. package/dist/krill/classes/sequence.d/hostname.js +0 -50
  351. package/dist/krill/classes/sequence.d/initramfs.d.ts +0 -13
  352. package/dist/krill/classes/sequence.d/initramfs.js +0 -54
  353. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +0 -14
  354. package/dist/krill/classes/sequence.d/initramfs_cfg.js +0 -35
  355. package/dist/krill/classes/sequence.d/locale.d.ts +0 -13
  356. package/dist/krill/classes/sequence.d/locale.js +0 -91
  357. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +0 -10
  358. package/dist/krill/classes/sequence.d/locale_cfg.js +0 -58
  359. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +0 -14
  360. package/dist/krill/classes/sequence.d/m_keyboard.js +0 -58
  361. package/dist/krill/classes/sequence.d/machine_id.d.ts +0 -15
  362. package/dist/krill/classes/sequence.d/machine_id.js +0 -33
  363. package/dist/krill/classes/sequence.d/mkfs.d.ts +0 -15
  364. package/dist/krill/classes/sequence.d/mkfs.js +0 -72
  365. package/dist/krill/classes/sequence.d/mount_fs.d.ts +0 -17
  366. package/dist/krill/classes/sequence.d/mount_fs.js +0 -68
  367. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +0 -17
  368. package/dist/krill/classes/sequence.d/mount_vfs.js +0 -40
  369. package/dist/krill/classes/sequence.d/network_cfg.d.ts +0 -19
  370. package/dist/krill/classes/sequence.d/network_cfg.js +0 -73
  371. package/dist/krill/classes/sequence.d/packages.d.ts +0 -14
  372. package/dist/krill/classes/sequence.d/packages.js +0 -111
  373. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +0 -17
  374. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +0 -73
  375. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +0 -17
  376. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +0 -36
  377. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +0 -17
  378. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +0 -78
  379. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +0 -10
  380. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +0 -32
  381. package/dist/krill/classes/sequence.d/partition.d.ts +0 -14
  382. package/dist/krill/classes/sequence.d/partition.js +0 -84
  383. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +0 -13
  384. package/dist/krill/classes/sequence.d/remove_installer_link.js +0 -35
  385. package/dist/krill/classes/sequence.d/umount.d.ts +0 -14
  386. package/dist/krill/classes/sequence.d/umount.js +0 -28
  387. package/dist/krill/classes/sequence.d/unpackfs.d.ts +0 -13
  388. package/dist/krill/classes/sequence.d/unpackfs.js +0 -20
  389. package/dist/krill/classes/sequence.d.ts +0 -136
  390. package/dist/krill/classes/sequence.js +0 -663
  391. package/dist/krill/components/finished.d.ts +0 -16
  392. package/dist/krill/components/finished.js +0 -56
  393. package/dist/krill/components/information.d.ts +0 -8
  394. package/dist/krill/components/information.js +0 -156
  395. package/dist/krill/components/install.d.ts +0 -15
  396. package/dist/krill/components/install.js +0 -60
  397. package/dist/krill/components/keyboard.d.ts +0 -16
  398. package/dist/krill/components/keyboard.js +0 -54
  399. package/dist/krill/components/location.d.ts +0 -16
  400. package/dist/krill/components/location.js +0 -59
  401. package/dist/krill/components/network.d.ts +0 -19
  402. package/dist/krill/components/network.js +0 -65
  403. package/dist/krill/components/partitions.d.ts +0 -18
  404. package/dist/krill/components/partitions.js +0 -89
  405. package/dist/krill/components/steps.d.ts +0 -13
  406. package/dist/krill/components/steps.js +0 -148
  407. package/dist/krill/components/summary.d.ts +0 -25
  408. package/dist/krill/components/summary.js +0 -77
  409. package/dist/krill/components/title.d.ts +0 -11
  410. package/dist/krill/components/title.js +0 -35
  411. package/dist/krill/components/users.d.ts +0 -24
  412. package/dist/krill/components/users.js +0 -80
  413. package/dist/krill/components/welcome.d.ts +0 -13
  414. package/dist/krill/components/welcome.js +0 -63
  415. package/dist/krill/interfaces/i_krill.d.ts +0 -44
  416. package/dist/krill/interfaces/i_krill.js +0 -8
  417. package/dist/krill/interfaces/i_krill_config.d.ts +0 -35
  418. package/dist/krill/interfaces/i_krill_config.js +0 -8
  419. package/dist/krill/lib/get_address.d.ts +0 -8
  420. package/dist/krill/lib/get_address.js +0 -23
  421. package/dist/krill/lib/get_dns.d.ts +0 -8
  422. package/dist/krill/lib/get_dns.js +0 -23
  423. package/dist/krill/lib/get_domain.d.ts +0 -8
  424. package/dist/krill/lib/get_domain.js +0 -23
  425. package/dist/krill/lib/get_gateway.d.ts +0 -8
  426. package/dist/krill/lib/get_gateway.js +0 -23
  427. package/dist/krill/lib/get_hostname.d.ts +0 -8
  428. package/dist/krill/lib/get_hostname.js +0 -23
  429. package/dist/krill/lib/get_luks_passphrase.d.ts +0 -8
  430. package/dist/krill/lib/get_luks_passphrase.js +0 -40
  431. package/dist/krill/lib/get_netmask.d.ts +0 -8
  432. package/dist/krill/lib/get_netmask.js +0 -23
  433. package/dist/krill/lib/get_password.d.ts +0 -8
  434. package/dist/krill/lib/get_password.js +0 -36
  435. package/dist/krill/lib/get_userfullname.d.ts +0 -8
  436. package/dist/krill/lib/get_userfullname.js +0 -23
  437. package/dist/krill/lib/get_username.d.ts +0 -8
  438. package/dist/krill/lib/get_username.js +0 -23
  439. package/dist/krill/lib/kill_me_softly.d.ts +0 -11
  440. package/dist/krill/lib/kill_me_softly.js +0 -61
  441. package/dist/krill/lib/select_address_type.d.ts +0 -8
  442. package/dist/krill/lib/select_address_type.js +0 -24
  443. package/dist/krill/lib/select_filesystem_type.d.ts +0 -8
  444. package/dist/krill/lib/select_filesystem_type.js +0 -39
  445. package/dist/krill/lib/select_installation_device.d.ts +0 -8
  446. package/dist/krill/lib/select_installation_device.js +0 -40
  447. package/dist/krill/lib/select_installation_mode.d.ts +0 -9
  448. package/dist/krill/lib/select_installation_mode.js +0 -25
  449. package/dist/krill/lib/select_interface.d.ts +0 -8
  450. package/dist/krill/lib/select_interface.js +0 -24
  451. package/dist/krill/lib/select_keyboard_layout.d.ts +0 -11
  452. package/dist/krill/lib/select_keyboard_layout.js +0 -36
  453. package/dist/krill/lib/select_keyboard_model.d.ts +0 -11
  454. package/dist/krill/lib/select_keyboard_model.js +0 -34
  455. package/dist/krill/lib/select_keyboard_option.d.ts +0 -11
  456. package/dist/krill/lib/select_keyboard_option.js +0 -34
  457. package/dist/krill/lib/select_keyboard_variant.d.ts +0 -11
  458. package/dist/krill/lib/select_keyboard_variant.js +0 -35
  459. package/dist/krill/lib/select_languages.d.ts +0 -8
  460. package/dist/krill/lib/select_languages.js +0 -28
  461. package/dist/krill/lib/select_regions.d.ts +0 -8
  462. package/dist/krill/lib/select_regions.js +0 -24
  463. package/dist/krill/lib/select_replaced_partition.d.ts +0 -8
  464. package/dist/krill/lib/select_replaced_partition.js +0 -31
  465. package/dist/krill/lib/select_user_swap_choice.d.ts +0 -9
  466. package/dist/krill/lib/select_user_swap_choice.js +0 -35
  467. package/dist/krill/lib/select_zones.d.ts +0 -8
  468. package/dist/krill/lib/select_zones.js +0 -518
  469. package/dist/lib/utils.d.ts +0 -42
  470. package/dist/lib/utils.js +0 -87
@@ -1,201 +0,0 @@
1
- /**
2
- * ./src/commands/produce.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 { Command, Flags } from '@oclif/core';
9
- import chalk from 'chalk';
10
- import fs from 'node:fs';
11
- import path from 'node:path';
12
- import Compressors from '../classes/compressors.js';
13
- import Ovary from '../classes/ovary.js';
14
- import Utils from '../classes/utils.js';
15
- import Config from './config.js';
16
- // _dirname
17
- const __dirname = path.dirname(new URL(import.meta.url).pathname);
18
- export default class Produce extends Command {
19
- static description = 'produce a live image from your system whithout your data';
20
- static examples = [
21
- 'sudo eggs produce # zstd fast compression',
22
- 'sudo eggs produce --standard # xz compression',
23
- 'sudo eggs produce --max # xz max compression',
24
- 'sudo eggs produce --pendrive # zstd compression optimized pendrive',
25
- 'sudo eggs produce --clone # clone',
26
- 'sudo eggs produce --cryptedclone # crypted clone',
27
- 'sudo eggs produce --basename=colibri',
28
- 'sudo eggs produce --theme lastos',
29
- 'sudo eggs produce --excludes static # you can customize it',
30
- 'sudo eggs produce --excludes homes # exclude /home/*',
31
- 'sudo eggs produce --excludes home # exclude ~/*'
32
- ];
33
- static flags = {
34
- addons: Flags.string({ description: 'addons to be used: adapt, pve, rsupport', multiple: true }),
35
- basename: Flags.string({ description: 'basename' }),
36
- clone: Flags.boolean({ char: 'c', description: 'clone' }),
37
- cryptedclone: Flags.boolean({ char: 'C', description: 'crypted clone' }),
38
- excludes: Flags.string({ description: 'use: static, homes, home', multiple: true }),
39
- help: Flags.help({ char: 'h' }),
40
- links: Flags.string({ description: 'desktop links', multiple: true }),
41
- max: Flags.boolean({ char: 'm', description: 'max compression: xz -Xbcj ...' }),
42
- noicon: Flags.boolean({ char: 'N', description: 'no icon eggs on desktop' }),
43
- nointeractive: Flags.boolean({ char: 'n', description: 'no user interaction' }),
44
- pendrive: Flags.boolean({ char: 'p', description: 'optimized for pendrive: zstd -b 1M -Xcompression-level 15' }),
45
- prefix: Flags.string({ char: 'P', description: 'prefix' }),
46
- release: Flags.boolean({ description: 'release: remove penguins-eggs, calamares and dependencies after installation' }),
47
- script: Flags.boolean({ char: 's', description: 'script mode. Generate scripts to manage iso build' }),
48
- standard: Flags.boolean({ char: 'S', description: 'standard compression: xz -b 1M' }),
49
- theme: Flags.string({ description: 'theme for livecd, calamares branding and partitions' }),
50
- unsecure: Flags.boolean({ char: 'u', description: '/root contents are included on live' }),
51
- verbose: Flags.boolean({ char: 'v', description: 'verbose' }),
52
- yolk: Flags.boolean({ char: 'y', description: 'force yolk renew' })
53
- };
54
- async run() {
55
- Utils.titles(this.id + ' ' + this.argv);
56
- const { flags } = await this.parse(Produce);
57
- const pendrive = flags.pendrive === undefined ? null : Number(flags.pendrive);
58
- if (Utils.isRoot()) {
59
- /**
60
- * ADDONS dei vendors
61
- * Fino a 3
62
- */
63
- const addons = [];
64
- if (flags.addons) {
65
- const { addons } = flags; // array
66
- for (let addon of addons) {
67
- // se non viene specificato il vendor il default è eggs
68
- if (!addon.includes('//')) {
69
- addon = 'eggs/' + addon;
70
- }
71
- const dirAddon = path.resolve(__dirname, `../../addons/${addon}`);
72
- if (!fs.existsSync(dirAddon)) {
73
- console.log(dirAddon);
74
- Utils.warning('addon: ' + chalk.white(addon) + ' not found, terminate!');
75
- process.exit();
76
- }
77
- const vendorAddon = addon.slice(0, Math.max(0, addon.search('/')));
78
- const nameAddon = addon.substring(addon.search('/') + 1, addon.length);
79
- if (nameAddon === 'theme') {
80
- flags.theme = vendorAddon;
81
- }
82
- }
83
- }
84
- // links check
85
- const myLinks = [];
86
- if (flags.links) {
87
- const { links } = flags;
88
- for (const link_ of links) {
89
- if (fs.existsSync(`/usr/share/applications/${link_}.desktop`)) {
90
- myLinks.push(link_);
91
- }
92
- else {
93
- Utils.warning('desktop link: ' + chalk.white('/usr/share/applications/' + link_ + '.desktop') + ' not found!');
94
- }
95
- }
96
- }
97
- /**
98
- * composizione dei flag
99
- */
100
- // excludes
101
- const excludes = {};
102
- excludes.usr = true;
103
- excludes.var = true;
104
- excludes.static = false;
105
- excludes.homes = false;
106
- excludes.home = false;
107
- if (flags.excludes) {
108
- if (flags.excludes.includes('static')) {
109
- excludes.static = true;
110
- }
111
- if (flags.excludes.includes('homes')) {
112
- excludes.homes = true;
113
- }
114
- if (flags.excludes.includes('home')) {
115
- excludes.home = true;
116
- }
117
- }
118
- let prefix = '';
119
- if (flags.prefix !== undefined) {
120
- prefix = flags.prefix;
121
- }
122
- let basename = ''; // se vuoto viene definito da loadsetting (default nome dell'host)
123
- if (flags.basename !== undefined) {
124
- basename = flags.basename;
125
- }
126
- const compressors = new Compressors();
127
- await compressors.populate();
128
- let compression = compressors.fast();
129
- if (flags.max) {
130
- compression = compressors.max();
131
- }
132
- else if (flags.pendrive) {
133
- compression = compressors.pendrive('15');
134
- }
135
- else if (flags.standard) {
136
- compression = compressors.standard();
137
- }
138
- const { release } = flags;
139
- const { cryptedclone } = flags;
140
- const { clone } = flags;
141
- const { verbose } = flags;
142
- const scriptOnly = flags.script;
143
- const yolkRenew = flags.yolk;
144
- const { nointeractive } = flags;
145
- const { noicon } = flags;
146
- // if clone or cryptedclone unsecure = true
147
- const unsecure = flags.unsecure || clone || cryptedclone;
148
- /**
149
- * theme: if not defined will use eggs
150
- */
151
- let theme = 'eggs';
152
- if (flags.theme !== undefined) {
153
- theme = flags.theme;
154
- if (theme.includes('/')) {
155
- if (theme.endsWith('/')) {
156
- theme = theme.slice(0, Math.max(0, theme.length - 1));
157
- }
158
- }
159
- else {
160
- const wpath = `/home/${await Utils.getPrimaryUser()}/.wardrobe/vendors/`;
161
- theme = wpath + flags.theme;
162
- }
163
- theme = path.resolve(theme);
164
- if (!fs.existsSync(theme + '/theme')) {
165
- console.log('Cannot find theme: ' + theme);
166
- process.exit();
167
- }
168
- }
169
- const i = await Config.thatWeNeed(nointeractive, verbose, cryptedclone);
170
- if ((i.needUpdate || i.configurationInstall || i.configurationRefresh || i.distroTemplate)) {
171
- await Config.install(i, nointeractive, verbose);
172
- }
173
- const myAddons = {};
174
- if (flags.addons != undefined) {
175
- if (flags.addons.includes('adapt')) {
176
- myAddons.adapt = true;
177
- }
178
- if (flags.addons.includes('pve')) {
179
- myAddons.pve = true;
180
- }
181
- if (flags.addons.includes('rsupport')) {
182
- myAddons.rsupport = true;
183
- }
184
- }
185
- Utils.titles(this.id + ' ' + this.argv);
186
- const ovary = new Ovary();
187
- Utils.warning('Produce an egg...');
188
- if (i.calamares) {
189
- let message = "this is a GUI system, calamares is available, but NOT installed\n";
190
- Utils.warning(message);
191
- }
192
- if (await ovary.fertilization(prefix, basename, theme, compression, !nointeractive)) {
193
- await ovary.produce(clone, cryptedclone, scriptOnly, yolkRenew, release, myAddons, myLinks, excludes, nointeractive, noicon, unsecure, verbose);
194
- ovary.finished(scriptOnly);
195
- }
196
- }
197
- else {
198
- Utils.useRoot(this.id);
199
- }
200
- }
201
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * ./src/commands/status.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 { Command } from '@oclif/core';
9
- /**
10
- *
11
- */
12
- export default class Status extends Command {
13
- static description: string;
14
- static examples: string[];
15
- static flags: {
16
- help: import("@oclif/core/interfaces").BooleanFlag<void>;
17
- verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
- };
19
- /**
20
- *
21
- */
22
- run(): Promise<void>;
23
- }
@@ -1,31 +0,0 @@
1
- /**
2
- * ./src/commands/status.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 { Command, Flags } from '@oclif/core';
9
- import Information from '../krill/components/information.js';
10
- /**
11
- *
12
- */
13
- export default class Status extends Command {
14
- static description = 'informations about eggs status';
15
- static examples = ['eggs status'];
16
- static flags = {
17
- help: Flags.help({ char: 'h' }),
18
- verbose: Flags.boolean({ char: 'v' })
19
- };
20
- /**
21
- *
22
- */
23
- async run() {
24
- const { flags } = await this.parse(Status);
25
- let verbose = false;
26
- if (flags.verbose) {
27
- verbose = true;
28
- }
29
- Information(verbose);
30
- }
31
- }
@@ -1,45 +0,0 @@
1
- /**
2
- * ./src/commands/syncfrom.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 { Command } from '@oclif/core';
9
- import { IRemix } from '../interfaces/index.js';
10
- /**
11
- *
12
- */
13
- export default class Syncfrom extends Command {
14
- static description: string;
15
- static examples: string[];
16
- static flags: {
17
- delete: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
- file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
- help: import("@oclif/core/interfaces").BooleanFlag<void>;
20
- rootdir: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
- verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
- };
23
- echo: {};
24
- luksName: string;
25
- luksDevice: string;
26
- luksFile: string;
27
- luksMountpoint: string;
28
- remix: IRemix;
29
- rootDir: string;
30
- verbose: boolean;
31
- /**
32
- *
33
- */
34
- luksClose(): Promise<void>;
35
- /**
36
- *
37
- */
38
- luksOpen(): Promise<void>;
39
- run(): Promise<void>;
40
- /**
41
- *
42
- * @param verbose
43
- */
44
- private restorePrivateData;
45
- }
@@ -1,152 +0,0 @@
1
- /**
2
- * ./src/commands/syncfrom.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 { Command, Flags } from '@oclif/core';
9
- import fs from 'node:fs';
10
- import path from 'node:path';
11
- import Distro from '../classes/distro.js';
12
- import Utils from '../classes/utils.js';
13
- import { exec } from '../lib/utils.js';
14
- /**
15
- *
16
- */
17
- export default class Syncfrom extends Command {
18
- static description = 'restore users and user data from a LUKS volumes';
19
- static examples = ['sudo eggs syncfrom', 'sudo eggs syncfrom --file /path/to/luks-volume'];
20
- static flags = {
21
- delete: Flags.string({ description: 'rsync --delete delete extraneous files from dest dirs' }),
22
- file: Flags.string({ char: 'f', description: 'file containing luks-volume encrypted' }),
23
- help: Flags.help({ char: 'h' }),
24
- rootdir: Flags.string({ char: 'r', description: 'rootdir of the installed system, when used from live' }),
25
- verbose: Flags.boolean({ char: 'v', description: 'verbose' })
26
- };
27
- echo = {};
28
- luksName = 'luks-volume';
29
- luksDevice = `/dev/mapper/${this.luksName}`;
30
- luksFile = '';
31
- luksMountpoint = `/tmp/mnt/${this.luksName}`;
32
- remix = {};
33
- rootDir = '/';
34
- verbose = false;
35
- /**
36
- *
37
- */
38
- async luksClose() {
39
- if (Utils.isMountpoint(this.luksMountpoint)) {
40
- await exec(`umount ${this.luksMountpoint}`, this.echo);
41
- }
42
- if (fs.existsSync(this.luksDevice)) {
43
- Utils.warning(`LUKS close volume: ${this.luksName}`);
44
- await exec(`cryptsetup luksClose ${this.luksName}`, this.echo);
45
- }
46
- }
47
- /**
48
- *
49
- */
50
- async luksOpen() {
51
- if (fs.existsSync(this.luksDevice)) {
52
- Utils.warning(`LUKS volume: ${this.luksName} already open`);
53
- }
54
- else {
55
- Utils.warning(`LUKS open volume: ${this.luksName}`);
56
- await exec(`cryptsetup luksOpen --type luks2 ${this.luksFile} ${this.luksName}`, Utils.setEcho(true));
57
- }
58
- if (!fs.existsSync(this.luksMountpoint)) {
59
- await exec(`mkdir -p ${this.luksMountpoint}`, this.echo);
60
- }
61
- if (Utils.isMountpoint(this.luksMountpoint)) {
62
- Utils.warning(`mount volume: ${this.luksDevice} already mounted on ${this.luksMountpoint}`);
63
- }
64
- else {
65
- Utils.warning(`mount volume: ${this.luksDevice} on ${this.luksMountpoint}`);
66
- await exec(`mount ${this.luksDevice} ${this.luksMountpoint}`, this.echo);
67
- }
68
- }
69
- async run() {
70
- const { flags } = await this.parse(Syncfrom);
71
- if (flags.verbose) {
72
- this.verbose = true;
73
- }
74
- this.echo = Utils.setEcho(this.verbose);
75
- let fileVolume = '';
76
- if (flags.file) {
77
- fileVolume = flags.file;
78
- }
79
- let destDelete = false;
80
- if (flags.delete) {
81
- destDelete = true;
82
- }
83
- if (Utils.isLive()) {
84
- if (flags.rootdir) {
85
- this.rootDir = flags.rootdir;
86
- }
87
- else {
88
- Utils.pressKeyToExit('Argument --rootdir is mandatory, when running live! Process will terminate');
89
- }
90
- }
91
- if (Utils.isRoot()) {
92
- if (fileVolume === '') {
93
- const distro = new Distro();
94
- fileVolume = `${distro.liveMediumPath}live/${this.luksName}`;
95
- }
96
- if (Utils.isLive()) {
97
- /**
98
- * WORKING FROM LIVE
99
- */
100
- this.luksName = path.basename(fileVolume);
101
- this.luksFile = fileVolume;
102
- this.luksDevice = `/dev/mapper/${this.luksName}`;
103
- this.luksMountpoint = `/tmp/${this.luksName}`;
104
- await this.restorePrivateData();
105
- }
106
- else {
107
- /**
108
- * WORKING FROM INSTALLED
109
- */
110
- if (fs.existsSync(fileVolume)) {
111
- this.luksName = path.basename(fileVolume);
112
- this.luksFile = fileVolume;
113
- this.luksDevice = `/dev/mapper/${this.luksName}`;
114
- this.luksMountpoint = `/tmp/${this.luksName}`;
115
- await this.restorePrivateData();
116
- if (await Utils.customConfirm('Your system was updated! Press a key to reboot')) {
117
- await exec('reboot');
118
- }
119
- }
120
- else {
121
- Utils.pressKeyToExit(`Can't find ${this.luksFile}`);
122
- }
123
- }
124
- }
125
- else {
126
- Utils.useRoot(this.id);
127
- }
128
- }
129
- /**
130
- *
131
- * @param verbose
132
- */
133
- async restorePrivateData(destDelete = false) {
134
- if (!fs.existsSync(this.luksMountpoint)) {
135
- await exec(`mkdir ${this.luksMountpoint}`, this.echo);
136
- }
137
- await this.luksOpen();
138
- if (Utils.isLive() && this.rootDir !== '/') {
139
- Utils.warning('Restoring crypted data');
140
- // Rimozione dei file esistenti
141
- await exec(`rm -rf ${this.rootDir}/etc/lightdm/lightdm.conf`, this.echo);
142
- await exec(`rm -rf ${this.rootDir}/etc/passwd`, this.echo);
143
- await exec(`rm -rf ${this.rootDir}/etc/group`, this.echo);
144
- await exec(`rm -rf ${this.rootDir}/etc/shadow`, this.echo);
145
- await exec(`rm -rf ${this.rootDir}/home/*`, this.echo);
146
- // unsquashfs
147
- const cmd = `unsquashfs -d ${this.rootDir} -f ${this.luksMountpoint}/private.squashfs`;
148
- await exec(cmd, Utils.setEcho(true));
149
- }
150
- await this.luksClose();
151
- }
152
- }
@@ -1,40 +0,0 @@
1
- /**
2
- * ./src/commands/syncto.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 { Command } from '@oclif/core';
9
- import Settings from '../classes/settings.js';
10
- /**
11
- *
12
- */
13
- export default class Syncto extends Command {
14
- static description: string;
15
- static examples: string[];
16
- static flags: {
17
- excludes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
- file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
- help: import("@oclif/core/interfaces").BooleanFlag<void>;
20
- verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
21
- };
22
- echo: {};
23
- exclude: boolean;
24
- excludeHome: string;
25
- luksName: string;
26
- luksDevice: string;
27
- luksFile: string;
28
- luksMountpoint: string;
29
- privateSquashfs: string;
30
- settings: Settings;
31
- verbose: boolean;
32
- /**
33
- *
34
- */
35
- luksCreate(): Promise<void>;
36
- /**
37
- *
38
- */
39
- run(): Promise<void>;
40
- }
@@ -1,175 +0,0 @@
1
- /**
2
- * ./src/commands/syncto.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
- // https://gist.github.com/ansemjo/6f1cf9d9b8f7ce8f70813f52c63b74a6
9
- import { Command, Flags } from '@oclif/core';
10
- import fs from 'node:fs';
11
- import Compressors from '../classes/compressors.js';
12
- import Settings from '../classes/settings.js';
13
- import Utils from '../classes/utils.js';
14
- import { exec } from '../lib/utils.js';
15
- /**
16
- *
17
- */
18
- export default class Syncto extends Command {
19
- static description = "Save users and users' data ENCRYPTED";
20
- static examples = ['sudo eggs syncto', 'sudo eggs syncto --file /path/to/luks-volume', 'sudo eggs syncto --excludes'];
21
- static flags = {
22
- excludes: Flags.boolean({ char: 'e', description: 'use: exclude.list.d/home.list' }),
23
- file: Flags.string({ char: 'f', description: 'file luks-volume encrypted' }),
24
- help: Flags.help({ char: 'h' }),
25
- verbose: Flags.boolean({ char: 'v', description: 'verbose' })
26
- };
27
- echo = {};
28
- exclude = false;
29
- excludeHome = '/etc/penguins-eggs.d/exclude.list.d/home.list';
30
- luksName = 'luks-volume';
31
- luksDevice = `/dev/mapper/${this.luksName}`;
32
- luksFile = `/tmp/${this.luksName}`;
33
- luksMountpoint = `/tmp/mnt/${this.luksName}`;
34
- privateSquashfs = `private.squashfs`;
35
- settings = {};
36
- verbose = false;
37
- /**
38
- *
39
- */
40
- async luksCreate() {
41
- await exec(`rm -rf ${this.luksFile}`);
42
- // ==========================================================================
43
- // Create squashfs
44
- // ==========================================================================
45
- Utils.warning(`Creating private.squashfs`);
46
- const compressors = new Compressors();
47
- await compressors.populate();
48
- // comp
49
- let comp = '';
50
- this.settings = new Settings();
51
- if (await this.settings.load()) {
52
- let compression = compressors.fast();
53
- if (this.settings.config.compression == `max`) {
54
- compression = compressors.max();
55
- }
56
- else if (this.settings.config.compression == `standard`) {
57
- compression = compressors.standard();
58
- }
59
- comp = `-comp ${compression}`;
60
- }
61
- // exclude /home/eggs
62
- let exclude_nest = '';
63
- if (fs.existsSync(this.settings.work_dir.workdir)) {
64
- exclude_nest = `-e ${this.settings.config.snapshot_dir}`;
65
- }
66
- // exclude file
67
- let exclude_home = '';
68
- if (this.exclude) {
69
- exclude_home = `-ef ${this.excludeHome}`;
70
- }
71
- // creato dummyfs per /etc/
72
- await exec(`mkdir -p /tmp/dummyfs/etc`, this.echo);
73
- await exec(`cp -a /etc/passwd /tmp/dummyfs/etc`, this.echo);
74
- await exec(`cp -a /etc/group /tmp/dummyfs/etc`, this.echo);
75
- await exec(`cp -a /etc/shadow /tmp/dummyfs/etc`, this.echo);
76
- await exec(`mkdir -p /tmp/dummyfs/etc/lightdm`, this.echo); // lightdm
77
- await exec(`cp -a /etc/lightdm/lightdm.conf /tmp/dummyfs/etc/lightdm/`, this.echo); // lightdm
78
- let mkPrivateSquashfs = `mksquashfs \
79
- /tmp/dummyfs/etc \
80
- /home \
81
- /tmp/${this.privateSquashfs} \
82
- ${comp} \
83
- ${exclude_nest} \
84
- ${exclude_home} \
85
- -keep-as-directory \
86
- -noappend`;
87
- mkPrivateSquashfs = mkPrivateSquashfs.replaceAll(/\s\s+/g, ` `);
88
- await exec(mkPrivateSquashfs, Utils.setEcho(true));
89
- // remove dummyfs
90
- await exec(`rm /tmp/dummyfs/ -rf`, this.echo);
91
- // ==========================================================================
92
- // Create LUKS volume
93
- // ==========================================================================
94
- Utils.titles('Creating LUKS Volume');
95
- // calcolo size
96
- const sizeString = (await exec(`unsquashfs -s /tmp/${this.privateSquashfs} | grep "Filesystem size" | sed -e 's/.*size //' -e 's/ .*//'`, { capture: true, echo: false })).data;
97
- let size = Number.parseInt(sizeString) + 2048;
98
- console.log('size private.squashfs:', bytesToGB(size), size);
99
- const luksBlockSize = 512;
100
- const luksBlocks = Math.ceil(size / luksBlockSize);
101
- size = luksBlockSize * luksBlocks;
102
- // Aggiungo un 20% in più per ottenere luksSize
103
- const luksSize = Math.ceil(size * 1.2);
104
- console.log('luksSize:', bytesToGB(luksSize), luksSize);
105
- // truncate * 2048 è cruciale
106
- const truncateAt = luksSize * 2048;
107
- Utils.warning(`Preparing file ${this.luksFile} for ${this.luksDevice}, size ${truncateAt}`);
108
- await exec(`truncate --size ${luksSize} ${this.luksFile}`, this.echo);
109
- Utils.warning(`Creating LUKS Volume on ${this.luksFile}`);
110
- await exec(`cryptsetup --batch-mode luksFormat ${this.luksFile}`, Utils.setEcho(true));
111
- console.log('');
112
- // open LUKS volume temp
113
- Utils.warning(`Opening LUKS Volume on ${this.luksFile}`);
114
- const { code } = await exec(`cryptsetup luksOpen ${this.luksFile} ${this.luksName}`, Utils.setEcho(true));
115
- if (code != 0) {
116
- Utils.error(`cryptsetup luksOpen ${this.luksFile} ${this.luksName} failed`);
117
- process.exit(code);
118
- }
119
- await exec('udevadm settle', this.echo);
120
- // formatta ext4 il volume
121
- await exec(`mkfs.ext4 ${this.luksDevice}`, this.echo);
122
- console.log('');
123
- // mount LUKS volume
124
- if (!fs.existsSync(`this.luksMountpoint)`)) {
125
- Utils.warning(`creating mountpoint ${this.luksMountpoint}`);
126
- await exec(`mkdir -p ${this.luksMountpoint}`, this.echo);
127
- }
128
- if (!Utils.isMountpoint(`${this.luksMountpoint}`)) {
129
- Utils.warning(`mounting volume: ${this.luksDevice} on ${this.luksMountpoint}`);
130
- const { code } = await exec(`mount ${this.luksDevice} ${this.luksMountpoint}`, Utils.setEcho(true));
131
- if (code != 0) {
132
- Utils.error(`mount ${this.luksDevice} ${this.luksMountpoint} failed`);
133
- process.exit(code);
134
- }
135
- }
136
- // copy private.squashfs
137
- Utils.warning(`moving /tmp/${this.privateSquashfs} to ${this.luksMountpoint}`);
138
- await exec(`mv /tmp/${this.privateSquashfs} ${this.luksMountpoint}`, this.echo);
139
- Utils.warning(`Umounting ${this.luksMountpoint}`);
140
- await exec(`umount ${this.luksMountpoint}`, this.echo);
141
- Utils.warning(`Vlosing ${this.luksMountpoint}`);
142
- await exec(`cryptsetup luksClose ${this.luksName}`, this.echo);
143
- }
144
- /**
145
- *
146
- */
147
- async run() {
148
- Utils.titles(this.id + ' ' + this.argv);
149
- const { flags } = await this.parse(Syncto);
150
- if (flags.verbose) {
151
- this.verbose = true;
152
- }
153
- this.echo = Utils.setEcho(this.verbose);
154
- let fileLuks = '';
155
- if (flags.file) {
156
- fileLuks = flags.file;
157
- }
158
- if (flags.excludes) {
159
- this.exclude = true;
160
- }
161
- if (Utils.isRoot()) {
162
- await this.luksCreate();
163
- }
164
- else {
165
- Utils.useRoot(this.id);
166
- }
167
- }
168
- }
169
- /**
170
- * Convert bytes to gigabytes
171
- */
172
- function bytesToGB(bytes) {
173
- const gigabytes = bytes / 1_073_741_824;
174
- return gigabytes.toFixed(2) + ' GB';
175
- }