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