penguins-eggs 10.0.53 → 10.0.54

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 (344) hide show
  1. package/.oclif.manifest.json +1548 -2
  2. package/README.md +788 -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/distros/fedora/calamares/settings.yml +0 -6
  6. package/dist/classes/bleach.d.ts +32 -0
  7. package/dist/classes/bleach.js +135 -0
  8. package/dist/classes/cfs.d.ts +17 -0
  9. package/dist/classes/cfs.js +39 -0
  10. package/dist/classes/cli-autologin.d.ts +52 -0
  11. package/dist/classes/cli-autologin.js +247 -0
  12. package/dist/classes/compressors.d.ts +54 -0
  13. package/dist/classes/compressors.js +109 -0
  14. package/dist/classes/daddy.d.ts +26 -0
  15. package/dist/classes/daddy.js +167 -0
  16. package/dist/classes/distro.d.ts +32 -0
  17. package/dist/classes/distro.js +341 -0
  18. package/dist/classes/diversions.d.ts +48 -0
  19. package/dist/classes/diversions.js +116 -0
  20. package/dist/classes/incubation/branding.d.ts +17 -0
  21. package/dist/classes/incubation/branding.js +85 -0
  22. package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
  23. package/dist/classes/incubation/fisherman-helper/displaymanager.js +40 -0
  24. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  25. package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
  26. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  27. package/dist/classes/incubation/fisherman-helper/settings.js +83 -0
  28. package/dist/classes/incubation/fisherman.d.ts +70 -0
  29. package/dist/classes/incubation/fisherman.js +263 -0
  30. package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
  31. package/dist/classes/incubation/incubator.d/alpine.js +78 -0
  32. package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
  33. package/dist/classes/incubation/incubator.d/bionic.js +83 -0
  34. package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
  35. package/dist/classes/incubation/incubator.d/buster.js +85 -0
  36. package/dist/classes/incubation/incubator.d/jessie.d.ts +31 -0
  37. package/dist/classes/incubation/incubator.d/jessie.js +44 -0
  38. package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
  39. package/dist/classes/incubation/incubator.d/noble.js +85 -0
  40. package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
  41. package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
  42. package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
  43. package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
  44. package/dist/classes/incubation/incubator.d/rolling.d.ts +32 -0
  45. package/dist/classes/incubation/incubator.d/rolling.js +80 -0
  46. package/dist/classes/incubation/incubator.d.ts +44 -0
  47. package/dist/classes/incubation/incubator.js +382 -0
  48. package/dist/classes/incubation/installer.d.ts +13 -0
  49. package/dist/classes/incubation/installer.js +52 -0
  50. package/dist/classes/keyboards.d.ts +50 -0
  51. package/dist/classes/keyboards.js +287 -0
  52. package/dist/classes/locales.d.ts +21 -0
  53. package/dist/classes/locales.js +77 -0
  54. package/dist/classes/network.d.ts +37 -0
  55. package/dist/classes/network.js +98 -0
  56. package/dist/classes/ovary.d.ts +198 -0
  57. package/dist/classes/ovary.js +1849 -0
  58. package/dist/classes/pacman.d/aldos.d.ts +52 -0
  59. package/dist/classes/pacman.d/aldos.js +100 -0
  60. package/dist/classes/pacman.d/alpine.d.ts +56 -0
  61. package/dist/classes/pacman.d/alpine.js +162 -0
  62. package/dist/classes/pacman.d/archlinux.d.ts +62 -0
  63. package/dist/classes/pacman.d/archlinux.js +137 -0
  64. package/dist/classes/pacman.d/debian.d.ts +65 -0
  65. package/dist/classes/pacman.d/debian.js +143 -0
  66. package/dist/classes/pacman.d/fedora.d.ts +53 -0
  67. package/dist/classes/pacman.d/fedora.js +101 -0
  68. package/dist/classes/pacman.d/openmamba.d.ts +52 -0
  69. package/dist/classes/pacman.d/openmamba.js +100 -0
  70. package/dist/classes/pacman.d/opensuse.d.ts +53 -0
  71. package/dist/classes/pacman.d/opensuse.js +102 -0
  72. package/dist/classes/pacman.d/voidlinux.d.ts +52 -0
  73. package/dist/classes/pacman.d/voidlinux.js +90 -0
  74. package/dist/classes/pacman.d.ts +139 -0
  75. package/dist/classes/pacman.js +775 -0
  76. package/dist/classes/pve-live.d.ts +17 -0
  77. package/dist/classes/pve-live.js +52 -0
  78. package/dist/classes/pxe.d.ts +74 -0
  79. package/dist/classes/pxe.js +410 -0
  80. package/dist/classes/settings.d.ts +53 -0
  81. package/dist/classes/settings.js +185 -0
  82. package/dist/classes/sources_list.d.ts +28 -0
  83. package/dist/classes/sources_list.js +89 -0
  84. package/dist/classes/systemctl.d.ts +47 -0
  85. package/dist/classes/systemctl.js +86 -0
  86. package/dist/classes/tailor.d.ts +50 -0
  87. package/dist/classes/tailor.js +526 -0
  88. package/dist/classes/tools.d.ts +26 -0
  89. package/dist/classes/tools.js +50 -0
  90. package/dist/classes/users.d.ts +28 -0
  91. package/dist/classes/users.js +143 -0
  92. package/dist/classes/utils.d.ts +324 -0
  93. package/dist/classes/utils.js +984 -0
  94. package/dist/classes/xdg.d.ts +45 -0
  95. package/dist/classes/xdg.js +337 -0
  96. package/dist/classes/yolk.d.ts +33 -0
  97. package/dist/classes/yolk.js +114 -0
  98. package/dist/commands/adapt.d.ts +17 -0
  99. package/dist/commands/adapt.js +33 -0
  100. package/dist/commands/analyze.d.ts +26 -0
  101. package/dist/commands/analyze.js +95 -0
  102. package/dist/commands/calamares.d.ts +29 -0
  103. package/dist/commands/calamares.js +112 -0
  104. package/dist/commands/config.d.ts +35 -0
  105. package/dist/commands/config.js +120 -0
  106. package/dist/commands/cuckoo.d.ts +16 -0
  107. package/dist/commands/cuckoo.js +62 -0
  108. package/dist/commands/dad.d.ts +20 -0
  109. package/dist/commands/dad.js +46 -0
  110. package/dist/commands/export/iso.d.ts +19 -0
  111. package/dist/commands/export/iso.js +55 -0
  112. package/dist/commands/export/pkg.d.ts +29 -0
  113. package/dist/commands/export/pkg.js +163 -0
  114. package/dist/commands/export/tarballs.d.ts +27 -0
  115. package/dist/commands/export/tarballs.js +84 -0
  116. package/dist/commands/install.d.ts +37 -0
  117. package/dist/commands/install.js +88 -0
  118. package/dist/commands/kill.d.ts +24 -0
  119. package/dist/commands/kill.js +50 -0
  120. package/dist/commands/love.d.ts +20 -0
  121. package/dist/commands/love.js +59 -0
  122. package/dist/commands/mom.d.ts +16 -0
  123. package/dist/commands/mom.js +30 -0
  124. package/dist/commands/produce.d.ts +34 -0
  125. package/dist/commands/produce.js +201 -0
  126. package/dist/commands/status.d.ts +23 -0
  127. package/dist/commands/status.js +31 -0
  128. package/dist/commands/syncfrom.d.ts +45 -0
  129. package/dist/commands/syncfrom.js +152 -0
  130. package/dist/commands/syncto.d.ts +40 -0
  131. package/dist/commands/syncto.js +175 -0
  132. package/dist/commands/tools/clean.d.ts +18 -0
  133. package/dist/commands/tools/clean.js +37 -0
  134. package/dist/commands/tools/ppa.d.ts +26 -0
  135. package/dist/commands/tools/ppa.js +138 -0
  136. package/dist/commands/tools/skel.d.ts +18 -0
  137. package/dist/commands/tools/skel.js +44 -0
  138. package/dist/commands/tools/stat.d.ts +31 -0
  139. package/dist/commands/tools/stat.js +70 -0
  140. package/dist/commands/tools/yolk.d.ts +24 -0
  141. package/dist/commands/tools/yolk.js +45 -0
  142. package/dist/commands/update.d.ts +51 -0
  143. package/dist/commands/update.js +219 -0
  144. package/dist/commands/wardrobe/get.d.ts +23 -0
  145. package/dist/commands/wardrobe/get.js +52 -0
  146. package/dist/commands/wardrobe/list.d.ts +24 -0
  147. package/dist/commands/wardrobe/list.js +125 -0
  148. package/dist/commands/wardrobe/show.d.ts +25 -0
  149. package/dist/commands/wardrobe/show.js +97 -0
  150. package/dist/commands/wardrobe/wear.d.ts +26 -0
  151. package/dist/commands/wardrobe/wear.js +84 -0
  152. package/dist/components/finished.d.ts +16 -0
  153. package/dist/components/finished.js +56 -0
  154. package/dist/components/information.d.ts +8 -0
  155. package/dist/components/information.js +154 -0
  156. package/dist/components/install.d.ts +15 -0
  157. package/dist/components/install.js +60 -0
  158. package/dist/components/keyboard.d.ts +16 -0
  159. package/dist/components/keyboard.js +54 -0
  160. package/dist/components/location.d.ts +16 -0
  161. package/dist/components/location.js +59 -0
  162. package/dist/components/network.d.ts +19 -0
  163. package/dist/components/network.js +65 -0
  164. package/dist/components/partitions.d.ts +16 -0
  165. package/dist/components/partitions.js +73 -0
  166. package/dist/components/steps.d.ts +13 -0
  167. package/dist/components/steps.js +148 -0
  168. package/dist/components/summary.d.ts +24 -0
  169. package/dist/components/summary.js +81 -0
  170. package/dist/components/title.d.ts +11 -0
  171. package/dist/components/title.js +35 -0
  172. package/dist/components/users.d.ts +24 -0
  173. package/dist/components/users.js +80 -0
  174. package/dist/components/welcome.d.ts +13 -0
  175. package/dist/components/welcome.js +63 -0
  176. package/dist/index-old.d.ts +8 -0
  177. package/dist/index-old.js +8 -0
  178. package/dist/index.d.ts +54 -0
  179. package/dist/index.js +147 -0
  180. package/dist/interfaces/i-addons.d.ts +12 -0
  181. package/dist/interfaces/i-addons.js +8 -0
  182. package/dist/interfaces/i-analyze.d.ts +17 -0
  183. package/dist/interfaces/i-analyze.js +17 -0
  184. package/dist/interfaces/i-app.d.ts +14 -0
  185. package/dist/interfaces/i-app.js +8 -0
  186. package/dist/interfaces/i-branding.d.ts +36 -0
  187. package/dist/interfaces/i-branding.js +8 -0
  188. package/dist/interfaces/i-calamares-displaymanager.d.ts +17 -0
  189. package/dist/interfaces/i-calamares-displaymanager.js +1 -0
  190. package/dist/interfaces/i-calamares-finished.d.ts +12 -0
  191. package/dist/interfaces/i-calamares-finished.js +1 -0
  192. package/dist/interfaces/i-calamares-packages.d.ts +28 -0
  193. package/dist/interfaces/i-calamares-packages.js +1 -0
  194. package/dist/interfaces/i-calamares-partition.d.ts +40 -0
  195. package/dist/interfaces/i-calamares-partition.js +1 -0
  196. package/dist/interfaces/i-config-tools.d.ts +15 -0
  197. package/dist/interfaces/i-config-tools.js +8 -0
  198. package/dist/interfaces/i-devices.d.ts +20 -0
  199. package/dist/interfaces/i-devices.js +8 -0
  200. package/dist/interfaces/i-distro.d.ts +23 -0
  201. package/dist/interfaces/i-distro.js +8 -0
  202. package/dist/interfaces/i-drive-list.d.ts +33 -0
  203. package/dist/interfaces/i-drive-list.js +8 -0
  204. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  205. package/dist/interfaces/i-eggs-config.js +8 -0
  206. package/dist/interfaces/i-excludes.d.ts +14 -0
  207. package/dist/interfaces/i-excludes.js +8 -0
  208. package/dist/interfaces/i-exec.d.ts +11 -0
  209. package/dist/interfaces/i-exec.js +8 -0
  210. package/dist/interfaces/i-initrd.d.ts +13 -0
  211. package/dist/interfaces/i-initrd.js +8 -0
  212. package/dist/interfaces/i-install.d.ts +16 -0
  213. package/dist/interfaces/i-install.js +8 -0
  214. package/dist/interfaces/i-installer.d.ts +17 -0
  215. package/dist/interfaces/i-installer.js +8 -0
  216. package/dist/interfaces/i-krill-config.d.ts +33 -0
  217. package/dist/interfaces/i-krill-config.js +8 -0
  218. package/dist/interfaces/i-krill.d.ts +42 -0
  219. package/dist/interfaces/i-krill.js +8 -0
  220. package/dist/interfaces/i-materia.d.ts +36 -0
  221. package/dist/interfaces/i-materia.js +8 -0
  222. package/dist/interfaces/i-net.d.ts +16 -0
  223. package/dist/interfaces/i-net.js +8 -0
  224. package/dist/interfaces/i-packages.d.ts +16 -0
  225. package/dist/interfaces/i-packages.js +8 -0
  226. package/dist/interfaces/i-partitions.d.ts +16 -0
  227. package/dist/interfaces/i-partitions.js +8 -0
  228. package/dist/interfaces/i-pxe.d.ts +45 -0
  229. package/dist/interfaces/i-pxe.js +1 -0
  230. package/dist/interfaces/i-remix.d.ts +21 -0
  231. package/dist/interfaces/i-remix.js +8 -0
  232. package/dist/interfaces/i-settings.d.ts +33 -0
  233. package/dist/interfaces/i-settings.js +8 -0
  234. package/dist/interfaces/i-user.d.ts +14 -0
  235. package/dist/interfaces/i-user.js +8 -0
  236. package/dist/interfaces/i-workdir.d.ts +14 -0
  237. package/dist/interfaces/i-workdir.js +8 -0
  238. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  239. package/dist/interfaces/i-xkb-model.js +8 -0
  240. package/dist/interfaces/index.d.ts +25 -0
  241. package/dist/interfaces/index.js +8 -0
  242. package/dist/krill/modules/add-user.d.ts +20 -0
  243. package/dist/krill/modules/add-user.js +48 -0
  244. package/dist/krill/modules/bootloader-config.d.ts +14 -0
  245. package/dist/krill/modules/bootloader-config.js +165 -0
  246. package/dist/krill/modules/bootloader.d.ts +14 -0
  247. package/dist/krill/modules/bootloader.js +157 -0
  248. package/dist/krill/modules/change-password.d.ts +15 -0
  249. package/dist/krill/modules/change-password.js +18 -0
  250. package/dist/krill/modules/del-live-user.d.ts +14 -0
  251. package/dist/krill/modules/del-live-user.js +39 -0
  252. package/dist/krill/modules/fstab.d.ts +14 -0
  253. package/dist/krill/modules/fstab.js +123 -0
  254. package/dist/krill/modules/grubcfg.d.ts +17 -0
  255. package/dist/krill/modules/grubcfg.js +29 -0
  256. package/dist/krill/modules/hostname.d.ts +13 -0
  257. package/dist/krill/modules/hostname.js +50 -0
  258. package/dist/krill/modules/initramfs-cfg.d.ts +14 -0
  259. package/dist/krill/modules/initramfs-cfg.js +22 -0
  260. package/dist/krill/modules/initramfs.d.ts +13 -0
  261. package/dist/krill/modules/initramfs.js +54 -0
  262. package/dist/krill/modules/locale-cfg.d.ts +10 -0
  263. package/dist/krill/modules/locale-cfg.js +58 -0
  264. package/dist/krill/modules/locale.d.ts +13 -0
  265. package/dist/krill/modules/locale.js +91 -0
  266. package/dist/krill/modules/m-keyboard.d.ts +14 -0
  267. package/dist/krill/modules/m-keyboard.js +58 -0
  268. package/dist/krill/modules/machine-id.d.ts +15 -0
  269. package/dist/krill/modules/machine-id.js +33 -0
  270. package/dist/krill/modules/mkfs.d.ts +15 -0
  271. package/dist/krill/modules/mkfs.js +50 -0
  272. package/dist/krill/modules/mount-fs.d.ts +17 -0
  273. package/dist/krill/modules/mount-fs.js +62 -0
  274. package/dist/krill/modules/mount-vfs.d.ts +17 -0
  275. package/dist/krill/modules/mount-vfs.js +40 -0
  276. package/dist/krill/modules/network-cfg.d.ts +19 -0
  277. package/dist/krill/modules/network-cfg.js +64 -0
  278. package/dist/krill/modules/packages.d.ts +14 -0
  279. package/dist/krill/modules/packages.js +111 -0
  280. package/dist/krill/modules/partition.d.ts +20 -0
  281. package/dist/krill/modules/partition.js +324 -0
  282. package/dist/krill/modules/remove-installer-link.d.ts +13 -0
  283. package/dist/krill/modules/remove-installer-link.js +35 -0
  284. package/dist/krill/modules/umount.d.ts +14 -0
  285. package/dist/krill/modules/umount.js +28 -0
  286. package/dist/krill/modules/unpackfs.d.ts +13 -0
  287. package/dist/krill/modules/unpackfs.js +20 -0
  288. package/dist/krill/prepare.d.ts +78 -0
  289. package/dist/krill/prepare.js +624 -0
  290. package/dist/krill/sequence.d.ts +154 -0
  291. package/dist/krill/sequence.js +652 -0
  292. package/dist/lib/get_address.d.ts +8 -0
  293. package/dist/lib/get_address.js +23 -0
  294. package/dist/lib/get_dns.d.ts +8 -0
  295. package/dist/lib/get_dns.js +23 -0
  296. package/dist/lib/get_domain.d.ts +8 -0
  297. package/dist/lib/get_domain.js +23 -0
  298. package/dist/lib/get_gateway.d.ts +8 -0
  299. package/dist/lib/get_gateway.js +23 -0
  300. package/dist/lib/get_hostname.d.ts +8 -0
  301. package/dist/lib/get_hostname.js +23 -0
  302. package/dist/lib/get_netmask.d.ts +8 -0
  303. package/dist/lib/get_netmask.js +23 -0
  304. package/dist/lib/get_password.d.ts +8 -0
  305. package/dist/lib/get_password.js +36 -0
  306. package/dist/lib/get_userfullname.d.ts +8 -0
  307. package/dist/lib/get_userfullname.js +23 -0
  308. package/dist/lib/get_username.d.ts +8 -0
  309. package/dist/lib/get_username.js +23 -0
  310. package/dist/lib/kill_me_softly.d.ts +11 -0
  311. package/dist/lib/kill_me_softly.js +61 -0
  312. package/dist/lib/select_address_type.d.ts +8 -0
  313. package/dist/lib/select_address_type.js +24 -0
  314. package/dist/lib/select_filesystem_type.d.ts +8 -0
  315. package/dist/lib/select_filesystem_type.js +46 -0
  316. package/dist/lib/select_installation_device.d.ts +8 -0
  317. package/dist/lib/select_installation_device.js +30 -0
  318. package/dist/lib/select_installation_mode.d.ts +8 -0
  319. package/dist/lib/select_installation_mode.js +24 -0
  320. package/dist/lib/select_interface.d.ts +8 -0
  321. package/dist/lib/select_interface.js +24 -0
  322. package/dist/lib/select_keyboard_layout.d.ts +11 -0
  323. package/dist/lib/select_keyboard_layout.js +36 -0
  324. package/dist/lib/select_keyboard_model.d.ts +11 -0
  325. package/dist/lib/select_keyboard_model.js +34 -0
  326. package/dist/lib/select_keyboard_option.d.ts +11 -0
  327. package/dist/lib/select_keyboard_option.js +34 -0
  328. package/dist/lib/select_keyboard_variant.d.ts +11 -0
  329. package/dist/lib/select_keyboard_variant.js +35 -0
  330. package/dist/lib/select_languages.d.ts +8 -0
  331. package/dist/lib/select_languages.js +28 -0
  332. package/dist/lib/select_regions.d.ts +8 -0
  333. package/dist/lib/select_regions.js +24 -0
  334. package/dist/lib/select_user_swap_choice.d.ts +8 -0
  335. package/dist/lib/select_user_swap_choice.js +34 -0
  336. package/dist/lib/select_zones.d.ts +8 -0
  337. package/dist/lib/select_zones.js +518 -0
  338. package/dist/lib/utils.d.ts +34 -0
  339. package/dist/lib/utils.js +79 -0
  340. package/dist/penguins-eggs-tarball-10.0.54-1-linux-x64.tar.gz +0 -0
  341. package/package.json +11 -7
  342. package/scripts/_eggs +10 -1
  343. package/scripts/eggs.bash +1 -0
  344. /package/addons/eggs/theme/livecd/{grub.main.cfg → grub.main.full.cfg} +0 -0
@@ -0,0 +1,775 @@
1
+ /**
2
+ * ./src/classes/pacman.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 { execSync } from 'node:child_process';
9
+ import fs from 'node:fs';
10
+ // _dirname
11
+ import path from 'node:path';
12
+ import shx from 'shelljs';
13
+ import { exec } from '../lib/utils.js';
14
+ import Distro from './distro.js';
15
+ import Diversions from './diversions.js';
16
+ import Aldos from './pacman.d/aldos.js';
17
+ import Alpine from './pacman.d/alpine.js';
18
+ import Archlinux from './pacman.d/archlinux.js';
19
+ import Debian from './pacman.d/debian.js';
20
+ import Fedora from './pacman.d/fedora.js';
21
+ import Openmamba from './pacman.d/openmamba.js';
22
+ import Opensuse from './pacman.d/opensuse.js';
23
+ import Voidlinux from './pacman.d/voidlinux.js';
24
+ import Settings from './settings.js';
25
+ import Utils from './utils.js';
26
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
27
+ const config_file = '/etc/penguins-eggs.d/eggs.yaml';
28
+ const config_tools = '/etc/penguins-eggs.d/tools.yaml';
29
+ /**
30
+ * Utils: general porpouse utils
31
+ * @remarks all the utilities
32
+ */
33
+ export default class Pacman {
34
+ static debs4calamares = ['calamares', 'qml-module-qtquick2', 'qml-module-qtquick-controls'];
35
+ distro = {};
36
+ remix = {};
37
+ /**
38
+ *
39
+ * @param verbose
40
+ */
41
+ static async autocompleteInstall(verbose = false) {
42
+ if (Pacman.packageIsInstalled('bash-completion')) {
43
+ if (fs.existsSync('/usr/share/bash-completion/completions/')) {
44
+ await exec(`cp ${__dirname}/../../scripts/eggs.bash /usr/share/bash-completion/completions/`);
45
+ }
46
+ else if (fs.existsSync('/etc/bash_completion.d/')) {
47
+ await exec(`cp ${__dirname}/../../scripts/eggs.bash /etc/bash_completion.d/`);
48
+ }
49
+ }
50
+ }
51
+ /**
52
+ * return true if calamares is installed
53
+ */
54
+ static calamaresExists() {
55
+ return this.commandIsInstalled('calamares');
56
+ }
57
+ /**
58
+ *
59
+ */
60
+ static async calamaresInstall(verbose = false) {
61
+ if (this.isInstalledGui()) {
62
+ const familyId = this.distro().familyId;
63
+ if (familyId === 'aldos') {
64
+ await Aldos.calamaresInstall(verbose);
65
+ }
66
+ else if (familyId === 'alpine') {
67
+ await Alpine.calamaresInstall(verbose);
68
+ }
69
+ else if (familyId === 'archlinux') {
70
+ if (Diversions.isManjaroBased(this.distro().distroId)) {
71
+ await exec(`pacman -Sy --noconfirm calamares`, Utils.setEcho(true));
72
+ }
73
+ else {
74
+ await Archlinux.calamaresInstall(verbose);
75
+ }
76
+ }
77
+ else if (familyId === 'debian') {
78
+ await Debian.calamaresInstall(verbose);
79
+ }
80
+ else if (familyId === 'fedora') {
81
+ await Fedora.calamaresInstall(verbose);
82
+ }
83
+ else if (familyId === 'openmamba') {
84
+ await Openmamba.calamaresInstall(verbose);
85
+ }
86
+ else if (familyId === 'opensuse') {
87
+ await Opensuse.calamaresInstall(verbose);
88
+ }
89
+ else if (familyId === 'voidlinux') {
90
+ await Voidlinux.calamaresInstall(verbose);
91
+ }
92
+ }
93
+ }
94
+ /**
95
+ * calamaresPolicies
96
+ */
97
+ static async calamaresPolicies(verbose = false) {
98
+ const familyId = this.distro().familyId;
99
+ if (familyId === 'aldos') {
100
+ await Aldos.calamaresPolicies(verbose);
101
+ }
102
+ else if (familyId === 'alpine') {
103
+ await Alpine.calamaresPolicies(verbose);
104
+ }
105
+ else if (familyId === 'archlinux') {
106
+ await Archlinux.calamaresPolicies(verbose);
107
+ }
108
+ else if (familyId === 'debian') {
109
+ await Debian.calamaresPolicies(verbose);
110
+ }
111
+ else if (familyId === 'fedora') {
112
+ await Fedora.calamaresPolicies(verbose);
113
+ }
114
+ else if (familyId === 'openmamba') {
115
+ await Openmamba.calamaresPolicies(verbose);
116
+ }
117
+ else if (familyId === 'opensuse') {
118
+ await Opensuse.calamaresPolicies(verbose);
119
+ }
120
+ else if (familyId === 'voidlinux') {
121
+ await Voidlinux.calamaresPolicies(verbose);
122
+ }
123
+ }
124
+ /**
125
+ *
126
+ */
127
+ static async calamaresRemove(verbose = true) {
128
+ let retVal = false;
129
+ const familyId = this.distro().familyId;
130
+ if (familyId === 'aldos') {
131
+ retVal = await Aldos.calamaresRemove(verbose);
132
+ }
133
+ else if (familyId === 'alpine') {
134
+ retVal = await Alpine.calamaresRemove(verbose);
135
+ }
136
+ else if (familyId === 'archlinux') {
137
+ retVal = await Archlinux.calamaresRemove(verbose);
138
+ }
139
+ else if (familyId === 'debian') {
140
+ retVal = await Debian.calamaresRemove(verbose);
141
+ }
142
+ else if (familyId === 'fedora') {
143
+ retVal = await Fedora.calamaresRemove(verbose);
144
+ }
145
+ else if (familyId === 'openmamba') {
146
+ retVal = await Openmamba.calamaresRemove(verbose);
147
+ }
148
+ else if (familyId === 'opensuse') {
149
+ retVal = await Opensuse.calamaresRemove(verbose);
150
+ }
151
+ else if (familyId === 'voidlinux') {
152
+ retVal = await Voidlinux.calamaresRemove(verbose);
153
+ }
154
+ return retVal;
155
+ }
156
+ /**
157
+ *
158
+ * @param cmd
159
+ */
160
+ static commandIsInstalled(cmd) {
161
+ let installed = false;
162
+ // if (shx.exec(`command -V ${cmd} &>/dev/null`).code == 0) {
163
+ // remove output
164
+ if (shx.exec(`command -V ${cmd} >/dev/null 2>&1`).code == 0) {
165
+ installed = true;
166
+ }
167
+ return installed;
168
+ }
169
+ /**
170
+ * Restituisce VERO se i file di configurazione SONO presenti
171
+ */
172
+ static configurationCheck() {
173
+ const confExists = fs.existsSync(config_file);
174
+ return confExists;
175
+ }
176
+ /**
177
+ *
178
+ */
179
+ static async configurationFresh() {
180
+ const config = {};
181
+ config.version = Utils.getPackageVersion();
182
+ config.snapshot_dir = '/home/eggs';
183
+ config.snapshot_prefix = '';
184
+ config.snapshot_excludes = '/etc/penguins-eggs.d/exclude.list';
185
+ config.snapshot_basename = ''; // before default was hostname
186
+ config.user_opt = 'live';
187
+ config.user_opt_passwd = 'evolution';
188
+ config.root_passwd = 'evolution';
189
+ config.theme = 'eggs';
190
+ config.force_installer = true;
191
+ config.make_efi = true;
192
+ config.make_md5sum = false;
193
+ config.make_isohybrid = true;
194
+ config.compression = 'xz';
195
+ config.ssh_pass = false;
196
+ config.timezone = 'Europe/Rome';
197
+ config.pmount_fixed = false;
198
+ if (!this.calamaresExists()) {
199
+ config.force_installer = false;
200
+ // console.log('Due the lacks of calamares package set force_installer = false')
201
+ }
202
+ if (!Pacman.isUefi() && Utils.uefiArch() !== 'i386') {
203
+ config.make_efi = false;
204
+ console.log('Due the lacks of grub-efi-' + Utils.uefiArch() + '-bin package set make_efi = false');
205
+ }
206
+ /**
207
+ * Salvo la configurazione di eggs.yaml
208
+ */
209
+ config.machine_id = Utils.machineId();
210
+ config.vmlinuz = Utils.vmlinuz();
211
+ config.initrd_img = Utils.initrdImg();
212
+ const settings = new Settings();
213
+ await settings.save(config);
214
+ }
215
+ /**
216
+ * Creazione del file di configurazione /etc/penguins-eggs
217
+ */
218
+ static async configurationInstall(links = true, verbose = false) {
219
+ const confRoot = '/etc/penguins-eggs.d';
220
+ if (!fs.existsSync(confRoot)) {
221
+ execSync(`mkdir ${confRoot}`);
222
+ }
223
+ if (verbose) {
224
+ console.log('configuration install: ' + confRoot);
225
+ }
226
+ const addons = `${confRoot}/addons`;
227
+ if (fs.existsSync(addons)) {
228
+ execSync(`rm -rf ${addons}`);
229
+ }
230
+ const distros = `${confRoot}/distros`;
231
+ if (fs.existsSync(distros)) {
232
+ execSync(`rm -rf ${distros}`);
233
+ }
234
+ execSync(`mkdir -p ${distros}`);
235
+ /**
236
+ * We use /etc/penguins-eggs.d/init for our init scripts:
237
+ * # unattended.sh -> eggs install --unattended
238
+ * # cuckoo -> eggs cuckoo
239
+ */
240
+ const init = `${confRoot}/init`;
241
+ if (fs.existsSync(init)) {
242
+ execSync(`rm -rf ${init}`);
243
+ }
244
+ execSync(`mkdir -p ${init}`);
245
+ shx.ln('-s', path.resolve(__dirname, '../../addons'), addons);
246
+ shx.cp(path.resolve(__dirname, '../../conf/README.md'), confRoot);
247
+ shx.cp(path.resolve(__dirname, '../../conf/derivatives.yaml'), confRoot);
248
+ shx.cp(path.resolve(__dirname, '../../conf/krill.yaml'), confRoot);
249
+ shx.cp(path.resolve(__dirname, '../../conf/love.yaml'), confRoot);
250
+ shx.cp(path.resolve(__dirname, '../../conf/tools.yaml'), config_tools);
251
+ shx.cp(path.resolve(__dirname, '../../conf/yolk.yaml'), confRoot);
252
+ // init
253
+ shx.cp(path.resolve(__dirname, '../../conf/init/unattended.sh'), '/etc/penguins-eggs.d/init');
254
+ shx.chmod('+x', '/etc/penguins-eggs.d/init/unattended.sh');
255
+ shx.cp(path.resolve(__dirname, '../../conf/init/cuckoo.sh'), '/etc/penguins-eggs.d/init');
256
+ shx.chmod('+x', '/etc/penguins-eggs.d/init/cuckoo.sh');
257
+ // creazione cartella exclude.list.d
258
+ execSync(`mkdir -p /etc/penguins-eggs.d/exclude.list.d`);
259
+ shx.cp(path.resolve(__dirname, '../../conf/exclude.list.d/*'), '/etc/penguins-eggs.d/exclude.list.d');
260
+ await this.configurationFresh();
261
+ }
262
+ /**
263
+ * Ritorna vero se machine-id è uguale
264
+ */
265
+ static async configurationMachineNew(verbose = false) {
266
+ const settings = new Settings();
267
+ await settings.load();
268
+ const result = Utils.machineId() !== settings.config.machine_id;
269
+ if (verbose && result) {
270
+ console.log('configurationMachineNew: True');
271
+ }
272
+ return result;
273
+ }
274
+ /**
275
+ * Rimozione dei file di configurazione
276
+ */
277
+ static async configurationRemove(verbose = true) {
278
+ const echo = Utils.setEcho(verbose);
279
+ if (fs.existsSync('/etc/penguins-eggs.d')) {
280
+ await exec('rm /etc/penguins-eggs.d -rf', echo);
281
+ }
282
+ if (fs.existsSync('/etc/calamares')) {
283
+ await exec('rm /etc/calamares -rf', echo);
284
+ }
285
+ }
286
+ /**
287
+ *
288
+ * @returns
289
+ */
290
+ static distro() {
291
+ return new Distro();
292
+ }
293
+ /**
294
+ * distroTemplateCheck
295
+ */
296
+ static distroTemplateCheck() {
297
+ const { codenameLikeId } = this.distro();
298
+ // console.log(codenameLikeId)
299
+ return fs.existsSync(`/etc/penguins-eggs.d/distros/${codenameLikeId}`);
300
+ }
301
+ /**
302
+ *
303
+ */
304
+ static async distroTemplateInstall(verbose = false) {
305
+ if (verbose) {
306
+ console.log('distroTemplateInstall');
307
+ }
308
+ const echo = Utils.setEcho(verbose);
309
+ const rootPen = Utils.rootPenguin();
310
+ await exec(`mkdir /etc/penguins-eggs.d/distros/${this.distro().codenameLikeId}`);
311
+ /**
312
+ * Debian 10 - Buster: è il master per tutte le distro
313
+ */
314
+ const buster = `${rootPen}/conf/distros/buster`;
315
+ /**
316
+ * Debian 8 jessie: eredita grub, isolinux e locales da buster, contiene krill al posto di calamares
317
+ */
318
+ const codenameLikeId = this.distro().codenameLikeId;
319
+ /***********************************************************************************
320
+ * aldos
321
+ **********************************************************************************/
322
+ if (codenameLikeId === 'aldos') {
323
+ const dest = '/etc/penguins-eggs.d/distros/aldos/';
324
+ const aldos = `${rootPen}/conf/distros/aldos/*`;
325
+ await exec(`cp -r ${aldos} ${dest}`, echo);
326
+ /***********************************************************************************
327
+ * Alpine
328
+ **********************************************************************************/
329
+ }
330
+ else if (codenameLikeId === 'alpine') {
331
+ // eredita solo da alpine
332
+ const dest = '/etc/penguins-eggs.d/distros/alpine/';
333
+ const alpine = `${rootPen}/conf/distros/alpine/`;
334
+ await exec(`cp -r ${alpine}/calamares ${dest}/calamares`, echo);
335
+ /***********************************************************************************
336
+ * Arch Linux
337
+ **********************************************************************************/
338
+ }
339
+ else if (codenameLikeId === 'rolling') {
340
+ const dest = '/etc/penguins-eggs.d/distros/rolling/';
341
+ const rolling = `${rootPen}/conf/distros/rolling/*`;
342
+ await exec(`cp -r ${rolling} ${dest}`, echo);
343
+ /***********************************************************************************
344
+ * Debian
345
+ **********************************************************************************/
346
+ /**
347
+ * Debian 8 jessie
348
+ */
349
+ }
350
+ else if (codenameLikeId === 'jessie') {
351
+ const dest = '/etc/penguins-eggs.d/distros/jessie';
352
+ await exec(`cp -r ${rootPen}/conf/distros/jessie/krill ${dest}/calamares`, echo);
353
+ /**
354
+ * Debian 9 stretch: eredita grub, isolinux e locales da buster, contiene krill al posto di calamares
355
+ */
356
+ }
357
+ else if (codenameLikeId === 'stretch') {
358
+ const dest = '/etc/penguins-eggs.d/distros/stretch';
359
+ await exec(`cp -r ${rootPen}/conf/distros/jessie/krill ${dest}/calamares`, echo);
360
+ /**
361
+ * Debian 10 buster: eredita tutto da buster
362
+ */
363
+ }
364
+ else if (codenameLikeId === 'buster') {
365
+ const dest = '/etc/penguins-eggs.d/distros/buster';
366
+ await exec(`cp -r ${buster}/calamares ${dest}/calamares`, echo);
367
+ /**
368
+ * Debian 11 bullseye: eredita tutto da buster
369
+ */
370
+ }
371
+ else if (codenameLikeId === 'bullseye') {
372
+ const dest = '/etc/penguins-eggs.d/distros/bullseye';
373
+ await exec(`cp -r ${buster}/calamares ${dest}/calamares`, echo);
374
+ /**
375
+ * Debian 12 bookworm: eredita tutto da buster
376
+ */
377
+ }
378
+ else if (codenameLikeId === 'bookworm') {
379
+ const dest = '/etc/penguins-eggs.d/distros/bookworm';
380
+ await exec(`cp -r ${buster}/calamares ${dest}/calamares`, echo);
381
+ /**
382
+ * Debian 13 trixie: eredita tutto da buster
383
+ */
384
+ }
385
+ else if (codenameLikeId === 'trixie') {
386
+ const dest = '/etc/penguins-eggs.d/distros/trixie';
387
+ await exec(`cp -r ${buster}/calamares ${dest}/calamares`, echo);
388
+ /***********************************************************************************
389
+ * Devuan
390
+ **********************************************************************************/
391
+ /**
392
+ * Devuan beowulf: eredita tutto da buster
393
+ */
394
+ }
395
+ else if (codenameLikeId === 'beowulf') {
396
+ const dest = '/etc/penguins-eggs.d/distros/beowulf';
397
+ await exec(`cp -r ${buster}/calamares ${dest}/calamares`, echo);
398
+ /**
399
+ * Devuan chimaera: eredita tutto da buster
400
+ */
401
+ }
402
+ else if (codenameLikeId === 'chimaera') {
403
+ const dest = '/etc/penguins-eggs.d/distros/chimaera';
404
+ await exec(`cp -r ${buster}/calamares ${dest}/calamares`, echo);
405
+ /**
406
+ * Devuan daedalus: eredita tutto da buster
407
+ */
408
+ }
409
+ else if (codenameLikeId === 'daedalus') {
410
+ const dest = '/etc/penguins-eggs.d/distros/daedalus';
411
+ await exec(`cp -r ${buster}/calamares ${dest}/calamares`, echo);
412
+ /**
413
+ * Devuan excalibur: eredita tutto da buster
414
+ */
415
+ }
416
+ else if (codenameLikeId === 'excalibur') {
417
+ const dest = '/etc/penguins-eggs.d/distros/excalibur';
418
+ await exec(`cp -r ${buster}/calamares ${dest}/calamares`, echo);
419
+ /***********************************************************************************
420
+ * Fedora
421
+ **********************************************************************************/
422
+ }
423
+ else if (codenameLikeId === 'fedora') {
424
+ const dest = '/etc/penguins-eggs.d/distros/fedora/';
425
+ const fedora = `${rootPen}/conf/distros/fedora/*`;
426
+ await exec(`cp -r ${fedora} ${dest}`, echo);
427
+ /***********************************************************************************
428
+ * openmamba
429
+ **********************************************************************************/
430
+ }
431
+ else if (codenameLikeId === 'openmamba') {
432
+ // eredita solo da openmamba
433
+ const dest = '/etc/penguins-eggs.d/distros/openmamba/';
434
+ const mamba = `${rootPen}/conf/distros/openmamba/*`;
435
+ await exec(`cp -r ${mamba} ${dest}`, echo);
436
+ /***********************************************************************************
437
+ * opensuse
438
+ **********************************************************************************/
439
+ }
440
+ else if (codenameLikeId === 'opensuse') {
441
+ const dest = '/etc/penguins-eggs.d/distros/opensuse/';
442
+ const suse = `${rootPen}/conf/distros/opensuse/*`;
443
+ await exec(`cp -r ${suse} ${dest}`, echo);
444
+ /***********************************************************************************
445
+ * Ubuntu
446
+ **********************************************************************************/
447
+ /**
448
+ * Ubuntu 10.04 bionic: eredita da bionic, focal grub ed isolinux, da buster i seguenti
449
+ */
450
+ }
451
+ else if (codenameLikeId === 'bionic') {
452
+ const dest = '/etc/penguins-eggs.d/distros/bionic';
453
+ const bionic = `${rootPen}/conf/distros/bionic`;
454
+ await exec(`cp -r ${bionic}/* ${dest}`, echo);
455
+ await partialFromBuster(dest, echo);
456
+ /**
457
+ * Ubuntu focal: eredita da noble e buster
458
+ */
459
+ }
460
+ else if (codenameLikeId === 'focal') {
461
+ const dest = '/etc/penguins-eggs.d/distros/focal';
462
+ const noble = `${rootPen}/conf/distros/noble`;
463
+ await exec(`cp -r ${noble}/* ${dest}`, echo);
464
+ await exec(`cp ${noble}/calamares/modules/focal-jammy/* ${dest}/calamares/modules/`, echo);
465
+ await partialFromBuster(dest, echo);
466
+ /**
467
+ * Ubuntu 22.04 jammy: eredita da noble e buster
468
+ */
469
+ }
470
+ else if (codenameLikeId === 'jammy') {
471
+ const dest = '/etc/penguins-eggs.d/distros/jammy';
472
+ const noble = `${rootPen}/conf/distros/noble`;
473
+ await exec(`cp -r ${noble}/* ${dest}`, echo);
474
+ await exec(`cp ${noble}/calamares/modules/focal-jammy/* ${dest}/calamares/modules/`, echo);
475
+ await partialFromBuster(dest, echo);
476
+ /**
477
+ * Ubuntu noble: e la nuova baseline per ubuntu
478
+ *
479
+ */
480
+ }
481
+ else if (this.distro().codenameLikeId === 'noble') {
482
+ const dest = '/etc/penguins-eggs.d/distros/noble';
483
+ const noble = `${rootPen}/conf/distros/noble`;
484
+ await exec(`cp -r ${noble}/* ${dest}`, echo);
485
+ await partialFromBuster(dest, echo);
486
+ /**
487
+ * Ubuntu rhino: eredita da noble e buster
488
+ *
489
+ */
490
+ }
491
+ else if (codenameLikeId === 'devel') {
492
+ const dest = '/etc/penguins-eggs.d/distros/devel';
493
+ const noble = `${rootPen}/conf/distros/noble`;
494
+ await exec(`cp -r ${noble}/* ${dest}`, echo);
495
+ await partialFromBuster(dest, echo);
496
+ /***********************************************************************************
497
+ * voidlinux
498
+ **********************************************************************************/
499
+ }
500
+ else if (codenameLikeId === 'voidlinux') {
501
+ const dest = '/etc/penguins-eggs.d/distros/voidlinux/';
502
+ const voidLinux = `${rootPen}/conf/distros/voidlinux/*`;
503
+ await exec(`cp -r ${voidLinux} ${dest}`, echo);
504
+ }
505
+ }
506
+ /**
507
+ * Controlla se calamares è installabile
508
+ * @returns
509
+ */
510
+ static isCalamaresAvailable() {
511
+ let result = this.distro().isCalamaresAvailable;
512
+ if (process.arch === 'arm' || process.arch === 'arm64') {
513
+ result = false;
514
+ }
515
+ return result;
516
+ }
517
+ /**
518
+ *
519
+ * @returns true se GUI
520
+ */
521
+ static isInstalledGui() {
522
+ return this.isInstalledXorg() || this.isInstalledWayland();
523
+ }
524
+ /**
525
+ * check if it's installed wayland
526
+ * @returns true if wayland
527
+ */
528
+ static isInstalledWayland() {
529
+ let installed = false;
530
+ const familyId = this.distro().familyId;
531
+ if (familyId === 'aldos') {
532
+ if (Aldos.packageIsInstalled('wayland')) {
533
+ installed = true;
534
+ }
535
+ }
536
+ else if (familyId === 'alpine') {
537
+ if (Alpine.packageIsInstalled('xwayland*')) {
538
+ installed = true;
539
+ }
540
+ }
541
+ else if (familyId === 'archlinux') {
542
+ if (Archlinux.packageIsInstalled('xwayland')) {
543
+ installed = true;
544
+ }
545
+ }
546
+ else if (familyId === 'debian') {
547
+ if (Debian.packageIsInstalled('xwayland')) {
548
+ installed = true;
549
+ }
550
+ }
551
+ else if (familyId === 'fedora') {
552
+ if (Fedora.packageIsInstalled('xorg-x11-server-Xwayland*')) {
553
+ installed = true;
554
+ }
555
+ }
556
+ else if (familyId === 'openmamba') {
557
+ if (Openmamba.packageIsInstalled('wayland')) {
558
+ installed = true;
559
+ }
560
+ }
561
+ else if (familyId === 'opensuse') {
562
+ if (Opensuse.packageIsInstalled('wayland')) {
563
+ installed = true;
564
+ }
565
+ }
566
+ else if (familyId === 'voidlinux') {
567
+ if (Voidlinux.packageIsInstalled('wayland')) {
568
+ installed = true;
569
+ }
570
+ }
571
+ return installed;
572
+ }
573
+ /**
574
+ * check if it's installed xorg
575
+ * @returns
576
+ */
577
+ static isInstalledXorg() {
578
+ let installed = false;
579
+ const familyId = this.distro().familyId;
580
+ if (familyId === 'aldos') {
581
+ if (Aldos.packageIsInstalled('xorg-server')) {
582
+ installed = true;
583
+ }
584
+ }
585
+ else if (familyId === 'alpine') {
586
+ if (Alpine.packageIsInstalled('xorg-server')) {
587
+ installed = true;
588
+ }
589
+ }
590
+ else if (familyId === 'archlinux') {
591
+ if (Archlinux.packageIsInstalled('xorg-server-common')) {
592
+ installed = true;
593
+ }
594
+ }
595
+ else if (familyId === 'debian') {
596
+ if (Debian.packageIsInstalled('xserver-xorg-core')) {
597
+ installed = true;
598
+ }
599
+ }
600
+ else if (familyId === 'fedora') {
601
+ if (Fedora.packageIsInstalled('xorg-x11-server-Xorg.x86_64')) {
602
+ installed = true;
603
+ }
604
+ }
605
+ else if (familyId === 'openmamba') {
606
+ if (Openmamba.packageIsInstalled('xorg-server')) {
607
+ installed = true;
608
+ }
609
+ }
610
+ else if (familyId === 'opensuse') {
611
+ if (Opensuse.packageIsInstalled('xorg-x11-server')) {
612
+ installed = true;
613
+ }
614
+ }
615
+ return installed;
616
+ }
617
+ /**
618
+ * Check if the system is just CLI
619
+ */
620
+ static isRunningCli() {
621
+ return !this.isRunningGui();
622
+ }
623
+ /**
624
+ * Check if the system is GUI able
625
+ */
626
+ static isRunningGui() {
627
+ return this.isRunningXorg() || this.isRunningWayland();
628
+ }
629
+ /**
630
+ * Constrolla se è operante wayland
631
+ */
632
+ static isRunningWayland() {
633
+ return process.env.XDG_SESSION_TYPE === 'wayland';
634
+ }
635
+ /**
636
+ * controlla se è operante xserver-xorg-core
637
+ */
638
+ static isRunningXorg() {
639
+ return process.env.XDG_SESSION_TYPE === 'x11';
640
+ }
641
+ /**
642
+ * Check se la macchina ha grub adatto ad efi
643
+ * Forse conviene spostarlo in pacman
644
+ */
645
+ static isUefi() {
646
+ let isUefi = false;
647
+ if (this.distro().familyId === 'debian') {
648
+ if (Utils.uefiArch() !== 'i386' && this.packageIsInstalled('grub-efi-' + Utils.uefiArch() + '-bin')) {
649
+ isUefi = true;
650
+ }
651
+ }
652
+ else {
653
+ isUefi = true;
654
+ }
655
+ return isUefi;
656
+ }
657
+ /**
658
+ * Installa manPage
659
+ */
660
+ static async manPageInstall(verbose = false) {
661
+ const manPageSrc = path.resolve(__dirname, '../../manpages/doc/man/eggs.roll.gz');
662
+ if (fs.existsSync(manPageSrc)) {
663
+ const man1Dir = '/usr/share/man/man1/';
664
+ if (!fs.existsSync(man1Dir)) {
665
+ exec(`mkdir ${man1Dir} -p`);
666
+ }
667
+ const manPageDest = man1Dir + 'eggs.1.gz';
668
+ exec(`cp ${manPageSrc} ${manPageDest}`);
669
+ if (shx.exec('which mandb', { silent: true }).stdout.trim() !== '') {
670
+ await exec('mandb > /dev/null');
671
+ if (verbose) {
672
+ console.log('manPage eggs installed...');
673
+ }
674
+ }
675
+ }
676
+ }
677
+ /**
678
+ *
679
+ * @param debPackage
680
+ * @returns
681
+ */
682
+ static async packageAptLast(debPackage) {
683
+ let version = '';
684
+ if (this.distro().familyId === 'debian') {
685
+ version = await Debian.packageAptLast(debPackage);
686
+ }
687
+ return version;
688
+ }
689
+ /**
690
+ * Install the package packageName
691
+ * @param packageName {string} Pacchetto Debian da installare
692
+ * @returns {boolean} True if success
693
+ */
694
+ static async packageInstall(packageName) {
695
+ let retVal = false;
696
+ const familyId = this.distro().familyId;
697
+ if (familyId === 'aldos') {
698
+ retVal = await Aldos.packageInstall(packageName);
699
+ }
700
+ else if (familyId === 'alpine') {
701
+ retVal = await Alpine.packageInstall(packageName);
702
+ }
703
+ else if (familyId === 'archlinux') {
704
+ retVal = await Archlinux.packageInstall(packageName);
705
+ }
706
+ else if (familyId === 'debian') {
707
+ retVal = await Debian.packageInstall(packageName);
708
+ }
709
+ else if (familyId === 'fedora') {
710
+ retVal = await Fedora.packageInstall(packageName);
711
+ }
712
+ else if (familyId === 'openmamba') {
713
+ retVal = await Openmamba.packageInstall(packageName);
714
+ }
715
+ else if (familyId === 'opensuse') {
716
+ retVal = await Opensuse.packageInstall(packageName);
717
+ }
718
+ else if (familyId === 'voidlinux') {
719
+ retVal = await Voidlinux.packageInstall(packageName);
720
+ }
721
+ return retVal;
722
+ }
723
+ /**
724
+ * restuisce VERO se il pacchetto è installato
725
+ * @param debPackage
726
+ */
727
+ static packageIsInstalled(packageName) {
728
+ let installed = false;
729
+ const familyId = this.distro().familyId;
730
+ if (familyId === 'aldos') {
731
+ installed = Aldos.packageIsInstalled(packageName);
732
+ }
733
+ else if (familyId === 'alpine') {
734
+ installed = Alpine.packageIsInstalled(packageName);
735
+ }
736
+ else if (familyId === 'archlinux') {
737
+ installed = Archlinux.packageIsInstalled(packageName);
738
+ }
739
+ else if (familyId === 'debian') {
740
+ installed = Debian.packageIsInstalled(packageName);
741
+ }
742
+ else if (familyId === 'fedora') {
743
+ installed = Fedora.packageIsInstalled(packageName);
744
+ }
745
+ else if (familyId === 'openmamba') {
746
+ installed = Openmamba.packageIsInstalled(packageName);
747
+ }
748
+ else if (familyId === 'opensuse') {
749
+ installed = Opensuse.packageIsInstalled(packageName);
750
+ }
751
+ else if (familyId === 'voidlinux') {
752
+ installed = Voidlinux.packageIsInstalled(packageName);
753
+ }
754
+ return installed;
755
+ }
756
+ static async packageNpmLast(packageNpm = 'penguins-eggs') {
757
+ return shx.exec('npm show ' + packageNpm + ' version', { silent: true }).stdout.trim();
758
+ }
759
+ }
760
+ /**
761
+ *
762
+ * @param dest
763
+ * @param echo
764
+ */
765
+ async function partialFromBuster(dest, echo) {
766
+ const rootPen = Utils.rootPenguin();
767
+ const buster = `${rootPen}/conf/distros/buster`;
768
+ await exec(`cp -r ${buster}/calamares/calamares-modules/cleanup ${dest}/calamares/calamares-modules/cleanup`, echo);
769
+ await exec(`cp -r ${buster}/calamares/calamares-modules/sources-yolk ${dest}/calamares/calamares-modules/sources-yolk`, echo);
770
+ await exec(`cp -r ${buster}/calamares/calamares-modules/sources-yolk-undo ${dest}/calamares/calamares-modules/sources-yolk-undo`, echo);
771
+ await exec(`cp -r ${buster}/calamares/modules/displaymanager.yml ${dest}/calamares/modules/displaymanager.yml`, echo);
772
+ await exec(`cp -r ${buster}/calamares/modules/packages.yml ${dest}/calamares/modules/packages.yml`, echo);
773
+ await exec(`cp -r ${buster}/calamares/modules/removeuser.yml ${dest}/calamares/modules/removeuser.yml`, echo);
774
+ await exec(`cp -r ${buster}/calamares/modules/unpackfs.yml ${dest}/calamares/modules/unpackfs.yml`, echo);
775
+ }