penguins-eggs 10.0.57 → 10.0.60

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 (238) hide show
  1. package/.oclif.manifest.json +8 -1
  2. package/README.md +35 -34
  3. package/addons/eggs/theme/livecd/grub.main.full.cfg +0 -6
  4. package/assets/config.cfg +30 -0
  5. package/conf/distros/buster/calamares/calamares-modules/cleanup/cleanup.sh +8 -1
  6. package/conf/distros/buster/calamares/modules/partition.yml +159 -23
  7. package/conf/distros/buster/calamares/modules/removeuser.yml +1 -1
  8. package/conf/exclude.list.d/master.list +1 -0
  9. package/conf/krill.yaml +8 -0
  10. package/dist/classes/distro.js +1 -1
  11. package/dist/classes/incubation/incubator.d/alpine.js +1 -1
  12. package/dist/classes/incubation/incubator.d/bionic.js +1 -1
  13. package/dist/classes/incubation/incubator.d/buster.js +1 -1
  14. package/dist/classes/incubation/incubator.d/noble.js +1 -1
  15. package/dist/classes/incubation/incubator.d/openmamba.js +1 -1
  16. package/dist/classes/incubation/incubator.d/opensuse.js +1 -1
  17. package/dist/classes/incubation/incubator.d/rolling.js +1 -1
  18. package/dist/classes/ovary.d/bind-live-fs.d.ts +18 -0
  19. package/dist/classes/ovary.d/bind-live-fs.js +185 -0
  20. package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
  21. package/dist/classes/ovary.d/bind-vfs.js +37 -0
  22. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
  23. package/dist/classes/ovary.d/create-xdg-autostart.js +194 -0
  24. package/dist/classes/ovary.d/edit-live-fs.d.ts +19 -0
  25. package/dist/classes/ovary.d/edit-live-fs.js +249 -0
  26. package/dist/classes/ovary.d/fertilization.d.ts +12 -0
  27. package/dist/classes/ovary.d/fertilization.js +46 -0
  28. package/dist/classes/ovary.d/finished.d.ts +13 -0
  29. package/dist/classes/ovary.d/finished.js +41 -0
  30. package/dist/classes/ovary.d/initrd.d.ts +21 -0
  31. package/dist/classes/ovary.d/initrd.js +72 -0
  32. package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
  33. package/dist/classes/ovary.d/kernel-copy.js +36 -0
  34. package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
  35. package/dist/classes/ovary.d/live-create-structure.js +90 -0
  36. package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
  37. package/dist/classes/ovary.d/make-dot-disk.js +40 -0
  38. package/dist/classes/ovary.d/make-efi.d.ts +12 -0
  39. package/dist/classes/ovary.d/make-efi.js +268 -0
  40. package/dist/classes/ovary.d/make-iso.d.ts +13 -0
  41. package/dist/classes/ovary.d/make-iso.js +45 -0
  42. package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
  43. package/dist/classes/ovary.d/make-squashfs.js +117 -0
  44. package/dist/classes/ovary.d/merged.d.ts +31 -0
  45. package/dist/classes/ovary.d/merged.js +87 -0
  46. package/dist/classes/ovary.d/produce.d.ts +23 -0
  47. package/dist/classes/ovary.d/produce.js +287 -0
  48. package/dist/classes/ovary.d/rexec.d.ts +13 -0
  49. package/dist/classes/ovary.d/rexec.js +34 -0
  50. package/dist/classes/ovary.d/syslinux.d.ts +12 -0
  51. package/dist/classes/ovary.d/syslinux.js +79 -0
  52. package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
  53. package/dist/classes/ovary.d/user-create-live.js +86 -0
  54. package/dist/classes/ovary.d/users-remove.d.ts +9 -0
  55. package/dist/classes/ovary.d/users-remove.js +38 -0
  56. package/dist/classes/ovary.d/xorriso-commend.d.ts +14 -0
  57. package/dist/classes/ovary.d/xorriso-commend.js +119 -0
  58. package/dist/classes/ovary.d.ts +46 -167
  59. package/dist/classes/ovary.js +49 -1818
  60. package/dist/classes/pacman.d/archlinux.js +2 -1
  61. package/dist/classes/settings.d.ts +0 -1
  62. package/dist/classes/settings.js +2 -2
  63. package/dist/classes/utils.d.ts +6 -5
  64. package/dist/classes/utils.js +10 -16
  65. package/dist/commands/install.d.ts +1 -0
  66. package/dist/commands/install.js +7 -4
  67. package/dist/commands/kill.js +1 -1
  68. package/dist/commands/status.js +1 -1
  69. package/dist/commands/update.js +3 -3
  70. package/dist/interfaces/i-luks-passphrase.d.ts +11 -0
  71. package/dist/interfaces/i-luks-passphrase.js +8 -0
  72. package/dist/interfaces/index.d.ts +1 -0
  73. package/dist/{classes → krill/classes}/cfs.js +1 -1
  74. package/dist/krill/classes/krill_enums.d.ts +24 -0
  75. package/dist/krill/classes/krill_enums.js +26 -0
  76. package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
  77. package/dist/krill/classes/prepare.d/confirm.js +30 -0
  78. package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
  79. package/dist/krill/classes/prepare.d/keyboard.js +62 -0
  80. package/dist/krill/classes/prepare.d/location.d.ts +17 -0
  81. package/dist/krill/classes/prepare.d/location.js +59 -0
  82. package/dist/krill/classes/prepare.d/network.d.ts +14 -0
  83. package/dist/krill/classes/prepare.d/network.js +68 -0
  84. package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
  85. package/dist/krill/classes/prepare.d/partitions.js +86 -0
  86. package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
  87. package/dist/krill/classes/prepare.d/summary.js +69 -0
  88. package/dist/krill/classes/prepare.d/users.d.ts +6 -0
  89. package/dist/krill/classes/prepare.d/users.js +63 -0
  90. package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
  91. package/dist/krill/classes/prepare.d/welcome.js +30 -0
  92. package/dist/krill/{prepare.d.ts → classes/prepare.d.ts} +21 -35
  93. package/dist/krill/classes/prepare.js +314 -0
  94. package/dist/krill/{modules/add-user.js → classes/sequence.d/add_user.js} +1 -1
  95. package/dist/krill/{modules → classes/sequence.d}/bootloader.d.ts +1 -1
  96. package/dist/krill/{modules → classes/sequence.d}/bootloader.js +3 -3
  97. package/dist/krill/{modules/bootloader-config.js → classes/sequence.d/bootloader_config.js} +2 -2
  98. package/dist/krill/{modules/change-password.js → classes/sequence.d/change_password.js} +1 -1
  99. package/dist/krill/{modules/del-live-user.js → classes/sequence.d/del_live_user.js} +2 -2
  100. package/dist/krill/{modules → classes/sequence.d}/fstab.d.ts +1 -1
  101. package/dist/krill/{modules → classes/sequence.d}/fstab.js +75 -14
  102. package/dist/krill/{modules → classes/sequence.d}/grubcfg.d.ts +1 -1
  103. package/dist/krill/{modules → classes/sequence.d}/grubcfg.js +6 -2
  104. package/dist/krill/{modules → classes/sequence.d}/hostname.d.ts +1 -1
  105. package/dist/krill/{modules → classes/sequence.d}/initramfs.d.ts +1 -1
  106. package/dist/krill/{modules → classes/sequence.d}/initramfs.js +2 -2
  107. package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
  108. package/dist/krill/{modules → classes/sequence.d}/locale.d.ts +1 -1
  109. package/dist/krill/{modules → classes/sequence.d}/locale.js +2 -2
  110. package/dist/krill/{modules/m-keyboard.js → classes/sequence.d/m_keyboard.js} +2 -2
  111. package/dist/krill/{modules/machine-id.js → classes/sequence.d/machine_id.js} +2 -2
  112. package/dist/krill/{modules → classes/sequence.d}/mkfs.d.ts +1 -1
  113. package/dist/krill/{modules → classes/sequence.d}/mkfs.js +24 -2
  114. package/dist/krill/{modules/mount-fs.js → classes/sequence.d/mount_fs.js} +9 -3
  115. package/dist/krill/{modules/mount-vfs.js → classes/sequence.d/mount_vfs.js} +1 -1
  116. package/dist/krill/{modules/network-cfg.js → classes/sequence.d/network_cfg.js} +15 -6
  117. package/dist/krill/{modules → classes/sequence.d}/packages.d.ts +1 -1
  118. package/dist/krill/{modules → classes/sequence.d}/packages.js +3 -3
  119. package/dist/krill/{modules/partition.d.ts → classes/sequence.d/partition.d/bios_luks.d.ts} +4 -7
  120. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
  121. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +17 -0
  122. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +36 -0
  123. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
  124. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +78 -0
  125. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
  126. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +32 -0
  127. package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
  128. package/dist/krill/classes/sequence.d/partition.js +84 -0
  129. package/dist/krill/{modules → classes/sequence.d}/umount.d.ts +1 -1
  130. package/dist/krill/{modules → classes/sequence.d}/umount.js +2 -2
  131. package/dist/krill/{modules → classes/sequence.d}/unpackfs.d.ts +1 -1
  132. package/dist/krill/{modules → classes/sequence.d}/unpackfs.js +2 -2
  133. package/dist/krill/{sequence.d.ts → classes/sequence.d.ts} +40 -58
  134. package/dist/krill/{sequence.js → classes/sequence.js} +43 -32
  135. package/dist/{components → krill/components}/information.js +3 -3
  136. package/dist/{components → krill/components}/keyboard.js +1 -1
  137. package/dist/{components → krill/components}/location.js +1 -1
  138. package/dist/{components → krill/components}/network.js +1 -1
  139. package/dist/{components → krill/components}/partitions.d.ts +4 -2
  140. package/dist/{components → krill/components}/partitions.js +36 -20
  141. package/dist/{components → krill/components}/summary.d.ts +2 -1
  142. package/dist/{components → krill/components}/summary.js +2 -6
  143. package/dist/{components → krill/components}/title.js +1 -1
  144. package/dist/{components → krill/components}/users.js +1 -1
  145. package/dist/{components → krill/components}/welcome.js +1 -1
  146. package/dist/{interfaces/i-krill.d.ts → krill/interfaces/i_krill.d.ts} +3 -1
  147. package/dist/{interfaces/i-krill-config.d.ts → krill/interfaces/i_krill_config.d.ts} +3 -1
  148. package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
  149. package/dist/krill/lib/get_luks_passphrase.js +40 -0
  150. package/dist/{lib → krill/lib}/kill_me_softly.js +2 -2
  151. package/dist/{lib → krill/lib}/select_filesystem_type.js +2 -9
  152. package/dist/{lib → krill/lib}/select_installation_device.js +10 -4
  153. package/dist/{lib → krill/lib}/select_installation_mode.d.ts +2 -1
  154. package/dist/{lib → krill/lib}/select_installation_mode.js +2 -1
  155. package/dist/{lib → krill/lib}/select_keyboard_layout.js +1 -1
  156. package/dist/{lib → krill/lib}/select_keyboard_model.js +1 -1
  157. package/dist/{lib → krill/lib}/select_keyboard_option.js +1 -1
  158. package/dist/{lib → krill/lib}/select_keyboard_variant.js +1 -1
  159. package/dist/{lib → krill/lib}/select_languages.js +1 -1
  160. package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
  161. package/dist/krill/lib/select_replaced_partition.js +31 -0
  162. package/dist/{lib → krill/lib}/select_user_swap_choice.d.ts +2 -1
  163. package/dist/{lib → krill/lib}/select_user_swap_choice.js +4 -3
  164. package/dist/lib/utils.d.ts +8 -0
  165. package/dist/lib/utils.js +8 -0
  166. package/package.json +25 -24
  167. package/scripts/_eggs +7 -5
  168. package/scripts/eggs.bash +3 -3
  169. package/dist/krill/modules/initramfs-cfg.js +0 -22
  170. package/dist/krill/modules/partition.js +0 -345
  171. package/dist/krill/prepare.js +0 -626
  172. /package/dist/{index-old.d.ts → index_old.d.ts} +0 -0
  173. /package/dist/{index-old.js → index_old.js} +0 -0
  174. /package/dist/{classes → krill/classes}/cfs.d.ts +0 -0
  175. /package/dist/krill/{modules/add-user.d.ts → classes/sequence.d/add_user.d.ts} +0 -0
  176. /package/dist/krill/{modules/bootloader-config.d.ts → classes/sequence.d/bootloader_config.d.ts} +0 -0
  177. /package/dist/krill/{modules/change-password.d.ts → classes/sequence.d/change_password.d.ts} +0 -0
  178. /package/dist/krill/{modules/del-live-user.d.ts → classes/sequence.d/del_live_user.d.ts} +0 -0
  179. /package/dist/krill/{modules → classes/sequence.d}/hostname.js +0 -0
  180. /package/dist/krill/{modules/initramfs-cfg.d.ts → classes/sequence.d/initramfs_cfg.d.ts} +0 -0
  181. /package/dist/krill/{modules/locale-cfg.d.ts → classes/sequence.d/locale_cfg.d.ts} +0 -0
  182. /package/dist/krill/{modules/locale-cfg.js → classes/sequence.d/locale_cfg.js} +0 -0
  183. /package/dist/krill/{modules/m-keyboard.d.ts → classes/sequence.d/m_keyboard.d.ts} +0 -0
  184. /package/dist/krill/{modules/machine-id.d.ts → classes/sequence.d/machine_id.d.ts} +0 -0
  185. /package/dist/krill/{modules/mount-fs.d.ts → classes/sequence.d/mount_fs.d.ts} +0 -0
  186. /package/dist/krill/{modules/mount-vfs.d.ts → classes/sequence.d/mount_vfs.d.ts} +0 -0
  187. /package/dist/krill/{modules/network-cfg.d.ts → classes/sequence.d/network_cfg.d.ts} +0 -0
  188. /package/dist/krill/{modules/remove-installer-link.d.ts → classes/sequence.d/remove_installer_link.d.ts} +0 -0
  189. /package/dist/krill/{modules/remove-installer-link.js → classes/sequence.d/remove_installer_link.js} +0 -0
  190. /package/dist/{components → krill/components}/finished.d.ts +0 -0
  191. /package/dist/{components → krill/components}/finished.js +0 -0
  192. /package/dist/{components → krill/components}/information.d.ts +0 -0
  193. /package/dist/{components → krill/components}/install.d.ts +0 -0
  194. /package/dist/{components → krill/components}/install.js +0 -0
  195. /package/dist/{components → krill/components}/keyboard.d.ts +0 -0
  196. /package/dist/{components → krill/components}/location.d.ts +0 -0
  197. /package/dist/{components → krill/components}/network.d.ts +0 -0
  198. /package/dist/{components → krill/components}/steps.d.ts +0 -0
  199. /package/dist/{components → krill/components}/steps.js +0 -0
  200. /package/dist/{components → krill/components}/title.d.ts +0 -0
  201. /package/dist/{components → krill/components}/users.d.ts +0 -0
  202. /package/dist/{components → krill/components}/welcome.d.ts +0 -0
  203. /package/dist/{interfaces/i-krill.js → krill/interfaces/i_krill.js} +0 -0
  204. /package/dist/{interfaces/i-krill-config.js → krill/interfaces/i_krill_config.js} +0 -0
  205. /package/dist/{lib → krill/lib}/get_address.d.ts +0 -0
  206. /package/dist/{lib → krill/lib}/get_address.js +0 -0
  207. /package/dist/{lib → krill/lib}/get_dns.d.ts +0 -0
  208. /package/dist/{lib → krill/lib}/get_dns.js +0 -0
  209. /package/dist/{lib → krill/lib}/get_domain.d.ts +0 -0
  210. /package/dist/{lib → krill/lib}/get_domain.js +0 -0
  211. /package/dist/{lib → krill/lib}/get_gateway.d.ts +0 -0
  212. /package/dist/{lib → krill/lib}/get_gateway.js +0 -0
  213. /package/dist/{lib → krill/lib}/get_hostname.d.ts +0 -0
  214. /package/dist/{lib → krill/lib}/get_hostname.js +0 -0
  215. /package/dist/{lib → krill/lib}/get_netmask.d.ts +0 -0
  216. /package/dist/{lib → krill/lib}/get_netmask.js +0 -0
  217. /package/dist/{lib → krill/lib}/get_password.d.ts +0 -0
  218. /package/dist/{lib → krill/lib}/get_password.js +0 -0
  219. /package/dist/{lib → krill/lib}/get_userfullname.d.ts +0 -0
  220. /package/dist/{lib → krill/lib}/get_userfullname.js +0 -0
  221. /package/dist/{lib → krill/lib}/get_username.d.ts +0 -0
  222. /package/dist/{lib → krill/lib}/get_username.js +0 -0
  223. /package/dist/{lib → krill/lib}/kill_me_softly.d.ts +0 -0
  224. /package/dist/{lib → krill/lib}/select_address_type.d.ts +0 -0
  225. /package/dist/{lib → krill/lib}/select_address_type.js +0 -0
  226. /package/dist/{lib → krill/lib}/select_filesystem_type.d.ts +0 -0
  227. /package/dist/{lib → krill/lib}/select_installation_device.d.ts +0 -0
  228. /package/dist/{lib → krill/lib}/select_interface.d.ts +0 -0
  229. /package/dist/{lib → krill/lib}/select_interface.js +0 -0
  230. /package/dist/{lib → krill/lib}/select_keyboard_layout.d.ts +0 -0
  231. /package/dist/{lib → krill/lib}/select_keyboard_model.d.ts +0 -0
  232. /package/dist/{lib → krill/lib}/select_keyboard_option.d.ts +0 -0
  233. /package/dist/{lib → krill/lib}/select_keyboard_variant.d.ts +0 -0
  234. /package/dist/{lib → krill/lib}/select_languages.d.ts +0 -0
  235. /package/dist/{lib → krill/lib}/select_regions.d.ts +0 -0
  236. /package/dist/{lib → krill/lib}/select_regions.js +0 -0
  237. /package/dist/{lib → krill/lib}/select_zones.d.ts +0 -0
  238. /package/dist/{lib → krill/lib}/select_zones.js +0 -0
@@ -10,20 +10,29 @@ import Title from './title.js';
10
10
  import Steps from './steps.js';
11
11
  import yaml from 'js-yaml';
12
12
  import fs from 'fs';
13
- import { Text, Box } from 'ink';
14
- export default function Partitions({ installationDevice, installationMode, filesystemType, userSwapChoice }) {
13
+ import { InstallationMode } from '../classes/krill_enums.js';
14
+ import { Text, Box, Newline } from 'ink';
15
+ export default function Partitions({ installationDevice, installationMode, filesystemType, userSwapChoice, replacedPartition }) {
15
16
  let installer = 'krill';
16
17
  let productName = '';
17
18
  let version = '';
18
19
  let configRoot = '/etc/penguins-eggs.d/krill/';
19
- if (fs.existsSync('/etc/calamares/settings.conf')) {
20
- configRoot = '/etc/calamares/';
20
+ let calamaresRoot = '/etc/calamares/';
21
+ let settingFileName = configRoot + 'settings.conf';
22
+ let brandingFile = '';
23
+ if (fs.existsSync(calamaresRoot + settingFileName)) {
24
+ configRoot = calamaresRoot;
25
+ }
26
+ if (fs.existsSync(configRoot + settingFileName)) {
27
+ const settings = yaml.load(fs.readFileSync(configRoot + 'settings.conf', 'utf-8'));
28
+ const branding = settings.branding;
29
+ brandingFile = configRoot + 'branding/' + branding + '/branding.desc';
30
+ if (fs.existsSync(brandingFile)) {
31
+ const calamares = yaml.load(fs.readFileSync(brandingFile, 'utf-8'));
32
+ productName = calamares.strings.productName;
33
+ version = calamares.strings.version;
34
+ }
21
35
  }
22
- const settings = yaml.load(fs.readFileSync(configRoot + 'settings.conf', 'utf-8'));
23
- const branding = settings.branding;
24
- const calamares = yaml.load(fs.readFileSync(configRoot + 'branding/' + branding + '/branding.desc', 'utf-8'));
25
- productName = calamares.strings.productName;
26
- version = calamares.strings.version;
27
36
  /**
28
37
  * totale width=75
29
38
  * step width=15
@@ -40,6 +49,13 @@ export default function Partitions({ installationDevice, installationMode, files
40
49
  else {
41
50
  partitions.initialSwapChoice = 'small';
42
51
  }
52
+ let message = '';
53
+ if (installationMode === InstallationMode.Replace) {
54
+ message = `replaced partition: ${replacedPartition}`;
55
+ }
56
+ else {
57
+ message = `installation device: ${installationDevice}`;
58
+ }
43
59
  return (React.createElement(React.Fragment, null,
44
60
  React.createElement(Title, null),
45
61
  React.createElement(Box, { width: 75, height: 11, borderStyle: "round", flexDirection: "column" },
@@ -48,17 +64,11 @@ export default function Partitions({ installationDevice, installationMode, files
48
64
  React.createElement(Steps, { step: 4 }),
49
65
  React.createElement(Box, { flexDirection: "column" }),
50
66
  React.createElement(Box, { flexDirection: "column" },
51
- React.createElement(Box, { flexDirection: "row" },
52
- React.createElement(Text, { underline: false }, "Note: "),
53
- React.createElement(Box, { flexDirection: "column" },
54
- React.createElement(Text, { backgroundColor: "red", color: "white" }, "this will erase all data currently present on the"),
55
- React.createElement(Text, { backgroundColor: "red", color: "white" },
56
- "installation device: ",
57
- installationDevice))),
58
67
  React.createElement(Box, null,
59
68
  React.createElement(Text, null, "BIOS: "),
60
- React.createElement(Text, { color: "cyan" }, bios)),
61
- React.createElement(Box, null,
69
+ React.createElement(Text, { color: "cyan" },
70
+ bios,
71
+ " "),
62
72
  React.createElement(Text, null, "Installation device: "),
63
73
  React.createElement(Text, { color: "cyan" }, installationDevice)),
64
74
  React.createElement(Box, null,
@@ -68,6 +78,12 @@ export default function Partitions({ installationDevice, installationMode, files
68
78
  React.createElement(Text, null, "Filesystem: "),
69
79
  React.createElement(Text, { color: "cyan" }, filesystemType)),
70
80
  React.createElement(Box, null,
71
- React.createElement(Text, null, "User swap choice: : "),
72
- React.createElement(Text, { color: "cyan" }, userSwapChoice))))))));
81
+ React.createElement(Text, null, "User swap choice: "),
82
+ React.createElement(Text, { color: "cyan" }, userSwapChoice)),
83
+ React.createElement(Newline, null),
84
+ React.createElement(Box, { flexDirection: "row" },
85
+ React.createElement(Text, { underline: false }, "(*) "),
86
+ React.createElement(Box, { flexDirection: "column" },
87
+ React.createElement(Text, { backgroundColor: "red", color: "white" }, "this will erase all data currently present on the"),
88
+ React.createElement(Text, { backgroundColor: "red", color: "white" }, message)))))))));
73
89
  }
@@ -19,6 +19,7 @@ type SummaryProps = {
19
19
  rootPassword?: string;
20
20
  hostname?: string;
21
21
  message?: string;
22
+ erase?: string;
22
23
  };
23
- export default function Summary({ username, password, rootPassword, hostname, region, zone, language, keyboardModel, keyboardLayout, installationDevice, filesystemType, message }: SummaryProps): React.JSX.Element;
24
+ export default function Summary({ username, password, rootPassword, hostname, region, zone, language, keyboardModel, keyboardLayout, installationDevice, filesystemType, message, erase }: SummaryProps): React.JSX.Element;
24
25
  export {};
@@ -11,7 +11,7 @@ import Steps from './steps.js';
11
11
  import yaml from 'js-yaml';
12
12
  import fs from 'fs';
13
13
  import { Text, Box } from 'ink';
14
- export default function Summary({ username = '', password = '', rootPassword = '', hostname = '', region = '', zone = '', language = '', keyboardModel = '', keyboardLayout = '', installationDevice = '', filesystemType, message = '' }) {
14
+ export default function Summary({ username = '', password = '', rootPassword = '', hostname = '', region = '', zone = '', language = '', keyboardModel = '', keyboardLayout = '', installationDevice = '', filesystemType, message = '', erase = '' }) {
15
15
  let productName = 'unknown';
16
16
  let version = 'x.x.x';
17
17
  let configRoot = '/etc/penguins-eggs.d/krill/';
@@ -71,11 +71,7 @@ export default function Summary({ username = '', password = '', rootPassword = '
71
71
  React.createElement(Text, null, "layout "),
72
72
  React.createElement(Text, { color: "green" }, keyboardLayout)),
73
73
  React.createElement(Box, null,
74
- React.createElement(Text, { bold: true }, "Erase disk "),
75
- React.createElement(Text, null,
76
- installationDevice,
77
- " formatting: ",
78
- filesystemType)),
74
+ React.createElement(Text, null, erase)),
79
75
  React.createElement(Box, null,
80
76
  React.createElement(Text, { color: "white", backgroundColor: "red" }, message))))))));
81
77
  }
@@ -10,7 +10,7 @@ import { Text, Box, Newline } from 'ink';
10
10
  // pjson
11
11
  import { createRequire } from 'module';
12
12
  const require = createRequire(import.meta.url);
13
- const pjson = require('../../package.json');
13
+ const pjson = require('../../../package.json');
14
14
  export default function Title({ title = "", version = "" }) {
15
15
  if (title == "")
16
16
  title = pjson.name;
@@ -14,7 +14,7 @@ import fs from 'fs';
14
14
  // pjson
15
15
  import { createRequire } from 'module';
16
16
  const require = createRequire(import.meta.url);
17
- const pjson = require('../../package.json');
17
+ const pjson = require('../../../package.json');
18
18
  // create your forceUpdate hook
19
19
  function useForceUpdate() {
20
20
  const [value, setValue] = useState(0); // integer state
@@ -14,7 +14,7 @@ import { Box, Newline, Text } from 'ink';
14
14
  // pjson
15
15
  import { createRequire } from 'module';
16
16
  const require = createRequire(import.meta.url);
17
- const pjson = require('../../package.json');
17
+ const pjson = require('../../../package.json');
18
18
  export default function Welcome({ language = '' }) {
19
19
  let productName = 'unknown';
20
20
  let configRoot = '/etc/penguins-eggs.d/krill/';
@@ -5,6 +5,7 @@
5
5
  * email: piero.proietti@gmail.com
6
6
  * license: MIT
7
7
  */
8
+ import { SwapChoice } from '../classes/krill_enums.js';
8
9
  export interface IWelcome {
9
10
  language: string;
10
11
  }
@@ -23,7 +24,8 @@ export interface IPartitions {
23
24
  filesystemType: string;
24
25
  installationDevice: string;
25
26
  installationMode: string;
26
- userSwapChoice: string;
27
+ userSwapChoice: SwapChoice;
28
+ replacedPartition: string;
27
29
  }
28
30
  export interface IUsers {
29
31
  autologin: boolean;
@@ -5,6 +5,7 @@
5
5
  * email: piero.proietti@gmail.com
6
6
  * license: MIT
7
7
  */
8
+ import { SwapChoice } from '../classes/krill_enums.js';
8
9
  export interface IKrillConfig {
9
10
  address: string;
10
11
  addressType: string;
@@ -17,6 +18,7 @@ export interface IKrillConfig {
17
18
  hostname: string;
18
19
  iface: string;
19
20
  installationDevice: string;
21
+ replacedPartition: string;
20
22
  installationMode: string;
21
23
  keyboardLayout: string;
22
24
  keyboardModel: string;
@@ -28,6 +30,6 @@ export interface IKrillConfig {
28
30
  password: string;
29
31
  region: string;
30
32
  rootPassword: string;
31
- userSwapChoice: string;
33
+ userSwapChoice: SwapChoice;
32
34
  zone: string;
33
35
  }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ./src/lib/get_luks-passphrase.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 getLuksPassphrase(passphrase?: string, confirm?: string): Promise<string>;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * ./src/lib/get_luks-passphrase.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 getLuksPassphrase(passphrase = '', confirm = '') {
10
+ // console.log(`default passphrase= "3volution"`)
11
+ // console.log(`Passphrase must contain at least one letter and one number`)
12
+ const requireLetterAndNumber = (value) => {
13
+ if (!(/\w/.test(value) && /\d/.test(value))) {
14
+ return 'Passphrase must contain at least one letter and one number.';
15
+ }
16
+ return true;
17
+ };
18
+ const questions = [
19
+ {
20
+ default: passphrase,
21
+ message: `default passphrase= "3volution"\nChoose a passphrase to encrypt device: `,
22
+ name: 'passphrase',
23
+ type: 'password',
24
+ validate: requireLetterAndNumber
25
+ },
26
+ {
27
+ default: confirm,
28
+ message: `Confirm your passphrase: `,
29
+ name: 'confirm',
30
+ type: 'password',
31
+ validate: requireLetterAndNumber
32
+ }
33
+ ];
34
+ const options = await inquirer.prompt(questions);
35
+ if (options.passphrase !== options.confirm) {
36
+ console.error('Error: Passphrases do not match. Please try again.');
37
+ return getLuksPassphrase(); // Richiede di nuovo l'input
38
+ }
39
+ return options.confirm;
40
+ }
@@ -6,8 +6,8 @@
6
6
  * license: MIT
7
7
  */
8
8
  import fs from 'node:fs';
9
- import Utils from '../classes/utils.js';
10
- import { exec } from './utils.js';
9
+ import Utils from '../../classes/utils.js';
10
+ import { exec } from '../../lib/utils.js';
11
11
  /**
12
12
  *
13
13
  */
@@ -8,7 +8,7 @@
8
8
  import inquirer from 'inquirer';
9
9
  import yaml from 'js-yaml';
10
10
  import fs from 'node:fs';
11
- import Pacman from '../classes/pacman.js';
11
+ import Pacman from '../../classes/pacman.js';
12
12
  export default async function selectFileSystemType() {
13
13
  let partitions = {};
14
14
  if (fs.existsSync('/etc/calamares/modules/partition.conf')) {
@@ -26,7 +26,7 @@ export default async function selectFileSystemType() {
26
26
  {
27
27
  choices: choices,
28
28
  default: partitions.defaultFileSystemType,
29
- message: 'Select file system tyèe',
29
+ message: 'Select file system type',
30
30
  name: 'fileSystemChoices',
31
31
  type: 'list'
32
32
  }
@@ -37,10 +37,3 @@ export default async function selectFileSystemType() {
37
37
  });
38
38
  });
39
39
  }
40
- /*
41
- "efiSystemPartition":"/boot/efi","userSwapChoices": │
42
- │Users ["none","small","suspend","file"],"drawNestedPartiti │
43
- │Summary ons":false,"alwaysShowPartitionLabels":true,"initial │
44
- │Install PartitioningChoice":"none","initialSwapChoice":"smal │
45
- │Finish l","defaultFileSystemType":"ext4"}
46
- */
@@ -9,13 +9,19 @@ import inquirer from 'inquirer';
9
9
  import shx from 'shelljs';
10
10
  export default async function selectInstallationDevice() {
11
11
  const drives = shx.exec('lsblk |grep disk|cut -f 1 "-d "', { silent: true }).stdout.trim().split('\n');
12
- const raid_drives = shx.exec('lsblk -l | grep raid | cut -f 1 "-d "', { silent: true }).stdout.trim().split('\n');
12
+ const raid = shx.exec('lsblk -l | grep raid | cut -f 1 "-d "', { silent: true }).stdout.trim().split('\n');
13
13
  const driveList = [];
14
+ // Add drives to driveList
14
15
  drives.forEach((element) => {
15
- driveList.push('/dev/' + element);
16
+ if (!element.includes('zram') && element !== '') {
17
+ driveList.push('/dev/' + element);
18
+ }
16
19
  });
17
- raid_drives.forEach((element) => {
18
- driveList.push('/dev/' + element);
20
+ // Add raid to driveList
21
+ raid.forEach((element) => {
22
+ if (!element.includes('zram') && element !== '') {
23
+ driveList.push('/dev/' + element);
24
+ }
19
25
  });
20
26
  const questions = [
21
27
  // nvme0n1p1, nvme0n1p2, nvme0n1p3
@@ -5,4 +5,5 @@
5
5
  * email: piero.proietti@gmail.com
6
6
  * license: MIT
7
7
  */
8
- export default function selectInstallationMode(): Promise<string>;
8
+ import { InstallationMode } from '../classes/krill_enums.js';
9
+ export default function selectInstallationMode(): Promise<InstallationMode>;
@@ -6,8 +6,9 @@
6
6
  * license: MIT
7
7
  */
8
8
  import inquirer from 'inquirer';
9
+ import { InstallationMode } from '../classes/krill_enums.js';
9
10
  export default async function selectInstallationMode() {
10
- const modes = ['standard', 'full-encrypted', 'lvm2'];
11
+ const modes = Object.values(InstallationMode);
11
12
  const questions = [
12
13
  {
13
14
  choices: modes,
@@ -6,7 +6,7 @@
6
6
  * license: MIT
7
7
  */
8
8
  import inquirer from 'inquirer';
9
- import Keyboards from '../classes/keyboards.js';
9
+ import Keyboards from '../../classes/keyboards.js';
10
10
  /**
11
11
  *
12
12
  */
@@ -6,7 +6,7 @@
6
6
  * license: MIT
7
7
  */
8
8
  import inquirer from 'inquirer';
9
- import Keyboards from '../classes/keyboards.js';
9
+ import Keyboards from '../../classes/keyboards.js';
10
10
  /**
11
11
  *
12
12
  */
@@ -6,7 +6,7 @@
6
6
  * license: MIT
7
7
  */
8
8
  import inquirer from 'inquirer';
9
- import Keyboards from '../classes/keyboards.js';
9
+ import Keyboards from '../../classes/keyboards.js';
10
10
  /**
11
11
  * selectKeyboardOption
12
12
  */
@@ -6,7 +6,7 @@
6
6
  * license: MIT
7
7
  */
8
8
  import inquirer from 'inquirer';
9
- import Keyboards from '../classes/keyboards.js';
9
+ import Keyboards from '../../classes/keyboards.js';
10
10
  /**
11
11
  *
12
12
  */
@@ -6,7 +6,7 @@
6
6
  * license: MIT
7
7
  */
8
8
  import inquirer from 'inquirer';
9
- import Locales from '../classes/locales.js';
9
+ import Locales from '../../classes/locales.js';
10
10
  export default async function selectLanguages(selectedLanguage = '') {
11
11
  const locales = new Locales();
12
12
  const supported = await locales.getSupported();
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ./src/lib/select_replaced_partition.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 selectReplacedPartition(): Promise<string>;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * ./src/lib/select_replaced_partition.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
+ import shx from 'shelljs';
10
+ export default async function selectReplacedPartition() {
11
+ const partitions = shx.exec('lsblk -l -o NAME,TYPE | grep part | cut -d" " -f1', { silent: true }).stdout.trim().split('\n');
12
+ let partitionsList = [];
13
+ // Add partition to partitionsList
14
+ partitions.forEach((element) => {
15
+ partitionsList.push("/dev/" + element);
16
+ });
17
+ const questions = [
18
+ // nvme0n1p1, nvme0n1p2, nvme0n1p3
19
+ {
20
+ choices: partitionsList,
21
+ message: 'Select the installation partition: ',
22
+ name: 'installationPartition',
23
+ type: 'list'
24
+ }
25
+ ];
26
+ return new Promise((resolve) => {
27
+ inquirer.prompt(questions).then((options) => {
28
+ resolve(options.installationPartition);
29
+ });
30
+ });
31
+ }
@@ -5,4 +5,5 @@
5
5
  * email: piero.proietti@gmail.com
6
6
  * license: MIT
7
7
  */
8
- export default function selectUserSwapChoice(): Promise<string>;
8
+ import { SwapChoice } from '../classes/krill_enums.js';
9
+ export default function selectUserSwapChoice(initialSwapChoice?: SwapChoice): Promise<SwapChoice>;
@@ -8,14 +8,15 @@
8
8
  import inquirer from 'inquirer';
9
9
  import yaml from 'js-yaml';
10
10
  import fs from 'node:fs';
11
- export default async function selectUserSwapChoice() {
11
+ import { SwapChoice } from '../classes/krill_enums.js';
12
+ export default async function selectUserSwapChoice(initialSwapChoice = SwapChoice.Small) {
12
13
  let partitions = {};
13
14
  if (fs.existsSync('/etc/calamares/modules/partition.conf')) {
14
15
  partitions = yaml.load(fs.readFileSync('/etc/calamares/modules/partition.conf', 'utf8'));
15
16
  }
16
17
  else {
17
- partitions.userSwapChoices = ['none', 'small', 'suspend', 'file'];
18
- partitions.initialSwapChoice = 'small';
18
+ partitions.userSwapChoices = Object.values(SwapChoice);
19
+ partitions.initialSwapChoice = initialSwapChoice;
19
20
  }
20
21
  const questions = [
21
22
  {
@@ -17,6 +17,14 @@ export declare function exec(command: string, { capture, echo, ignore }?: {
17
17
  echo?: boolean | undefined;
18
18
  ignore?: boolean | undefined;
19
19
  }): Promise<IExec>;
20
+ /**
21
+ * Compare two instances in order to determinate if they have save property values
22
+ *
23
+ * @param instance1 T
24
+ * @param instance2 T
25
+ * @returns boolean
26
+ */
27
+ export declare function compareInstances<T>(instance1: T, instance2: T): boolean;
20
28
  /**
21
29
  * Il problema è in questa funzione: core/cli-ux/indesx.ts
22
30
  * qui riportata solo come esempio
package/dist/lib/utils.js CHANGED
@@ -62,6 +62,14 @@ export async function exec(command, { capture = false, echo = false, ignore = fa
62
62
  // end promise
63
63
  });
64
64
  }
65
+ /**
66
+ * Compare two instances in order to determinate if they have save property values
67
+ *
68
+ * @param instance1 T
69
+ * @param instance2 T
70
+ * @returns boolean
71
+ */
72
+ export function compareInstances(instance1, instance2) { return JSON.stringify(instance1) === JSON.stringify(instance2); }
65
73
  /**
66
74
  * Il problema è in questa funzione: core/cli-ux/indesx.ts
67
75
  * qui riportata solo come esempio
package/package.json CHANGED
@@ -2,62 +2,63 @@
2
2
  "name": "penguins-eggs",
3
3
  "shortName": "eggs",
4
4
  "description": "A remaster system tool, compatible with Arch, Debian, Devuan, Ubuntu and others",
5
- "version": "10.0.57",
5
+ "version": "10.0.60",
6
6
  "author": "Piero Proietti",
7
7
  "bin": {
8
8
  "eggs": "./bin/run.js"
9
9
  },
10
10
  "bugs": "https://github.com/pieroproietti/penguins-eggs/issues",
11
11
  "dependencies": {
12
- "@oclif/core": "^4.1.0",
13
- "@oclif/plugin-autocomplete": "^3.2.14",
14
- "@oclif/plugin-help": "^6.2.19",
15
- "@oclif/plugin-version": "^2.2.18",
16
- "ansis": "^3.4.0",
12
+ "@oclif/core": "^4.2.8",
13
+ "@oclif/plugin-autocomplete": "^3.2.24",
14
+ "@oclif/plugin-help": "^6.2.26",
15
+ "@oclif/plugin-version": "^2.2.25",
16
+ "ansis": "^3.14.0",
17
17
  "axios": "^1.7.9",
18
18
  "chalk": "^5.4.0",
19
- "cli-cursor": "^4.0.0",
19
+ "cli-cursor": "^5.0.0",
20
20
  "debug": "^4.4.0",
21
- "ink": "^5.0.1",
21
+ "ink": "^5.1.1",
22
22
  "ink-progress-bar": "^3.0.0",
23
23
  "ink-spinner": "^5.0.0",
24
- "inquirer": "^9.3.6",
24
+ "inquirer": "^9.3.7",
25
25
  "js-yaml": "^4.1.0",
26
26
  "mustache": "^4.2.0",
27
27
  "netmask": "^2.0.2",
28
28
  "node-proxy-dhcpd": "0.1.2",
29
29
  "node-static": "^0.7.11",
30
30
  "react": "^18.3.1",
31
+ "read": "^4.1.0",
31
32
  "shelljs": "^0.8.5",
32
- "systeminformation": "^5.23.14",
33
+ "systeminformation": "^5.25.11",
33
34
  "tftp": "^0.1.2"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@oclif/prettier-config": "^0.2.1",
37
- "@oclif/test": "^4.1.4",
38
- "@types/chai": "^4.3.19",
38
+ "@oclif/test": "^4.1.11",
39
+ "@types/chai": "^5.0.1",
39
40
  "@types/debug": "^4.1.12",
40
41
  "@types/inquirer": "^9.0.7",
41
42
  "@types/js-yaml": "^4.0.9",
42
43
  "@types/mocha": "^10.0.8",
43
44
  "@types/mustache": "^4.2.5",
44
45
  "@types/netmask": "^2.0.5",
45
- "@types/node": "^22.10.2",
46
+ "@types/node": "^22.13.4",
46
47
  "@types/node-static": "^0.7.11",
47
- "@types/react": "^18.3.12",
48
+ "@types/react": "18.3.18",
49
+ "@types/read": "^0.0.32",
48
50
  "@types/shelljs": "^0.8.15",
49
- "chai": "^5.1.2",
50
- "eslint": "^8.57.0",
51
- "eslint-config-oclif": "^5.2.1",
52
- "eslint-config-oclif-typescript": "^3.1.13",
53
- "eslint-config-prettier": "^9.1.0",
54
- "mocha": "^10.8.1",
55
- "oclif": "^4.17.0",
56
- "perrisbrewery": "^10.0.2",
57
- "prettier": "^3.4.2",
51
+ "chai": "^5.2.0",
52
+ "eslint": "^9.20.1",
53
+ "eslint-config-oclif": "^6.0.20",
54
+ "eslint-config-prettier": "^10.0.2",
55
+ "mocha": "^11.1.0",
56
+ "oclif": "^4.17.32",
57
+ "perrisbrewery": "^10.0.3",
58
+ "prettier": "^3.5.1",
58
59
  "shx": "^0.3.4",
59
60
  "ts-node": "10.9.2",
60
- "typescript": "^5.5.4"
61
+ "typescript": "^5.7.3"
61
62
  },
62
63
  "engines": {
63
64
  "node": ">=16.0.0"
package/scripts/_eggs CHANGED
@@ -200,8 +200,8 @@ _eggs() {
200
200
  "syncfrom[restore users and user data from a LUKS volumes]" \
201
201
  "syncto[Save users and users' data ENCRYPTED]" \
202
202
  "update[update the Penguins' eggs tool]" \
203
- "autocomplete[Display autocomplete installation instructions.]" \
204
203
  "help[Display help for eggs.]" \
204
+ "autocomplete[Display autocomplete installation instructions.]" \
205
205
  "version[]" \
206
206
 
207
207
  ;;
@@ -277,6 +277,7 @@ _arguments -S \
277
277
  "(-r --random)"{-r,--random}"[Add random to hostname, eg: colibri-ay412dt]" \
278
278
  "(-s --small)"{-s,--small}"[Swap small: RAM]" \
279
279
  "(-S --suspend)"{-S,--suspend}"[Swap suspend: RAM x 2]" \
280
+ "(-t --testing)"{-t,--testing}"[Just testing krill]" \
280
281
  "(-u --unattended)"{-u,--unattended}"[Unattended installation]" \
281
282
  "(-v --verbose)"{-v,--verbose}"[Verbose]" \
282
283
  --help"[Show help for command]" \
@@ -296,6 +297,7 @@ _arguments -S \
296
297
  "(-r --random)"{-r,--random}"[Add random to hostname, eg: colibri-ay412dt]" \
297
298
  "(-s --small)"{-s,--small}"[Swap small: RAM]" \
298
299
  "(-S --suspend)"{-S,--suspend}"[Swap suspend: RAM x 2]" \
300
+ "(-t --testing)"{-t,--testing}"[Just testing krill]" \
299
301
  "(-u --unattended)"{-u,--unattended}"[Unattended installation]" \
300
302
  "(-v --verbose)"{-v,--verbose}"[Verbose]" \
301
303
  --help"[Show help for command]" \
@@ -371,14 +373,14 @@ _arguments -S \
371
373
  "(-v --verbose)"{-v,--verbose}"[verbose]" \
372
374
  --help"[Show help for command]" \
373
375
  "*: :_files" ;;
374
- autocomplete)
376
+ help)
375
377
  _arguments -S \
376
- "(-r --refresh-cache)"{-r,--refresh-cache}"[Refresh cache (ignores displaying instructions)]" \
378
+ "(-n --nested-commands)"{-n,--nested-commands}"[Include all nested commands in the output.]" \
377
379
  --help"[Show help for command]" \
378
380
  "*: :_files" ;;
379
- help)
381
+ autocomplete)
380
382
  _arguments -S \
381
- "(-n --nested-commands)"{-n,--nested-commands}"[Include all nested commands in the output.]" \
383
+ "(-r --refresh-cache)"{-r,--refresh-cache}"[Refresh cache (ignores displaying instructions)]" \
382
384
  --help"[Show help for command]" \
383
385
  "*: :_files" ;;
384
386
  version)
package/scripts/eggs.bash CHANGED
@@ -20,8 +20,8 @@ dad --clean --default --file --help --verbose
20
20
  export:iso --checksum --clean --help --verbose
21
21
  export:pkg --all --clean --help --verbose
22
22
  export:tarballs --clean --help --verbose
23
- install --btrfs --chroot --crypted --domain --halt --help --ip --nointeractive --none --pve --random --small --suspend --unattended --verbose
24
- krill --btrfs --chroot --crypted --domain --halt --help --ip --nointeractive --none --pve --random --small --suspend --unattended --verbose
23
+ install --btrfs --chroot --crypted --domain --halt --help --ip --nointeractive --none --pve --random --small --suspend --testing --unattended --verbose
24
+ krill --btrfs --chroot --crypted --domain --halt --help --ip --nointeractive --none --pve --random --small --suspend --testing --unattended --verbose
25
25
  kill --help --isos --nointeractive --verbose
26
26
  love --help --verbose
27
27
  mom --help
@@ -39,8 +39,8 @@ wardrobe:get --help --verbose
39
39
  wardrobe:list --distro --help --verbose
40
40
  wardrobe:show --help --json --verbose --wardrobe
41
41
  wardrobe:wear --help --no_accessories --no_firmwares --verbose --wardrobe
42
- autocomplete --refresh-cache
43
42
  help --nested-commands
43
+ autocomplete --refresh-cache
44
44
  version --json --verbose
45
45
  "
46
46