penguins-eggs 10.0.53 → 10.0.55

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 (346) hide show
  1. package/.oclif.manifest.json +1548 -2
  2. package/README.md +787 -0
  3. package/addons/eggs/theme/livecd/grub.main.simple.cfg +49 -0
  4. package/addons/eggs/theme/livecd/isolinux.theme.cfg +6 -5
  5. package/conf/derivatives.yaml +2 -1
  6. package/conf/distros/fedora/calamares/settings.yml +0 -6
  7. package/dist/classes/bleach.d.ts +32 -0
  8. package/dist/classes/bleach.js +135 -0
  9. package/dist/classes/cfs.d.ts +17 -0
  10. package/dist/classes/cfs.js +39 -0
  11. package/dist/classes/cli-autologin.d.ts +52 -0
  12. package/dist/classes/cli-autologin.js +247 -0
  13. package/dist/classes/compressors.d.ts +54 -0
  14. package/dist/classes/compressors.js +109 -0
  15. package/dist/classes/daddy.d.ts +26 -0
  16. package/dist/classes/daddy.js +167 -0
  17. package/dist/classes/distro.d.ts +32 -0
  18. package/dist/classes/distro.js +360 -0
  19. package/dist/classes/diversions.d.ts +48 -0
  20. package/dist/classes/diversions.js +116 -0
  21. package/dist/classes/incubation/branding.d.ts +17 -0
  22. package/dist/classes/incubation/branding.js +85 -0
  23. package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
  24. package/dist/classes/incubation/fisherman-helper/displaymanager.js +40 -0
  25. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  26. package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
  27. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  28. package/dist/classes/incubation/fisherman-helper/settings.js +83 -0
  29. package/dist/classes/incubation/fisherman.d.ts +70 -0
  30. package/dist/classes/incubation/fisherman.js +263 -0
  31. package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
  32. package/dist/classes/incubation/incubator.d/alpine.js +78 -0
  33. package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
  34. package/dist/classes/incubation/incubator.d/bionic.js +83 -0
  35. package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
  36. package/dist/classes/incubation/incubator.d/buster.js +85 -0
  37. package/dist/classes/incubation/incubator.d/jessie.d.ts +31 -0
  38. package/dist/classes/incubation/incubator.d/jessie.js +44 -0
  39. package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
  40. package/dist/classes/incubation/incubator.d/noble.js +85 -0
  41. package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
  42. package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
  43. package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
  44. package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
  45. package/dist/classes/incubation/incubator.d/rolling.d.ts +32 -0
  46. package/dist/classes/incubation/incubator.d/rolling.js +80 -0
  47. package/dist/classes/incubation/incubator.d.ts +44 -0
  48. package/dist/classes/incubation/incubator.js +382 -0
  49. package/dist/classes/incubation/installer.d.ts +13 -0
  50. package/dist/classes/incubation/installer.js +52 -0
  51. package/dist/classes/keyboards.d.ts +50 -0
  52. package/dist/classes/keyboards.js +287 -0
  53. package/dist/classes/locales.d.ts +21 -0
  54. package/dist/classes/locales.js +77 -0
  55. package/dist/classes/network.d.ts +37 -0
  56. package/dist/classes/network.js +98 -0
  57. package/dist/classes/ovary.d.ts +198 -0
  58. package/dist/classes/ovary.js +1843 -0
  59. package/dist/classes/pacman.d/aldos.d.ts +52 -0
  60. package/dist/classes/pacman.d/aldos.js +100 -0
  61. package/dist/classes/pacman.d/alpine.d.ts +56 -0
  62. package/dist/classes/pacman.d/alpine.js +162 -0
  63. package/dist/classes/pacman.d/archlinux.d.ts +62 -0
  64. package/dist/classes/pacman.d/archlinux.js +137 -0
  65. package/dist/classes/pacman.d/debian.d.ts +65 -0
  66. package/dist/classes/pacman.d/debian.js +143 -0
  67. package/dist/classes/pacman.d/fedora.d.ts +53 -0
  68. package/dist/classes/pacman.d/fedora.js +101 -0
  69. package/dist/classes/pacman.d/openmamba.d.ts +52 -0
  70. package/dist/classes/pacman.d/openmamba.js +100 -0
  71. package/dist/classes/pacman.d/opensuse.d.ts +53 -0
  72. package/dist/classes/pacman.d/opensuse.js +102 -0
  73. package/dist/classes/pacman.d/voidlinux.d.ts +52 -0
  74. package/dist/classes/pacman.d/voidlinux.js +90 -0
  75. package/dist/classes/pacman.d.ts +139 -0
  76. package/dist/classes/pacman.js +775 -0
  77. package/dist/classes/pve-live.d.ts +17 -0
  78. package/dist/classes/pve-live.js +52 -0
  79. package/dist/classes/pxe.d.ts +74 -0
  80. package/dist/classes/pxe.js +410 -0
  81. package/dist/classes/settings.d.ts +53 -0
  82. package/dist/classes/settings.js +185 -0
  83. package/dist/classes/sources_list.d.ts +28 -0
  84. package/dist/classes/sources_list.js +89 -0
  85. package/dist/classes/systemctl.d.ts +47 -0
  86. package/dist/classes/systemctl.js +86 -0
  87. package/dist/classes/tailor.d.ts +50 -0
  88. package/dist/classes/tailor.js +526 -0
  89. package/dist/classes/tools.d.ts +26 -0
  90. package/dist/classes/tools.js +50 -0
  91. package/dist/classes/users.d.ts +28 -0
  92. package/dist/classes/users.js +143 -0
  93. package/dist/classes/utils.d.ts +324 -0
  94. package/dist/classes/utils.js +976 -0
  95. package/dist/classes/xdg.d.ts +45 -0
  96. package/dist/classes/xdg.js +337 -0
  97. package/dist/classes/yolk.d.ts +33 -0
  98. package/dist/classes/yolk.js +114 -0
  99. package/dist/commands/adapt.d.ts +17 -0
  100. package/dist/commands/adapt.js +33 -0
  101. package/dist/commands/analyze.d.ts +26 -0
  102. package/dist/commands/analyze.js +95 -0
  103. package/dist/commands/calamares.d.ts +29 -0
  104. package/dist/commands/calamares.js +112 -0
  105. package/dist/commands/config.d.ts +35 -0
  106. package/dist/commands/config.js +120 -0
  107. package/dist/commands/cuckoo.d.ts +16 -0
  108. package/dist/commands/cuckoo.js +62 -0
  109. package/dist/commands/dad.d.ts +20 -0
  110. package/dist/commands/dad.js +46 -0
  111. package/dist/commands/export/iso.d.ts +19 -0
  112. package/dist/commands/export/iso.js +55 -0
  113. package/dist/commands/export/pkg.d.ts +29 -0
  114. package/dist/commands/export/pkg.js +163 -0
  115. package/dist/commands/export/tarballs.d.ts +27 -0
  116. package/dist/commands/export/tarballs.js +84 -0
  117. package/dist/commands/install.d.ts +37 -0
  118. package/dist/commands/install.js +88 -0
  119. package/dist/commands/kill.d.ts +24 -0
  120. package/dist/commands/kill.js +50 -0
  121. package/dist/commands/love.d.ts +20 -0
  122. package/dist/commands/love.js +59 -0
  123. package/dist/commands/mom.d.ts +16 -0
  124. package/dist/commands/mom.js +30 -0
  125. package/dist/commands/produce.d.ts +34 -0
  126. package/dist/commands/produce.js +201 -0
  127. package/dist/commands/status.d.ts +23 -0
  128. package/dist/commands/status.js +31 -0
  129. package/dist/commands/syncfrom.d.ts +45 -0
  130. package/dist/commands/syncfrom.js +152 -0
  131. package/dist/commands/syncto.d.ts +40 -0
  132. package/dist/commands/syncto.js +175 -0
  133. package/dist/commands/tools/clean.d.ts +18 -0
  134. package/dist/commands/tools/clean.js +37 -0
  135. package/dist/commands/tools/ppa.d.ts +26 -0
  136. package/dist/commands/tools/ppa.js +138 -0
  137. package/dist/commands/tools/skel.d.ts +18 -0
  138. package/dist/commands/tools/skel.js +44 -0
  139. package/dist/commands/tools/stat.d.ts +31 -0
  140. package/dist/commands/tools/stat.js +70 -0
  141. package/dist/commands/tools/yolk.d.ts +24 -0
  142. package/dist/commands/tools/yolk.js +45 -0
  143. package/dist/commands/update.d.ts +51 -0
  144. package/dist/commands/update.js +219 -0
  145. package/dist/commands/wardrobe/get.d.ts +23 -0
  146. package/dist/commands/wardrobe/get.js +52 -0
  147. package/dist/commands/wardrobe/list.d.ts +24 -0
  148. package/dist/commands/wardrobe/list.js +125 -0
  149. package/dist/commands/wardrobe/show.d.ts +25 -0
  150. package/dist/commands/wardrobe/show.js +97 -0
  151. package/dist/commands/wardrobe/wear.d.ts +26 -0
  152. package/dist/commands/wardrobe/wear.js +84 -0
  153. package/dist/components/finished.d.ts +16 -0
  154. package/dist/components/finished.js +56 -0
  155. package/dist/components/information.d.ts +8 -0
  156. package/dist/components/information.js +154 -0
  157. package/dist/components/install.d.ts +15 -0
  158. package/dist/components/install.js +60 -0
  159. package/dist/components/keyboard.d.ts +16 -0
  160. package/dist/components/keyboard.js +54 -0
  161. package/dist/components/location.d.ts +16 -0
  162. package/dist/components/location.js +59 -0
  163. package/dist/components/network.d.ts +19 -0
  164. package/dist/components/network.js +65 -0
  165. package/dist/components/partitions.d.ts +16 -0
  166. package/dist/components/partitions.js +73 -0
  167. package/dist/components/steps.d.ts +13 -0
  168. package/dist/components/steps.js +148 -0
  169. package/dist/components/summary.d.ts +24 -0
  170. package/dist/components/summary.js +81 -0
  171. package/dist/components/title.d.ts +11 -0
  172. package/dist/components/title.js +35 -0
  173. package/dist/components/users.d.ts +24 -0
  174. package/dist/components/users.js +80 -0
  175. package/dist/components/welcome.d.ts +13 -0
  176. package/dist/components/welcome.js +63 -0
  177. package/dist/index-old.d.ts +8 -0
  178. package/dist/index-old.js +8 -0
  179. package/dist/index.d.ts +54 -0
  180. package/dist/index.js +147 -0
  181. package/dist/interfaces/i-addons.d.ts +12 -0
  182. package/dist/interfaces/i-addons.js +8 -0
  183. package/dist/interfaces/i-analyze.d.ts +17 -0
  184. package/dist/interfaces/i-analyze.js +17 -0
  185. package/dist/interfaces/i-app.d.ts +14 -0
  186. package/dist/interfaces/i-app.js +8 -0
  187. package/dist/interfaces/i-branding.d.ts +36 -0
  188. package/dist/interfaces/i-branding.js +8 -0
  189. package/dist/interfaces/i-calamares-displaymanager.d.ts +17 -0
  190. package/dist/interfaces/i-calamares-displaymanager.js +1 -0
  191. package/dist/interfaces/i-calamares-finished.d.ts +12 -0
  192. package/dist/interfaces/i-calamares-finished.js +1 -0
  193. package/dist/interfaces/i-calamares-packages.d.ts +28 -0
  194. package/dist/interfaces/i-calamares-packages.js +1 -0
  195. package/dist/interfaces/i-calamares-partition.d.ts +40 -0
  196. package/dist/interfaces/i-calamares-partition.js +1 -0
  197. package/dist/interfaces/i-config-tools.d.ts +15 -0
  198. package/dist/interfaces/i-config-tools.js +8 -0
  199. package/dist/interfaces/i-devices.d.ts +20 -0
  200. package/dist/interfaces/i-devices.js +8 -0
  201. package/dist/interfaces/i-distro.d.ts +23 -0
  202. package/dist/interfaces/i-distro.js +8 -0
  203. package/dist/interfaces/i-drive-list.d.ts +33 -0
  204. package/dist/interfaces/i-drive-list.js +8 -0
  205. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  206. package/dist/interfaces/i-eggs-config.js +8 -0
  207. package/dist/interfaces/i-excludes.d.ts +14 -0
  208. package/dist/interfaces/i-excludes.js +8 -0
  209. package/dist/interfaces/i-exec.d.ts +11 -0
  210. package/dist/interfaces/i-exec.js +8 -0
  211. package/dist/interfaces/i-initrd.d.ts +13 -0
  212. package/dist/interfaces/i-initrd.js +8 -0
  213. package/dist/interfaces/i-install.d.ts +16 -0
  214. package/dist/interfaces/i-install.js +8 -0
  215. package/dist/interfaces/i-installer.d.ts +17 -0
  216. package/dist/interfaces/i-installer.js +8 -0
  217. package/dist/interfaces/i-krill-config.d.ts +33 -0
  218. package/dist/interfaces/i-krill-config.js +8 -0
  219. package/dist/interfaces/i-krill.d.ts +42 -0
  220. package/dist/interfaces/i-krill.js +8 -0
  221. package/dist/interfaces/i-materia.d.ts +36 -0
  222. package/dist/interfaces/i-materia.js +8 -0
  223. package/dist/interfaces/i-net.d.ts +16 -0
  224. package/dist/interfaces/i-net.js +8 -0
  225. package/dist/interfaces/i-packages.d.ts +16 -0
  226. package/dist/interfaces/i-packages.js +8 -0
  227. package/dist/interfaces/i-partitions.d.ts +16 -0
  228. package/dist/interfaces/i-partitions.js +8 -0
  229. package/dist/interfaces/i-pxe.d.ts +45 -0
  230. package/dist/interfaces/i-pxe.js +1 -0
  231. package/dist/interfaces/i-remix.d.ts +21 -0
  232. package/dist/interfaces/i-remix.js +8 -0
  233. package/dist/interfaces/i-settings.d.ts +33 -0
  234. package/dist/interfaces/i-settings.js +8 -0
  235. package/dist/interfaces/i-user.d.ts +14 -0
  236. package/dist/interfaces/i-user.js +8 -0
  237. package/dist/interfaces/i-workdir.d.ts +14 -0
  238. package/dist/interfaces/i-workdir.js +8 -0
  239. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  240. package/dist/interfaces/i-xkb-model.js +8 -0
  241. package/dist/interfaces/index.d.ts +25 -0
  242. package/dist/interfaces/index.js +8 -0
  243. package/dist/krill/modules/add-user.d.ts +20 -0
  244. package/dist/krill/modules/add-user.js +48 -0
  245. package/dist/krill/modules/bootloader-config.d.ts +14 -0
  246. package/dist/krill/modules/bootloader-config.js +165 -0
  247. package/dist/krill/modules/bootloader.d.ts +14 -0
  248. package/dist/krill/modules/bootloader.js +157 -0
  249. package/dist/krill/modules/change-password.d.ts +15 -0
  250. package/dist/krill/modules/change-password.js +18 -0
  251. package/dist/krill/modules/del-live-user.d.ts +14 -0
  252. package/dist/krill/modules/del-live-user.js +39 -0
  253. package/dist/krill/modules/fstab.d.ts +14 -0
  254. package/dist/krill/modules/fstab.js +123 -0
  255. package/dist/krill/modules/grubcfg.d.ts +17 -0
  256. package/dist/krill/modules/grubcfg.js +29 -0
  257. package/dist/krill/modules/hostname.d.ts +13 -0
  258. package/dist/krill/modules/hostname.js +50 -0
  259. package/dist/krill/modules/initramfs-cfg.d.ts +14 -0
  260. package/dist/krill/modules/initramfs-cfg.js +22 -0
  261. package/dist/krill/modules/initramfs.d.ts +13 -0
  262. package/dist/krill/modules/initramfs.js +54 -0
  263. package/dist/krill/modules/locale-cfg.d.ts +10 -0
  264. package/dist/krill/modules/locale-cfg.js +58 -0
  265. package/dist/krill/modules/locale.d.ts +13 -0
  266. package/dist/krill/modules/locale.js +91 -0
  267. package/dist/krill/modules/m-keyboard.d.ts +14 -0
  268. package/dist/krill/modules/m-keyboard.js +58 -0
  269. package/dist/krill/modules/machine-id.d.ts +15 -0
  270. package/dist/krill/modules/machine-id.js +33 -0
  271. package/dist/krill/modules/mkfs.d.ts +15 -0
  272. package/dist/krill/modules/mkfs.js +50 -0
  273. package/dist/krill/modules/mount-fs.d.ts +17 -0
  274. package/dist/krill/modules/mount-fs.js +62 -0
  275. package/dist/krill/modules/mount-vfs.d.ts +17 -0
  276. package/dist/krill/modules/mount-vfs.js +40 -0
  277. package/dist/krill/modules/network-cfg.d.ts +19 -0
  278. package/dist/krill/modules/network-cfg.js +64 -0
  279. package/dist/krill/modules/packages.d.ts +14 -0
  280. package/dist/krill/modules/packages.js +111 -0
  281. package/dist/krill/modules/partition.d.ts +20 -0
  282. package/dist/krill/modules/partition.js +324 -0
  283. package/dist/krill/modules/remove-installer-link.d.ts +13 -0
  284. package/dist/krill/modules/remove-installer-link.js +35 -0
  285. package/dist/krill/modules/umount.d.ts +14 -0
  286. package/dist/krill/modules/umount.js +28 -0
  287. package/dist/krill/modules/unpackfs.d.ts +13 -0
  288. package/dist/krill/modules/unpackfs.js +20 -0
  289. package/dist/krill/prepare.d.ts +78 -0
  290. package/dist/krill/prepare.js +624 -0
  291. package/dist/krill/sequence.d.ts +154 -0
  292. package/dist/krill/sequence.js +652 -0
  293. package/dist/lib/get_address.d.ts +8 -0
  294. package/dist/lib/get_address.js +23 -0
  295. package/dist/lib/get_dns.d.ts +8 -0
  296. package/dist/lib/get_dns.js +23 -0
  297. package/dist/lib/get_domain.d.ts +8 -0
  298. package/dist/lib/get_domain.js +23 -0
  299. package/dist/lib/get_gateway.d.ts +8 -0
  300. package/dist/lib/get_gateway.js +23 -0
  301. package/dist/lib/get_hostname.d.ts +8 -0
  302. package/dist/lib/get_hostname.js +23 -0
  303. package/dist/lib/get_netmask.d.ts +8 -0
  304. package/dist/lib/get_netmask.js +23 -0
  305. package/dist/lib/get_password.d.ts +8 -0
  306. package/dist/lib/get_password.js +36 -0
  307. package/dist/lib/get_userfullname.d.ts +8 -0
  308. package/dist/lib/get_userfullname.js +23 -0
  309. package/dist/lib/get_username.d.ts +8 -0
  310. package/dist/lib/get_username.js +23 -0
  311. package/dist/lib/kill_me_softly.d.ts +11 -0
  312. package/dist/lib/kill_me_softly.js +61 -0
  313. package/dist/lib/select_address_type.d.ts +8 -0
  314. package/dist/lib/select_address_type.js +24 -0
  315. package/dist/lib/select_filesystem_type.d.ts +8 -0
  316. package/dist/lib/select_filesystem_type.js +46 -0
  317. package/dist/lib/select_installation_device.d.ts +8 -0
  318. package/dist/lib/select_installation_device.js +30 -0
  319. package/dist/lib/select_installation_mode.d.ts +8 -0
  320. package/dist/lib/select_installation_mode.js +24 -0
  321. package/dist/lib/select_interface.d.ts +8 -0
  322. package/dist/lib/select_interface.js +24 -0
  323. package/dist/lib/select_keyboard_layout.d.ts +11 -0
  324. package/dist/lib/select_keyboard_layout.js +36 -0
  325. package/dist/lib/select_keyboard_model.d.ts +11 -0
  326. package/dist/lib/select_keyboard_model.js +34 -0
  327. package/dist/lib/select_keyboard_option.d.ts +11 -0
  328. package/dist/lib/select_keyboard_option.js +34 -0
  329. package/dist/lib/select_keyboard_variant.d.ts +11 -0
  330. package/dist/lib/select_keyboard_variant.js +35 -0
  331. package/dist/lib/select_languages.d.ts +8 -0
  332. package/dist/lib/select_languages.js +28 -0
  333. package/dist/lib/select_regions.d.ts +8 -0
  334. package/dist/lib/select_regions.js +24 -0
  335. package/dist/lib/select_user_swap_choice.d.ts +8 -0
  336. package/dist/lib/select_user_swap_choice.js +34 -0
  337. package/dist/lib/select_zones.d.ts +8 -0
  338. package/dist/lib/select_zones.js +518 -0
  339. package/dist/lib/utils.d.ts +34 -0
  340. package/dist/lib/utils.js +79 -0
  341. package/manpages/doc/man/eggs.1.gz +0 -0
  342. package/manpages/doc/man/eggs.html +635 -4
  343. package/package.json +11 -7
  344. package/scripts/_eggs +10 -1
  345. package/scripts/eggs.bash +1 -0
  346. /package/addons/eggs/theme/livecd/{grub.main.cfg → grub.main.full.cfg} +0 -0
@@ -0,0 +1,652 @@
1
+ /**
2
+ * ./src/krill/sequence.tsx
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ * https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
8
+ */
9
+ import Settings from '../classes/settings.js';
10
+ import React from 'react';
11
+ import { render, Box, Text } from 'ink';
12
+ import Install from '../components/install.js';
13
+ import Finished from '../components/finished.js';
14
+ import fs from 'fs';
15
+ import yaml from 'js-yaml';
16
+ import { installer } from '../classes/incubation/installer.js';
17
+ import CliAutologin from '../classes/cli-autologin.js';
18
+ import Distro from '../classes/distro.js';
19
+ import Pacman from '../classes/pacman.js';
20
+ import Utils from '../classes/utils.js';
21
+ import Xdg from '../classes/xdg.js';
22
+ import { exec } from '../lib/utils.js';
23
+ // import krill modules
24
+ import partition from './modules/partition.js';
25
+ import { mountFs, umountFs } from './modules/mount-fs.js';
26
+ import { mountVfs, umountVfs } from './modules/mount-vfs.js';
27
+ import unpackfs from './modules/unpackfs.js';
28
+ import machineId from './modules/machine-id.js';
29
+ import fstab from './modules/fstab.js';
30
+ import locale from './modules/locale.js';
31
+ import mKeyboard from './modules/m-keyboard.js';
32
+ import localeCfg from './modules/locale-cfg.js';
33
+ // users
34
+ import addUser from './modules/add-user.js';
35
+ import changePassword from './modules/change-password.js';
36
+ // displaymanager: autologin
37
+ import networkCfg from './modules/network-cfg.js';
38
+ // hwclock:
39
+ // services-systemd:
40
+ // bootloader-config
41
+ import bootloaderConfig from './modules/bootloader-config.js';
42
+ import grubcfg from './modules/grubcfg.js';
43
+ import bootloader from './modules/bootloader.js';
44
+ import packages from './modules/packages.js';
45
+ import removeInstallerLink from './modules/remove-installer-link.js';
46
+ import initramfsCfg from './modules/initramfs-cfg.js';
47
+ import initramfs from './modules/initramfs.js';
48
+ import delLiveUser from './modules/del-live-user.js';
49
+ import umount from './modules/umount.js';
50
+ import mkfs from './modules/mkfs.js';
51
+ import hostname from './modules/hostname.js';
52
+ import CFS from '../classes/cfs.js';
53
+ import Title from '../components/title.js';
54
+ import cliCursor from 'cli-cursor';
55
+ import { spawnSync } from 'child_process';
56
+ /**
57
+ * hatching: installazione o cova!!!
58
+ */
59
+ export default class Sequence {
60
+ partition = partition;
61
+ // mount
62
+ mountFs = mountFs;
63
+ mountVfs = mountVfs;
64
+ //
65
+ unpackfs = unpackfs;
66
+ machineId = machineId;
67
+ fstab = fstab;
68
+ locale = locale;
69
+ keyboard = mKeyboard;
70
+ localeCfg = localeCfg;
71
+ // users
72
+ addUser = addUser;
73
+ changePassword = changePassword;
74
+ // displaumanager: autologin
75
+ networkCfg = networkCfg;
76
+ // hwclock:
77
+ // services-systemd:
78
+ // bootloader-config
79
+ bootloaderConfig = bootloaderConfig;
80
+ //
81
+ grubcfg = grubcfg;
82
+ bootloader = bootloader;
83
+ packages = packages;
84
+ removeInstallerLink = removeInstallerLink;
85
+ // luksbootkeyfile:
86
+ // plymouthcfg;
87
+ initramfsCfg = initramfsCfg;
88
+ initramfs = initramfs;
89
+ delLiveUser = delLiveUser;
90
+ umountFs = umountFs;
91
+ umountVfs = umountVfs;
92
+ umount = umount;
93
+ mkfs = mkfs;
94
+ hostname = hostname;
95
+ installer = {};
96
+ installTarget = '/tmp/calamares-krill-root';
97
+ verbose = false;
98
+ echo = {};
99
+ efi = false;
100
+ devices = {};
101
+ users = {};
102
+ network = {};
103
+ partitions = {};
104
+ language = '';
105
+ region = '';
106
+ zone = '';
107
+ keyboardModel = '';
108
+ keyboardLayout = '';
109
+ keyboardVariant = '';
110
+ toNull = ' > /dev/null 2>&1';
111
+ spinner = true;
112
+ settings = {};
113
+ remix = {};
114
+ distro = {};
115
+ // Crypted Clone
116
+ luksName = 'luks-volume';
117
+ luksFile = ``;
118
+ luksDevice = `/dev/mapper/${this.luksName}`;
119
+ luksMountpoint = `/mnt`;
120
+ is_clone = fs.existsSync('penguins-eggs.d/is_clone');
121
+ is_crypted_clone = fs.existsSync('/etc/penguins-eggs.d/is_crypted_clone');
122
+ unattended = false;
123
+ nointeractive = false;
124
+ chroot = false;
125
+ halt = false;
126
+ cliAutologin = new CliAutologin();
127
+ /**
128
+ * constructor
129
+ */
130
+ constructor(location, keyboard, partitions, users, network) {
131
+ this.installer = installer();
132
+ this.settings = new Settings();
133
+ this.language = location.language;
134
+ this.region = location.region;
135
+ this.zone = location.zone;
136
+ this.keyboardModel = keyboard.keyboardModel;
137
+ this.keyboardLayout = keyboard.keyboardLayout;
138
+ this.keyboardVariant = keyboard.keyboardVariant;
139
+ this.network = network;
140
+ this.partitions = partitions;
141
+ this.users = users;
142
+ this.devices.efi = {};
143
+ this.devices.boot = {};
144
+ this.devices.root = {};
145
+ this.devices.data = {};
146
+ this.devices.swap = {};
147
+ this.distro = new Distro();
148
+ this.efi = fs.existsSync('/sys/firmware/efi/efivars');
149
+ this.luksFile = `${this.distro.liveMediumPath}live/${this.luksName}`;
150
+ }
151
+ /**
152
+ * install
153
+ * @param verbose
154
+ * @param umount
155
+ * @returns
156
+ */
157
+ async start(domain = '', unattended = false, nointeractive = false, chroot = false, halt = false, verbose = false) {
158
+ // Imposta il domain per flag
159
+ if (domain !== '') {
160
+ if (domain.at(0) !== '.') {
161
+ domain = '.' + domain;
162
+ }
163
+ this.network.domain = domain;
164
+ }
165
+ /**
166
+ * To let krill to work with Arch we need:
167
+ */
168
+ if (this.distro.familyId === 'archlinux') {
169
+ if (this.distro.distroId === 'ManjaroLinux') {
170
+ await exec(`ln -s /run/miso/bootmnt/live/ /live`);
171
+ }
172
+ else {
173
+ await exec(`ln -s /run/archiso/bootmnt/live/ /live`);
174
+ }
175
+ }
176
+ /**
177
+ * dmsetup remove_all
178
+ */
179
+ if (this.distro.familyId === 'opensuse') {
180
+ await exec('dmsetup remove_all');
181
+ }
182
+ this.unattended = unattended;
183
+ this.nointeractive = nointeractive;
184
+ this.chroot = chroot;
185
+ this.halt = halt;
186
+ this.verbose = verbose;
187
+ this.echo = Utils.setEcho(this.verbose);
188
+ if (this.verbose) {
189
+ this.toNull = '';
190
+ this.spinner = false;
191
+ }
192
+ // start
193
+ await this.settings.load();
194
+ let isPartitioned = false;
195
+ let message = "Creating partitions";
196
+ await redraw(React.createElement(Install, { message: message, percent: 0, spinner: this.spinner }));
197
+ try {
198
+ isPartitioned = await this.partition();
199
+ }
200
+ catch (error) {
201
+ await this.showProblem(message, error);
202
+ }
203
+ if (isPartitioned) {
204
+ // formatting
205
+ message = "Formatting file system";
206
+ await redraw(React.createElement(Install, { message: message, percent: 6, spinner: this.spinner }));
207
+ try {
208
+ await this.mkfs();
209
+ }
210
+ catch (error) {
211
+ await this.showProblem(message, error);
212
+ }
213
+ // mountFs
214
+ message = "Mounting target file system";
215
+ redraw(React.createElement(Install, { message: message, percent: 9, spinner: this.spinner }));
216
+ try {
217
+ let success = await this.mountFs();
218
+ await sleep(500); // diamo il tempo di montare
219
+ }
220
+ catch (error) {
221
+ await this.showProblem(message, error);
222
+ }
223
+ // mountVfs
224
+ message = "Mounting on target VFS";
225
+ await redraw(React.createElement(Install, { message: message, percent: 12, spinner: this.spinner }));
226
+ try {
227
+ await this.mountVfs();
228
+ }
229
+ catch (error) {
230
+ await this.showProblem(message, error);
231
+ }
232
+ // unpackfs
233
+ message = "Unpacking filesystem";
234
+ await redraw(React.createElement(Install, { message: message, percent: 15, spinner: this.spinner }));
235
+ try {
236
+ await this.unpackfs();
237
+ }
238
+ catch (error) {
239
+ await this.showProblem(message, error);
240
+ }
241
+ // dpkg-unsafe-io
242
+ if (this.distro.familyId === 'debian') {
243
+ message = "Force dpkg-unsafe-io";
244
+ await redraw(React.createElement(Install, { message: message, percent: 40, spinner: this.spinner }));
245
+ try {
246
+ await this.execCalamaresModule('dpkg-unsafe-io');
247
+ }
248
+ catch (error) {
249
+ await this.showProblem(message, error);
250
+ }
251
+ }
252
+ // sources-yolk
253
+ if (this.distro.familyId === 'debian') {
254
+ message = 'Add sources-yolk';
255
+ await redraw(React.createElement(Install, { message: message, percent: 43, spinner: this.spinner }));
256
+ try {
257
+ await this.execCalamaresModule('sources-yolk');
258
+ }
259
+ catch (error) {
260
+ await this.showProblem(message, error);
261
+ }
262
+ }
263
+ // machineid
264
+ message = 'machineid';
265
+ await redraw(React.createElement(Install, { message: message, percent: 46, spinner: this.spinner }));
266
+ try {
267
+ await this.machineId();
268
+ }
269
+ catch (error) {
270
+ await this.showProblem(message, error);
271
+ }
272
+ // fstab
273
+ message = "Creating fstab";
274
+ await redraw(React.createElement(Install, { message: message, percent: 49, spinner: this.spinner }));
275
+ try {
276
+ await this.fstab(this.partitions.installationDevice);
277
+ }
278
+ catch (error) {
279
+ await this.showProblem(message, error);
280
+ }
281
+ /**
282
+ * CryptedClone exec eggs syncfrom
283
+ */
284
+ if (this.is_crypted_clone) {
285
+ message = "Restore private data from crypted clone";
286
+ await redraw(React.createElement(Install, { message: message, percent: 55, spinner: this.spinner }));
287
+ if (fs.existsSync(this.luksFile)) {
288
+ let cmd = `eggs syncfrom --rootdir /tmp/calamares-krill-root/ --file ${this.luksFile}`;
289
+ try {
290
+ await exec(cmd, Utils.setEcho(true));
291
+ this.is_clone = true; // Adesso è un clone
292
+ }
293
+ catch (error) {
294
+ await this.showProblem(message, error);
295
+ }
296
+ }
297
+ else {
298
+ await Utils.pressKeyToExit(`Cannot find luks-volume file ${this.luksFile}`);
299
+ }
300
+ }
301
+ // networkcfg
302
+ message = "Network configuration";
303
+ await redraw(React.createElement(Install, { message: message, percent: 61, spinner: this.spinner }));
304
+ try {
305
+ await this.networkCfg();
306
+ }
307
+ catch (error) {
308
+ await this.showProblem(message, error);
309
+ }
310
+ // hostname
311
+ message = "Create hostname";
312
+ await redraw(React.createElement(Install, { message: message, percent: 64, spinner: this.spinner }));
313
+ try {
314
+ await this.hostname(this.network.domain);
315
+ }
316
+ catch (error) {
317
+ await this.showProblem(message, error);
318
+ }
319
+ // dpkg-unsafe-io-undo
320
+ if (this.distro.familyId === 'debian') {
321
+ message = "Remove dpkg-unsafe-io";
322
+ await redraw(React.createElement(Install, { message: message, percent: 65, spinner: this.spinner }));
323
+ try {
324
+ await this.execCalamaresModule('dpkg-unsafe-io-undo');
325
+ }
326
+ catch (error) {
327
+ await this.showProblem(message, error);
328
+ }
329
+ }
330
+ /**
331
+ * IF NOT CLONE:
332
+ * locale,
333
+ * keyboard,
334
+ * localeCfg,
335
+ * delLiveUser,
336
+ * adduser,
337
+ * addRootPassword,
338
+ * autologin GUI
339
+ */
340
+ if (!this.is_clone) {
341
+ // NOT_CLONE: locale
342
+ message = "Locale";
343
+ redraw(React.createElement(Install, { message: message, percent: 70, spinner: this.spinner }));
344
+ try {
345
+ if (this.distro.familyId === 'alpine' ||
346
+ this.distro.familyId === 'archlinux' ||
347
+ this.distro.familyId === 'debian') {
348
+ await this.locale();
349
+ }
350
+ }
351
+ catch (error) {
352
+ await this.showProblem(message, error);
353
+ }
354
+ // NOT_CLONE: keyboard
355
+ message = "Settings keyboard";
356
+ redraw(React.createElement(Install, { message: message, percent: 71, spinner: this.spinner }));
357
+ try {
358
+ await this.keyboard();
359
+ }
360
+ catch (error) {
361
+ await this.showProblem(message, error);
362
+ }
363
+ // NOT_CLONE: localeCfg
364
+ if (this.distro.familyId === 'archlinux' ||
365
+ this.distro.familyId === 'debian') {
366
+ message = "Locale Configuration";
367
+ redraw(React.createElement(Install, { message: message, percent: 72, spinner: this.spinner }));
368
+ try {
369
+ await this.localeCfg();
370
+ await exec("chroot " + this.installTarget + " locale-gen" + this.toNull);
371
+ }
372
+ catch (error) {
373
+ await this.showProblem(message, error);
374
+ }
375
+ }
376
+ // NOT_CLONE: delLiveUser
377
+ message = "Remove live user";
378
+ await redraw(React.createElement(Install, { message: message, percent: 73, spinner: this.spinner }));
379
+ try {
380
+ await this.delLiveUser();
381
+ }
382
+ catch (error) {
383
+ await this.showProblem(message, error);
384
+ }
385
+ // NOT_CLONE: addUser
386
+ message = `Add user ${this.users.username}`;
387
+ await redraw(React.createElement(Install, { message: message, percent: 74, spinner: this.spinner }));
388
+ try {
389
+ await this.addUser(this.users.username, this.users.password, this.users.fullname, '', '', '');
390
+ }
391
+ catch (error) {
392
+ await this.showProblem(message, error);
393
+ }
394
+ // NOT_CLONE: addRootPassword
395
+ message = "Add root password";
396
+ await redraw(React.createElement(Install, { message: message, percent: 75, spinner: this.spinner }));
397
+ try {
398
+ await this.changePassword('root', this.users.rootPassword);
399
+ }
400
+ catch (error) {
401
+ await this.showProblem(message, error);
402
+ }
403
+ // NOT_CLONE: autologin GUI
404
+ if (Pacman.isInstalledGui()) {
405
+ try {
406
+ message = "Autologin GUI";
407
+ await redraw(React.createElement(Install, { message: message, percent: 78, spinner: this.spinner }));
408
+ if (this.users.autologin) {
409
+ await Xdg.autologin(await Utils.getPrimaryUser(), this.users.username, this.installTarget);
410
+ if (this.distro.distroLike === 'Arch') {
411
+ await exec(`chroot ${this.installTarget} groupadd autologin ${this.toNull}`);
412
+ await exec(`chroot ${this.installTarget} gpasswd -a ${this.users.username} autologin ${this.toNull}`);
413
+ }
414
+ }
415
+ }
416
+ catch (error) {
417
+ await this.showProblem(message, error);
418
+ }
419
+ }
420
+ } // IF NOT CLONE END
421
+ // ALWAYS remove autologin CLI
422
+ message = "Remove autologin CLI";
423
+ await redraw(React.createElement(Install, { message: message, percent: 80, spinner: this.spinner }));
424
+ try {
425
+ await this.cliAutologin.remove(this.installTarget);
426
+ }
427
+ catch (error) {
428
+ await this.showProblem(message, error);
429
+ }
430
+ // bootloader-config
431
+ message = "bootloader-config";
432
+ await redraw(React.createElement(Install, { message: message, percent: 81, spinner: this.spinner }));
433
+ try {
434
+ await this.bootloaderConfig();
435
+ }
436
+ catch (error) {
437
+ await this.showProblem(message, error);
438
+ }
439
+ // grubcfg
440
+ message = "grubcfg";
441
+ await redraw(React.createElement(Install, { message: message, percent: 82, spinner: this.spinner }));
442
+ try {
443
+ await this.grubcfg();
444
+ }
445
+ catch (error) {
446
+ await this.showProblem(message, error);
447
+ }
448
+ // bootloader (grub-install)
449
+ message = "bootloader";
450
+ await redraw(React.createElement(Install, { message: message, percent: 83, spinner: this.spinner }));
451
+ try {
452
+ await this.bootloader();
453
+ }
454
+ catch (error) {
455
+ await this.showProblem(message, error);
456
+ }
457
+ // sources-yolk-undo
458
+ if (this.distro.familyId === 'debian') {
459
+ message = "Remove sources-yolk";
460
+ await redraw(React.createElement(Install, { message: message, percent: 84, spinner: this.spinner }));
461
+ try {
462
+ await this.execCalamaresModule('sources-yolk-undo');
463
+ }
464
+ catch (error) {
465
+ await this.showProblem(message, error);
466
+ }
467
+ }
468
+ // packages
469
+ message = "Add/remove packages";
470
+ await redraw(React.createElement(Install, { message: message, percent: 85, spinner: this.spinner }));
471
+ try {
472
+ await this.packages();
473
+ }
474
+ catch (error) {
475
+ await this.showProblem(message, error);
476
+ }
477
+ // initramfsCfg
478
+ message = "initramfs configure";
479
+ await redraw(React.createElement(Install, { message: message, percent: 86, spinner: this.spinner }));
480
+ try {
481
+ await this.initramfsCfg(this.partitions.installationDevice);
482
+ }
483
+ catch (error) {
484
+ await this.showProblem(message, error);
485
+ }
486
+ // initramfs
487
+ message = "initramfs";
488
+ await redraw(React.createElement(Install, { message: message, percent: 87, spinner: this.spinner }));
489
+ try {
490
+ await this.initramfs();
491
+ }
492
+ catch (error) {
493
+ await this.showProblem(message, error);
494
+ }
495
+ /**
496
+ *
497
+ * remove CLI/GUI installer link
498
+ */
499
+ message = "Remove GUI installer link";
500
+ await redraw(React.createElement(Install, { message: message, percent: 88, spinner: this.spinner }));
501
+ try {
502
+ await this.removeInstallerLink();
503
+ }
504
+ catch (error) {
505
+ await this.showProblem(message, error);
506
+ }
507
+ // remove /etc/penguins_eggs.d/is_clone*
508
+ message = "Cleanup";
509
+ await redraw(React.createElement(Install, { message: message, percent: 89, spinner: this.spinner }));
510
+ try {
511
+ await exec(`rm -f ${this.installTarget}/etc/penguins-eggs.d/is_clone`);
512
+ await exec(`rm -f ${this.installTarget}/etc/penguins-eggs.d/is_crypted_clone`);
513
+ }
514
+ catch (error) {
515
+ await this.showProblem(message, error);
516
+ }
517
+ /**
518
+ * custom final steps
519
+ */
520
+ const cfs = new CFS();
521
+ const steps = await cfs.steps();
522
+ if (steps.length > 0) {
523
+ for (const step of steps) {
524
+ message = `running ${step}`;
525
+ await redraw(React.createElement(Install, { message: message, percent: 90, spinner: this.spinner }));
526
+ try {
527
+ await this.execCalamaresModule(step);
528
+ }
529
+ catch (error) {
530
+ await this.showProblem(message, error);
531
+ }
532
+ }
533
+ }
534
+ // chroot
535
+ if (chroot) {
536
+ message = `You are in chroot mode under ${this.installTarget}, type "exit" to exit.`;
537
+ await this.emergencyShell(message);
538
+ }
539
+ // umountVfs
540
+ message = "umount Virtual File System";
541
+ await redraw(React.createElement(Install, { message: message, percent: 96, spinner: this.spinner }));
542
+ try {
543
+ await this.umountVfs();
544
+ }
545
+ catch (error) {
546
+ await this.showProblem(message, error);
547
+ }
548
+ //await Utils.pressKeyToExit('passed:' + message)
549
+ message = "umount File system";
550
+ await redraw(React.createElement(Install, { message: message, percent: 99, spinner: this.spinner }));
551
+ try {
552
+ await this.umountFs();
553
+ }
554
+ catch (error) {
555
+ await this.showProblem(message, error);
556
+ }
557
+ await sleep(500); // wait 0,5 seconds
558
+ /**
559
+ * Finished
560
+ */
561
+ let cmd = "reboot";
562
+ if (this.halt) {
563
+ cmd = "poweroff";
564
+ }
565
+ message = `Press a key to ${cmd}`;
566
+ if (this.unattended && this.nointeractive) {
567
+ message = `System will ${cmd} in 5 seconds...`;
568
+ }
569
+ await redraw(React.createElement(Finished, { installationDevice: this.partitions.installationDevice, hostName: this.users.hostname, userName: this.users.username, message: message }));
570
+ // await Utils.pressKeyToExit('passed:' + message)
571
+ if (this.unattended && this.nointeractive) {
572
+ await sleep(5000);
573
+ }
574
+ else {
575
+ spawnSync('read _ ', { shell: true, stdio: [0, 1, 2] });
576
+ }
577
+ await exec(cmd, { echo: false });
578
+ }
579
+ }
580
+ /**
581
+ *
582
+ */
583
+ async execCalamaresModule(name) {
584
+ const moduleName = this.installer.multiarchModules + name + '/module.desc';
585
+ if (fs.existsSync(moduleName)) {
586
+ const calamaresModule = yaml.load(fs.readFileSync(moduleName, 'utf8'));
587
+ let command = calamaresModule.command;
588
+ if (command !== '' || command !== undefined) {
589
+ command += this.toNull;
590
+ await exec(command, this.echo);
591
+ }
592
+ }
593
+ }
594
+ /**
595
+ *
596
+ * @param message
597
+ */
598
+ async emergencyShell(message) {
599
+ try {
600
+ await redraw(React.createElement(React.Fragment, null,
601
+ React.createElement(Title, null),
602
+ React.createElement(Box, null,
603
+ React.createElement(Text, null, message))));
604
+ cliCursor.show();
605
+ await exec(`chroot ${this.installTarget} /bin/bash`);
606
+ cliCursor.hide();
607
+ }
608
+ catch (error) {
609
+ await Utils.pressKeyToExit(JSON.stringify(error));
610
+ }
611
+ }
612
+ /**
613
+ *
614
+ * @param message
615
+ */
616
+ async showProblem(message, currErr) {
617
+ message = `We was on "${message}", get error: ${JSON.stringify(currErr)}, type "exit" to exit from krill emergency shell.`;
618
+ try {
619
+ await redraw(React.createElement(React.Fragment, null,
620
+ React.createElement(Title, null),
621
+ React.createElement(Box, null,
622
+ React.createElement(Text, null, message))));
623
+ cliCursor.show();
624
+ await exec("/bin/bash");
625
+ cliCursor.hide();
626
+ }
627
+ catch (error) {
628
+ await Utils.pressKeyToExit(JSON.stringify(error));
629
+ }
630
+ }
631
+ }
632
+ /**
633
+ *
634
+ * @param elem
635
+ */
636
+ async function redraw(elem) {
637
+ let opt = {};
638
+ opt.patchConsole = false;
639
+ opt.debug = true;
640
+ console.clear();
641
+ render(elem, opt);
642
+ }
643
+ /**
644
+ *
645
+ * @param ms
646
+ * @returns
647
+ */
648
+ function sleep(ms = 0) {
649
+ return new Promise((resolve) => {
650
+ setTimeout(resolve, ms);
651
+ });
652
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ./src/lib/get_address.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
+ export default function getAddress(initial: string): Promise<string>;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ./src/lib/get_address.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 inquirer from 'inquirer';
9
+ export default async function getAddress(initial) {
10
+ return new Promise((resolve) => {
11
+ const questions = [
12
+ {
13
+ default: initial,
14
+ message: 'What is ip address of this computer? ',
15
+ name: 'address',
16
+ type: 'input'
17
+ }
18
+ ];
19
+ inquirer.prompt(questions).then((options) => {
20
+ resolve(options.address);
21
+ });
22
+ });
23
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ./src/lib/get_dns.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
+ export default function getDns(initial: string): Promise<string>;