penguins-eggs 10.0.52 → 10.0.53

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 (337) hide show
  1. package/.oclif.manifest.json +2 -1500
  2. package/README.md +0 -760
  3. package/conf/derivatives.yaml +2 -0
  4. package/mkinitfs/initramfs-init.in +18 -7
  5. package/package.json +3 -4
  6. package/dist/classes/bleach.d.ts +0 -32
  7. package/dist/classes/bleach.js +0 -135
  8. package/dist/classes/cfs.d.ts +0 -17
  9. package/dist/classes/cfs.js +0 -39
  10. package/dist/classes/cli-autologin.d.ts +0 -52
  11. package/dist/classes/cli-autologin.js +0 -247
  12. package/dist/classes/compressors.d.ts +0 -54
  13. package/dist/classes/compressors.js +0 -109
  14. package/dist/classes/daddy.d.ts +0 -26
  15. package/dist/classes/daddy.js +0 -167
  16. package/dist/classes/distro.d.ts +0 -32
  17. package/dist/classes/distro.js +0 -337
  18. package/dist/classes/diversions.d.ts +0 -38
  19. package/dist/classes/diversions.js +0 -107
  20. package/dist/classes/incubation/branding.d.ts +0 -17
  21. package/dist/classes/incubation/branding.js +0 -85
  22. package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +0 -11
  23. package/dist/classes/incubation/fisherman-helper/displaymanager.js +0 -40
  24. package/dist/classes/incubation/fisherman-helper/packages.d.ts +0 -20
  25. package/dist/classes/incubation/fisherman-helper/packages.js +0 -72
  26. package/dist/classes/incubation/fisherman-helper/settings.d.ts +0 -15
  27. package/dist/classes/incubation/fisherman-helper/settings.js +0 -83
  28. package/dist/classes/incubation/fisherman.d.ts +0 -70
  29. package/dist/classes/incubation/fisherman.js +0 -263
  30. package/dist/classes/incubation/incubator.d/alpine.d.ts +0 -32
  31. package/dist/classes/incubation/incubator.d/alpine.js +0 -80
  32. package/dist/classes/incubation/incubator.d/bionic.d.ts +0 -32
  33. package/dist/classes/incubation/incubator.d/bionic.js +0 -83
  34. package/dist/classes/incubation/incubator.d/buster.d.ts +0 -32
  35. package/dist/classes/incubation/incubator.d/buster.js +0 -85
  36. package/dist/classes/incubation/incubator.d/jessie.d.ts +0 -31
  37. package/dist/classes/incubation/incubator.d/jessie.js +0 -44
  38. package/dist/classes/incubation/incubator.d/noble.d.ts +0 -32
  39. package/dist/classes/incubation/incubator.d/noble.js +0 -85
  40. package/dist/classes/incubation/incubator.d/openmamba.d.ts +0 -32
  41. package/dist/classes/incubation/incubator.d/openmamba.js +0 -81
  42. package/dist/classes/incubation/incubator.d/opensuse.d.ts +0 -32
  43. package/dist/classes/incubation/incubator.d/opensuse.js +0 -81
  44. package/dist/classes/incubation/incubator.d/rolling.d.ts +0 -32
  45. package/dist/classes/incubation/incubator.d/rolling.js +0 -80
  46. package/dist/classes/incubation/incubator.d.ts +0 -44
  47. package/dist/classes/incubation/incubator.js +0 -382
  48. package/dist/classes/incubation/installer.d.ts +0 -13
  49. package/dist/classes/incubation/installer.js +0 -52
  50. package/dist/classes/keyboards.d.ts +0 -50
  51. package/dist/classes/keyboards.js +0 -287
  52. package/dist/classes/locales.d.ts +0 -21
  53. package/dist/classes/locales.js +0 -77
  54. package/dist/classes/network.d.ts +0 -37
  55. package/dist/classes/network.js +0 -98
  56. package/dist/classes/ovary.d.ts +0 -198
  57. package/dist/classes/ovary.js +0 -1835
  58. package/dist/classes/pacman.d/aldos.d.ts +0 -47
  59. package/dist/classes/pacman.d/aldos.js +0 -93
  60. package/dist/classes/pacman.d/alpine.d.ts +0 -51
  61. package/dist/classes/pacman.d/alpine.js +0 -155
  62. package/dist/classes/pacman.d/archlinux.d.ts +0 -57
  63. package/dist/classes/pacman.d/archlinux.js +0 -130
  64. package/dist/classes/pacman.d/debian.d.ts +0 -61
  65. package/dist/classes/pacman.d/debian.js +0 -131
  66. package/dist/classes/pacman.d/fedora.d.ts +0 -48
  67. package/dist/classes/pacman.d/fedora.js +0 -94
  68. package/dist/classes/pacman.d/openmamba.d.ts +0 -47
  69. package/dist/classes/pacman.d/openmamba.js +0 -93
  70. package/dist/classes/pacman.d/opensuse.d.ts +0 -48
  71. package/dist/classes/pacman.d/opensuse.js +0 -95
  72. package/dist/classes/pacman.d/voidlinux.d.ts +0 -48
  73. package/dist/classes/pacman.d/voidlinux.js +0 -84
  74. package/dist/classes/pacman.d.ts +0 -139
  75. package/dist/classes/pacman.js +0 -756
  76. package/dist/classes/pve-live.d.ts +0 -17
  77. package/dist/classes/pve-live.js +0 -52
  78. package/dist/classes/pxe.d.ts +0 -74
  79. package/dist/classes/pxe.js +0 -410
  80. package/dist/classes/settings.d.ts +0 -53
  81. package/dist/classes/settings.js +0 -185
  82. package/dist/classes/sources_list.d.ts +0 -28
  83. package/dist/classes/sources_list.js +0 -89
  84. package/dist/classes/systemctl.d.ts +0 -47
  85. package/dist/classes/systemctl.js +0 -86
  86. package/dist/classes/tailor.d.ts +0 -50
  87. package/dist/classes/tailor.js +0 -526
  88. package/dist/classes/tools.d.ts +0 -26
  89. package/dist/classes/tools.js +0 -50
  90. package/dist/classes/users.d.ts +0 -28
  91. package/dist/classes/users.js +0 -143
  92. package/dist/classes/utils.d.ts +0 -319
  93. package/dist/classes/utils.js +0 -987
  94. package/dist/classes/xdg.d.ts +0 -45
  95. package/dist/classes/xdg.js +0 -337
  96. package/dist/classes/yolk.d.ts +0 -33
  97. package/dist/classes/yolk.js +0 -114
  98. package/dist/commands/adapt.d.ts +0 -17
  99. package/dist/commands/adapt.js +0 -33
  100. package/dist/commands/analyze.d.ts +0 -26
  101. package/dist/commands/analyze.js +0 -95
  102. package/dist/commands/calamares.d.ts +0 -29
  103. package/dist/commands/calamares.js +0 -112
  104. package/dist/commands/config.d.ts +0 -35
  105. package/dist/commands/config.js +0 -120
  106. package/dist/commands/cuckoo.d.ts +0 -16
  107. package/dist/commands/cuckoo.js +0 -62
  108. package/dist/commands/dad.d.ts +0 -20
  109. package/dist/commands/dad.js +0 -46
  110. package/dist/commands/export/iso.d.ts +0 -19
  111. package/dist/commands/export/iso.js +0 -55
  112. package/dist/commands/export/pkg.d.ts +0 -45
  113. package/dist/commands/export/pkg.js +0 -183
  114. package/dist/commands/install.d.ts +0 -37
  115. package/dist/commands/install.js +0 -88
  116. package/dist/commands/kill.d.ts +0 -24
  117. package/dist/commands/kill.js +0 -50
  118. package/dist/commands/love.d.ts +0 -20
  119. package/dist/commands/love.js +0 -59
  120. package/dist/commands/mom.d.ts +0 -16
  121. package/dist/commands/mom.js +0 -30
  122. package/dist/commands/produce.d.ts +0 -34
  123. package/dist/commands/produce.js +0 -200
  124. package/dist/commands/status.d.ts +0 -23
  125. package/dist/commands/status.js +0 -31
  126. package/dist/commands/syncfrom.d.ts +0 -45
  127. package/dist/commands/syncfrom.js +0 -152
  128. package/dist/commands/syncto.d.ts +0 -40
  129. package/dist/commands/syncto.js +0 -175
  130. package/dist/commands/tools/clean.d.ts +0 -18
  131. package/dist/commands/tools/clean.js +0 -37
  132. package/dist/commands/tools/ppa.d.ts +0 -26
  133. package/dist/commands/tools/ppa.js +0 -138
  134. package/dist/commands/tools/skel.d.ts +0 -18
  135. package/dist/commands/tools/skel.js +0 -44
  136. package/dist/commands/tools/stat.d.ts +0 -31
  137. package/dist/commands/tools/stat.js +0 -70
  138. package/dist/commands/tools/yolk.d.ts +0 -24
  139. package/dist/commands/tools/yolk.js +0 -45
  140. package/dist/commands/update.d.ts +0 -51
  141. package/dist/commands/update.js +0 -220
  142. package/dist/commands/wardrobe/get.d.ts +0 -23
  143. package/dist/commands/wardrobe/get.js +0 -52
  144. package/dist/commands/wardrobe/list.d.ts +0 -24
  145. package/dist/commands/wardrobe/list.js +0 -125
  146. package/dist/commands/wardrobe/show.d.ts +0 -25
  147. package/dist/commands/wardrobe/show.js +0 -97
  148. package/dist/commands/wardrobe/wear.d.ts +0 -26
  149. package/dist/commands/wardrobe/wear.js +0 -84
  150. package/dist/components/finished.d.ts +0 -16
  151. package/dist/components/finished.js +0 -56
  152. package/dist/components/information.d.ts +0 -8
  153. package/dist/components/information.js +0 -154
  154. package/dist/components/install.d.ts +0 -15
  155. package/dist/components/install.js +0 -60
  156. package/dist/components/keyboard.d.ts +0 -16
  157. package/dist/components/keyboard.js +0 -54
  158. package/dist/components/location.d.ts +0 -16
  159. package/dist/components/location.js +0 -59
  160. package/dist/components/network.d.ts +0 -19
  161. package/dist/components/network.js +0 -65
  162. package/dist/components/partitions.d.ts +0 -16
  163. package/dist/components/partitions.js +0 -73
  164. package/dist/components/steps.d.ts +0 -13
  165. package/dist/components/steps.js +0 -148
  166. package/dist/components/summary.d.ts +0 -24
  167. package/dist/components/summary.js +0 -81
  168. package/dist/components/title.d.ts +0 -11
  169. package/dist/components/title.js +0 -35
  170. package/dist/components/users.d.ts +0 -24
  171. package/dist/components/users.js +0 -80
  172. package/dist/components/welcome.d.ts +0 -13
  173. package/dist/components/welcome.js +0 -63
  174. package/dist/index-old.d.ts +0 -8
  175. package/dist/index-old.js +0 -8
  176. package/dist/index.d.ts +0 -54
  177. package/dist/index.js +0 -147
  178. package/dist/interfaces/i-addons.d.ts +0 -12
  179. package/dist/interfaces/i-addons.js +0 -8
  180. package/dist/interfaces/i-analyze.d.ts +0 -17
  181. package/dist/interfaces/i-analyze.js +0 -17
  182. package/dist/interfaces/i-app.d.ts +0 -14
  183. package/dist/interfaces/i-app.js +0 -8
  184. package/dist/interfaces/i-branding.d.ts +0 -36
  185. package/dist/interfaces/i-branding.js +0 -8
  186. package/dist/interfaces/i-calamares-displaymanager.d.ts +0 -17
  187. package/dist/interfaces/i-calamares-displaymanager.js +0 -1
  188. package/dist/interfaces/i-calamares-finished.d.ts +0 -12
  189. package/dist/interfaces/i-calamares-finished.js +0 -1
  190. package/dist/interfaces/i-calamares-packages.d.ts +0 -28
  191. package/dist/interfaces/i-calamares-packages.js +0 -1
  192. package/dist/interfaces/i-calamares-partition.d.ts +0 -40
  193. package/dist/interfaces/i-calamares-partition.js +0 -1
  194. package/dist/interfaces/i-config-tools.d.ts +0 -15
  195. package/dist/interfaces/i-config-tools.js +0 -8
  196. package/dist/interfaces/i-devices.d.ts +0 -20
  197. package/dist/interfaces/i-devices.js +0 -8
  198. package/dist/interfaces/i-distro.d.ts +0 -23
  199. package/dist/interfaces/i-distro.js +0 -8
  200. package/dist/interfaces/i-drive-list.d.ts +0 -33
  201. package/dist/interfaces/i-drive-list.js +0 -8
  202. package/dist/interfaces/i-eggs-config.d.ts +0 -32
  203. package/dist/interfaces/i-eggs-config.js +0 -8
  204. package/dist/interfaces/i-excludes.d.ts +0 -14
  205. package/dist/interfaces/i-excludes.js +0 -8
  206. package/dist/interfaces/i-exec.d.ts +0 -11
  207. package/dist/interfaces/i-exec.js +0 -8
  208. package/dist/interfaces/i-initrd.d.ts +0 -13
  209. package/dist/interfaces/i-initrd.js +0 -8
  210. package/dist/interfaces/i-install.d.ts +0 -16
  211. package/dist/interfaces/i-install.js +0 -8
  212. package/dist/interfaces/i-installer.d.ts +0 -17
  213. package/dist/interfaces/i-installer.js +0 -8
  214. package/dist/interfaces/i-krill-config.d.ts +0 -33
  215. package/dist/interfaces/i-krill-config.js +0 -8
  216. package/dist/interfaces/i-krill.d.ts +0 -42
  217. package/dist/interfaces/i-krill.js +0 -8
  218. package/dist/interfaces/i-materia.d.ts +0 -36
  219. package/dist/interfaces/i-materia.js +0 -8
  220. package/dist/interfaces/i-net.d.ts +0 -16
  221. package/dist/interfaces/i-net.js +0 -8
  222. package/dist/interfaces/i-packages.d.ts +0 -16
  223. package/dist/interfaces/i-packages.js +0 -8
  224. package/dist/interfaces/i-partitions.d.ts +0 -16
  225. package/dist/interfaces/i-partitions.js +0 -8
  226. package/dist/interfaces/i-pxe.d.ts +0 -45
  227. package/dist/interfaces/i-pxe.js +0 -1
  228. package/dist/interfaces/i-remix.d.ts +0 -21
  229. package/dist/interfaces/i-remix.js +0 -8
  230. package/dist/interfaces/i-settings.d.ts +0 -33
  231. package/dist/interfaces/i-settings.js +0 -8
  232. package/dist/interfaces/i-user.d.ts +0 -14
  233. package/dist/interfaces/i-user.js +0 -8
  234. package/dist/interfaces/i-workdir.d.ts +0 -14
  235. package/dist/interfaces/i-workdir.js +0 -8
  236. package/dist/interfaces/i-xkb-model.d.ts +0 -24
  237. package/dist/interfaces/i-xkb-model.js +0 -8
  238. package/dist/interfaces/index.d.ts +0 -25
  239. package/dist/interfaces/index.js +0 -8
  240. package/dist/krill/modules/add-user.d.ts +0 -20
  241. package/dist/krill/modules/add-user.js +0 -48
  242. package/dist/krill/modules/bootloader-config.d.ts +0 -14
  243. package/dist/krill/modules/bootloader-config.js +0 -148
  244. package/dist/krill/modules/bootloader.d.ts +0 -14
  245. package/dist/krill/modules/bootloader.js +0 -130
  246. package/dist/krill/modules/change-password.d.ts +0 -15
  247. package/dist/krill/modules/change-password.js +0 -18
  248. package/dist/krill/modules/del-live-user.d.ts +0 -14
  249. package/dist/krill/modules/del-live-user.js +0 -39
  250. package/dist/krill/modules/fstab.d.ts +0 -14
  251. package/dist/krill/modules/fstab.js +0 -123
  252. package/dist/krill/modules/grubcfg.d.ts +0 -17
  253. package/dist/krill/modules/grubcfg.js +0 -29
  254. package/dist/krill/modules/hostname.d.ts +0 -13
  255. package/dist/krill/modules/hostname.js +0 -50
  256. package/dist/krill/modules/initramfs-cfg.d.ts +0 -14
  257. package/dist/krill/modules/initramfs-cfg.js +0 -22
  258. package/dist/krill/modules/initramfs.d.ts +0 -13
  259. package/dist/krill/modules/initramfs.js +0 -54
  260. package/dist/krill/modules/locale-cfg.d.ts +0 -10
  261. package/dist/krill/modules/locale-cfg.js +0 -58
  262. package/dist/krill/modules/locale.d.ts +0 -13
  263. package/dist/krill/modules/locale.js +0 -91
  264. package/dist/krill/modules/m-keyboard.d.ts +0 -14
  265. package/dist/krill/modules/m-keyboard.js +0 -58
  266. package/dist/krill/modules/machine-id.d.ts +0 -15
  267. package/dist/krill/modules/machine-id.js +0 -33
  268. package/dist/krill/modules/mkfs.d.ts +0 -15
  269. package/dist/krill/modules/mkfs.js +0 -50
  270. package/dist/krill/modules/mount-fs.d.ts +0 -17
  271. package/dist/krill/modules/mount-fs.js +0 -62
  272. package/dist/krill/modules/mount-vfs.d.ts +0 -17
  273. package/dist/krill/modules/mount-vfs.js +0 -40
  274. package/dist/krill/modules/network-cfg.d.ts +0 -19
  275. package/dist/krill/modules/network-cfg.js +0 -64
  276. package/dist/krill/modules/packages.d.ts +0 -14
  277. package/dist/krill/modules/packages.js +0 -111
  278. package/dist/krill/modules/partition.d.ts +0 -20
  279. package/dist/krill/modules/partition.js +0 -324
  280. package/dist/krill/modules/remove-installer-link.d.ts +0 -13
  281. package/dist/krill/modules/remove-installer-link.js +0 -35
  282. package/dist/krill/modules/umount.d.ts +0 -14
  283. package/dist/krill/modules/umount.js +0 -27
  284. package/dist/krill/modules/unpackfs.d.ts +0 -13
  285. package/dist/krill/modules/unpackfs.js +0 -20
  286. package/dist/krill/prepare.d.ts +0 -78
  287. package/dist/krill/prepare.js +0 -624
  288. package/dist/krill/sequence.d.ts +0 -154
  289. package/dist/krill/sequence.js +0 -650
  290. package/dist/lib/get_address.d.ts +0 -8
  291. package/dist/lib/get_address.js +0 -23
  292. package/dist/lib/get_dns.d.ts +0 -8
  293. package/dist/lib/get_dns.js +0 -23
  294. package/dist/lib/get_domain.d.ts +0 -8
  295. package/dist/lib/get_domain.js +0 -23
  296. package/dist/lib/get_gateway.d.ts +0 -8
  297. package/dist/lib/get_gateway.js +0 -23
  298. package/dist/lib/get_hostname.d.ts +0 -8
  299. package/dist/lib/get_hostname.js +0 -23
  300. package/dist/lib/get_netmask.d.ts +0 -8
  301. package/dist/lib/get_netmask.js +0 -23
  302. package/dist/lib/get_password.d.ts +0 -8
  303. package/dist/lib/get_password.js +0 -36
  304. package/dist/lib/get_userfullname.d.ts +0 -8
  305. package/dist/lib/get_userfullname.js +0 -23
  306. package/dist/lib/get_username.d.ts +0 -8
  307. package/dist/lib/get_username.js +0 -23
  308. package/dist/lib/kill_me_softly.d.ts +0 -11
  309. package/dist/lib/kill_me_softly.js +0 -61
  310. package/dist/lib/select_address_type.d.ts +0 -8
  311. package/dist/lib/select_address_type.js +0 -24
  312. package/dist/lib/select_filesystem_type.d.ts +0 -8
  313. package/dist/lib/select_filesystem_type.js +0 -46
  314. package/dist/lib/select_installation_device.d.ts +0 -8
  315. package/dist/lib/select_installation_device.js +0 -30
  316. package/dist/lib/select_installation_mode.d.ts +0 -8
  317. package/dist/lib/select_installation_mode.js +0 -24
  318. package/dist/lib/select_interface.d.ts +0 -8
  319. package/dist/lib/select_interface.js +0 -24
  320. package/dist/lib/select_keyboard_layout.d.ts +0 -11
  321. package/dist/lib/select_keyboard_layout.js +0 -36
  322. package/dist/lib/select_keyboard_model.d.ts +0 -11
  323. package/dist/lib/select_keyboard_model.js +0 -34
  324. package/dist/lib/select_keyboard_option.d.ts +0 -11
  325. package/dist/lib/select_keyboard_option.js +0 -34
  326. package/dist/lib/select_keyboard_variant.d.ts +0 -11
  327. package/dist/lib/select_keyboard_variant.js +0 -35
  328. package/dist/lib/select_languages.d.ts +0 -8
  329. package/dist/lib/select_languages.js +0 -28
  330. package/dist/lib/select_regions.d.ts +0 -8
  331. package/dist/lib/select_regions.js +0 -24
  332. package/dist/lib/select_user_swap_choice.d.ts +0 -8
  333. package/dist/lib/select_user_swap_choice.js +0 -34
  334. package/dist/lib/select_zones.d.ts +0 -8
  335. package/dist/lib/select_zones.js +0 -518
  336. package/dist/lib/utils.d.ts +0 -34
  337. package/dist/lib/utils.js +0 -79
@@ -1,526 +0,0 @@
1
- /**
2
- * ./src/classes/tailor.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 chalk from 'chalk';
9
- import fs from 'node:fs';
10
- import yaml from 'js-yaml';
11
- import path from 'node:path';
12
- import { exec } from '../lib/utils.js';
13
- import Distro from './distro.js';
14
- import Pacman from './pacman.js';
15
- import SourcesList from './sources_list.js';
16
- import Utils from './utils.js';
17
- /**
18
- *
19
- */
20
- export default class Tailor {
21
- materials = {};
22
- category = 'costume';
23
- costume = '';
24
- echo = {};
25
- toNull = ' > /dev/null 2>&1';
26
- verbose = false;
27
- wardrobe = '';
28
- log = '';
29
- /**
30
- * @param wardrobe
31
- * @param costume
32
- */
33
- constructor(costume, category = 'costume') {
34
- this.costume = costume;
35
- this.wardrobe = path.dirname(path.dirname(costume));
36
- this.log = path.dirname(this.wardrobe) + "/wardrobe.log";
37
- this.category = category;
38
- }
39
- /**
40
- *
41
- */
42
- async prepare(verbose = true, no_accessories = false, no_firmwares = false) {
43
- if (verbose) {
44
- this.verbose = true;
45
- this.toNull = '';
46
- }
47
- this.echo = Utils.setEcho(verbose);
48
- Utils.warning(`preparing ${this.costume}`);
49
- if (!fs.existsSync(this.log)) {
50
- fs.writeFileSync(this.log, "# eggs wardrobe wear\n\n");
51
- }
52
- fs.appendFileSync(this.log, `## ${this.costume}\n`);
53
- fs.appendFileSync(this.log, `Packages not found:\n`);
54
- /**
55
- * check curl presence
56
- */
57
- if (!Pacman.packageIsInstalled('curl')) {
58
- Utils.pressKeyToExit('In this tailoring shop we use curl. sudo apt update | apt install curl');
59
- process.exit();
60
- }
61
- // Analyze distro
62
- const distro = new Distro();
63
- let tailorList = '';
64
- switch (distro.distroLike) {
65
- case 'Debian': {
66
- tailorList = `${this.costume}/debian.yml`;
67
- if (!fs.existsSync(tailorList)) {
68
- tailorList = `${this.costume}/devuan.yml`;
69
- if (!fs.existsSync(tailorList)) {
70
- tailorList = `${this.costume}/ubuntu.yml`;
71
- if (!fs.existsSync(tailorList)) {
72
- console.log(`no costume definition found compatible Debian`);
73
- process.exit();
74
- }
75
- }
76
- }
77
- break;
78
- }
79
- case 'Devuan': {
80
- tailorList = `${this.costume}/devuan.yml`;
81
- if (!fs.existsSync(tailorList)) {
82
- tailorList = `${this.costume}/debian.yml`;
83
- if (!fs.existsSync(tailorList)) {
84
- tailorList = `${this.costume}/ubuntu.yml`;
85
- if (!fs.existsSync(tailorList)) {
86
- console.log(`no costume definition found compatible Devuan`);
87
- process.exit();
88
- }
89
- }
90
- }
91
- break;
92
- }
93
- case 'Ubuntu': {
94
- tailorList = `${this.costume}/ubuntu.yml`;
95
- if (!fs.existsSync(tailorList)) {
96
- tailorList = `${this.costume}/debian.yml`;
97
- console.log(`trying ` + tailorList);
98
- if (!fs.existsSync(tailorList)) {
99
- tailorList = `${this.costume}/devuan.yml`;
100
- console.log(`trying ` + tailorList);
101
- if (!fs.existsSync(tailorList)) {
102
- console.log(`no costume definition found compatible Ubuntu`);
103
- process.exit();
104
- }
105
- }
106
- }
107
- break;
108
- }
109
- case 'Arch': {
110
- tailorList = `${this.costume}/arch.yml`;
111
- if (!fs.existsSync(tailorList)) {
112
- tailorList = `${this.costume}/debian.yml`;
113
- if (!fs.existsSync(tailorList)) {
114
- console.log(`no costume definition found compatible Arch`);
115
- process.exit();
116
- }
117
- }
118
- break;
119
- }
120
- case 'Alpine': {
121
- tailorList = `${this.costume}/alpine.yml`;
122
- if (!fs.existsSync(tailorList)) {
123
- tailorList = `${this.costume}/debian.yml`;
124
- if (!fs.existsSync(tailorList)) {
125
- console.log(`no costume definition found compatible Alpine`);
126
- process.exit();
127
- }
128
- }
129
- break;
130
- }
131
- case 'AlmaLinux':
132
- case 'RockyLinux':
133
- case 'Fedora': {
134
- tailorList = `${this.costume}/fedora.yml`;
135
- if (!fs.existsSync(tailorList)) {
136
- tailorList = `${this.costume}/debian.yml`;
137
- if (!fs.existsSync(tailorList)) {
138
- console.log(`no costume definition found compatible Fedora`);
139
- process.exit();
140
- }
141
- }
142
- break;
143
- }
144
- } // end analyze
145
- /**
146
- * find materials
147
- */
148
- if (fs.existsSync(tailorList)) {
149
- this.materials = yaml.load(fs.readFileSync(tailorList, 'utf8'));
150
- }
151
- else {
152
- switch (this.category) {
153
- case 'costume': {
154
- Utils.titles(`${this.category}: ${this.costume}`);
155
- console.log("Tailor's list " + chalk.cyan(tailorList) + ' is not found \non your wardrobe ' + chalk.cyan(this.wardrobe) + '.\n');
156
- console.log('Costume will not be installed, operations will abort.\n');
157
- Utils.pressKeyToExit();
158
- process.exit();
159
- break;
160
- }
161
- case 'accessory': {
162
- Utils.titles(`${this.category}: ${this.costume}`);
163
- console.log("Tailor's list " + chalk.cyan(tailorList) + ' is not found \non your wardrobe ' + chalk.cyan(this.wardrobe) + '.\n');
164
- console.log('vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv');
165
- console.log('Accessory will not be installed,');
166
- console.log('operations will continue.');
167
- console.log('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^');
168
- sleep(3000);
169
- return;
170
- }
171
- }
172
- }
173
- /**
174
- * sequence
175
- */
176
- const sources_list = new SourcesList();
177
- let step = '';
178
- if (this.materials.sequence !== undefined) {
179
- step = 'analyzing sequence';
180
- Utils.warning(step);
181
- /**
182
- * sequence/repositories
183
- */
184
- if (this.materials.sequence.repositories !== undefined) {
185
- if (distro.familyId === 'debian') {
186
- /**
187
- * sequence/repositories/sources_list
188
- */
189
- // evito di fallire se sources_list non è presente
190
- if (this.materials.sequence.repositories.sources_list !== undefined) {
191
- step = 'analyzing repositories';
192
- Utils.warning(step);
193
- if (distro.distroLike === 'Debian') {
194
- await sources_list.components(this.materials.sequence.repositories.sources_list);
195
- }
196
- }
197
- /**
198
- * sequence/repositories/sources_list_d
199
- */
200
- if (this.materials.sequence.repositories.sources_list_d !== undefined && this.materials.sequence.repositories.sources_list_d[0] !== null) {
201
- step = 'adding repositories to /etc/apt/sources_list_d';
202
- Utils.warning(step);
203
- for (const cmd of this.materials.sequence.repositories.sources_list_d) {
204
- try {
205
- // repeat 3 times if fail curl or others commands
206
- for (let i = 0; i < 2; i++) {
207
- const result = await exec(cmd, this.echo);
208
- if (result.code === 0) {
209
- break;
210
- }
211
- }
212
- }
213
- catch (error) {
214
- await Utils.pressKeyToExit(JSON.stringify(error));
215
- }
216
- }
217
- }
218
- }
219
- /**
220
- * sequence/repositories/update
221
- */
222
- if (this.materials.sequence.repositories.update === undefined) {
223
- console.log('repositiories, and repositories.update MUST be defined on sequence');
224
- process.exit();
225
- }
226
- step = 'repositories update';
227
- Utils.warning(step);
228
- if (this.materials.sequence.repositories.update) {
229
- switch (distro.familyId) {
230
- case 'debian': {
231
- await exec('apt-get update', Utils.setEcho(false));
232
- break;
233
- }
234
- case 'archlinux': {
235
- await exec('pacman -Sy', Utils.setEcho(false));
236
- break;
237
- }
238
- case 'alpine': {
239
- await exec('apk update', Utils.setEcho(false));
240
- break;
241
- }
242
- case 'fedora': {
243
- await exec('dnf update', Utils.setEcho(false));
244
- break;
245
- }
246
- }
247
- }
248
- /**
249
- * sequence/repositories/upgrade
250
- */
251
- if (this.materials.sequence.repositories.upgrade !== undefined) {
252
- step = 'repositories upgrade';
253
- Utils.warning(step);
254
- if (this.materials.sequence.repositories.upgrade) {
255
- switch (distro.familyId) {
256
- case 'debian': {
257
- await exec('apt-get full-upgrade', Utils.setEcho(false));
258
- break;
259
- }
260
- case 'archlinux': {
261
- await exec('pacman -Su', Utils.setEcho(false));
262
- break;
263
- }
264
- case 'alpine': {
265
- await exec('apk upgrade', Utils.setEcho(false));
266
- break;
267
- }
268
- case 'fedora': {
269
- await exec('dnf upgrade', Utils.setEcho(false));
270
- break;
271
- }
272
- }
273
- } // upgrade true
274
- } // undefined upgrade
275
- } // end sequence/repositories
276
- /**
277
- * sequence/cmds
278
- */
279
- if (this.materials.sequence.cmds !== undefined && Array.isArray(this.materials.sequence.cmds)) {
280
- step = 'sequence commands';
281
- Utils.warning(step);
282
- for (const cmd of this.materials.sequence.cmds) {
283
- if (fs.existsSync(`${this.costume}/${cmd}`)) {
284
- await exec(`${this.costume}/${cmd} ${this.materials.name}`, Utils.setEcho(true));
285
- }
286
- else {
287
- // exec cmd real env
288
- await exec(`${cmd} ${this.materials.name}`, Utils.setEcho(true));
289
- }
290
- }
291
- }
292
- /**
293
- * install packages
294
- */
295
- if (this.materials.sequence.packages !== undefined) {
296
- const packages = await this.packagesExists(this.materials.sequence.packages);
297
- if (packages.length > 1) {
298
- switch (distro.familyId) {
299
- case 'debian': {
300
- await this.packagesInstall(packages);
301
- break;
302
- }
303
- case 'archlinux': {
304
- await this.packagesInstall(this.materials.sequence.packages, 'packages', `pacman -Sy --noconfirm`);
305
- break;
306
- }
307
- case 'alpine': {
308
- await this.packagesInstall(this.materials.sequence.packages, 'packages', `apk add`);
309
- break;
310
- }
311
- case 'fedora': {
312
- await this.packagesInstall(this.materials.sequence.packages, 'packages', `dnf install -y`);
313
- break;
314
- }
315
- }
316
- }
317
- }
318
- /**
319
- * sequence/packages_python
320
- */
321
- if (this.materials.sequence.packages_python !== undefined && Array.isArray(this.materials.sequence.packages_python)) {
322
- let cmd = 'pip install ';
323
- let pip = '';
324
- for (const elem of this.materials.sequence.packages_python) {
325
- cmd += ` ${elem}`;
326
- pip += `, ${elem}`;
327
- }
328
- step = `installing python packages pip ${pip.slice(2)}`;
329
- Utils.warning(step);
330
- await exec(cmd, this.echo);
331
- }
332
- /**
333
- * sequence/accessories
334
- */
335
- if (!no_accessories) {
336
- if (this.materials.sequence.accessories !== undefined && Array.isArray(this.materials.sequence.accessories)) {
337
- step = 'wearing accessories';
338
- for (const elem of this.materials.sequence.accessories) {
339
- if ((elem === 'firmwares' || elem === './firmwares') && no_firmwares) {
340
- continue;
341
- }
342
- if (elem.slice(0, 2) === './') {
343
- // local accessory
344
- const tailor = new Tailor(`${this.costume}/${elem.slice(2)}`, 'accessory');
345
- await tailor.prepare(verbose);
346
- }
347
- else {
348
- // global accessory
349
- const tailor = new Tailor(`${this.wardrobe}/accessories/${elem}`, 'accessory');
350
- await tailor.prepare(verbose);
351
- }
352
- }
353
- }
354
- } // no-accessories
355
- } // end sequence
356
- /**
357
- * customize
358
- */
359
- if (this.materials.finalize !== undefined) {
360
- /**
361
- * finalize/customize
362
- */
363
- if (this.materials.finalize.customize && fs.existsSync(`/${this.costume}/sysroot`)) {
364
- step = `finalize/customize: copying ${this.costume}/sysroot/ to /`;
365
- Utils.warning(step);
366
- let cmd = `rsync -avx ${this.costume}/sysroot/* / ${this.toNull}`;
367
- await exec(cmd, this.echo);
368
- // chown
369
- cmd = `chown root:root /etc/sudoers.d /etc/skel -R`;
370
- await exec(cmd, this.echo);
371
- /**
372
- * Copyng skel in /home/user
373
- */
374
- if (fs.existsSync(`${this.costume}/sysroot/etc/skel`)) {
375
- const user = await Utils.getPrimaryUser();
376
- step = `finalize/customize: copying skel in /home/${user}/`;
377
- Utils.warning(step);
378
- cmd = `rsync -avx ${this.costume}/sysroot/etc/skel/.config /home/${user}/ ${this.toNull}`;
379
- await exec(cmd, this.echo);
380
- await exec(`chown ${user}:${user} /home/${user}/ -R`);
381
- }
382
- }
383
- /**
384
- * finalize/cmds
385
- */
386
- if (this.materials.finalize.cmds !== undefined && Array.isArray(this.materials.finalize.cmds)) {
387
- step = 'finalize/commands';
388
- Utils.warning(step);
389
- for (const cmd of this.materials.finalize.cmds) {
390
- if (fs.existsSync(`${this.costume}/${cmd}`)) {
391
- await exec(`${this.costume}/${cmd} ${this.materials.name}`, Utils.setEcho(true));
392
- }
393
- else {
394
- // exec cmd real env
395
- await exec(`${cmd}`, Utils.setEcho(true));
396
- }
397
- }
398
- }
399
- }
400
- // show log
401
- if (fs.existsSync(this.log)) {
402
- await exec(`cat ${this.log}`);
403
- }
404
- /**
405
- * reboot
406
- */
407
- if (this.materials.reboot) {
408
- Utils.warning('Reboot');
409
- await Utils.pressKeyToExit('system need to reboot', true);
410
- await exec('reboot');
411
- }
412
- else {
413
- console.log(`You look good with: ${this.materials.name}`);
414
- }
415
- }
416
- /**
417
- *
418
- * @param packages
419
- * @param verbose
420
- * @param section
421
- * @returns
422
- */
423
- async packagesExists(wanted) {
424
- Utils.warning(`checking packages exists ${this.costume}`);
425
- wanted.sort();
426
- const distro = new Distro();
427
- let cmd = "";
428
- if (distro.familyId === "debian") {
429
- cmd = `apt-cache --no-generate pkgnames`;
430
- }
431
- else if (distro.familyId === "archlinux") {
432
- cmd = `pacman -S --list | awk '{print $2}'`;
433
- }
434
- else if (distro.familyId === "alpine") {
435
- cmd = `apk search | awk -F'-[0-9]' '{print $1}' | sort -u`;
436
- }
437
- else if (distro.familyId === 'fedora') {
438
- cmd = `dnf list --available | awk '{print $1}' | sed 's/\.[^.]*$//'`;
439
- }
440
- //available = (await exec(cmd, { capture: true, echo: false, ignore: false })).data.split('\n')
441
- let available = [];
442
- available = (await exec(cmd, { capture: true, echo: false, ignore: false })).data.split('\n');
443
- available.sort();
444
- let exists = [];
445
- let not_exists = [];
446
- for (const elem of wanted) {
447
- if (available.includes(elem)) {
448
- exists.push(elem);
449
- }
450
- else {
451
- not_exists.push(elem);
452
- fs.appendFileSync(this.log, `- ${elem}\n`);
453
- }
454
- }
455
- if (not_exists.length > 0) {
456
- console.log(`${this.materials.name}, ${not_exists.length} following packages was not found:`);
457
- for (const elem of not_exists) {
458
- console.log(`-${elem}`);
459
- }
460
- console.log();
461
- console.log("Wait 3 seconds");
462
- await sleep(3000);
463
- }
464
- return exists;
465
- }
466
- /**
467
- * - check if every package if installed
468
- * - if find any packages to install, install it
469
- */
470
- async packagesInstall(packages, comment = 'packages', cmd = 'apt-get install -yqq ') {
471
- Utils.warning(`installing existing packages ${this.costume}`);
472
- if (packages[0] !== null) {
473
- const elements = [];
474
- let strElements = '';
475
- for (const elem of packages) {
476
- elements.push(elem);
477
- cmd += ` ${elem}`;
478
- strElements += `, ${elem}`;
479
- }
480
- if (elements.length > 0) {
481
- let step = `installing ${comment}: `;
482
- if (!this.verbose) {
483
- step += strElements.slice(2);
484
- }
485
- /**
486
- * prova 3 volte
487
- */
488
- const limit = 3;
489
- for (let tempts = 1; tempts < limit; tempts++) {
490
- Utils.titles(step);
491
- Utils.warning(`tempts ${tempts} of ${limit}`);
492
- if (await this.tryCheckSuccess(cmd, this.echo)) {
493
- break;
494
- }
495
- }
496
- }
497
- }
498
- }
499
- /**
500
- *
501
- * @param cmd
502
- * @param echo
503
- * @returns
504
- */
505
- async tryCheckSuccess(cmd, echo) {
506
- let success = false;
507
- try {
508
- await exec(cmd, echo);
509
- success = true;
510
- }
511
- catch {
512
- success = false;
513
- }
514
- return success;
515
- }
516
- }
517
- /**
518
- *
519
- * @param ms
520
- * @returns
521
- */
522
- function sleep(ms = 0) {
523
- return new Promise((resolve) => {
524
- setTimeout(resolve, ms);
525
- });
526
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * ./src/classes/tools.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
- interface IEggsConfigTools {
9
- localPathIso: string;
10
- remoteHost: string;
11
- remotePathPackages: string;
12
- remotePathIso: string;
13
- remoteUser: string;
14
- }
15
- /**
16
- * Utils: general porpourse utils
17
- * @remarks all the utilities
18
- */
19
- export default class Tools {
20
- config: IEggsConfigTools;
21
- snapshot_dir: string;
22
- snapshot_name: string;
23
- tools_yaml: string;
24
- loadSettings(): Promise<boolean>;
25
- }
26
- export {};
@@ -1,50 +0,0 @@
1
- /**
2
- * ./src/classes/tools.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 yaml from 'js-yaml';
9
- import fs from 'node:fs';
10
- import Settings from './settings.js';
11
- import Utils from './utils.js';
12
- /**
13
- * Utils: general porpourse utils
14
- * @remarks all the utilities
15
- */
16
- export default class Tools {
17
- config = {};
18
- snapshot_dir = '';
19
- snapshot_name = '';
20
- tools_yaml = '/etc/penguins-eggs.d/tools.yaml';
21
- /*
22
- * Load configuration from /etc/penguins-eggs.yaml
23
- * @returns {boolean} Success
24
- */
25
- async loadSettings() {
26
- let foundSettings = false;
27
- if (fs.existsSync(this.tools_yaml)) {
28
- foundSettings = true;
29
- const loaded = yaml.load(fs.readFileSync(this.tools_yaml, 'utf8'));
30
- this.config.remoteHost = loaded.remoteHost;
31
- this.config.remoteUser = loaded.remoteUser;
32
- this.config.remotePathPackages = loaded.remotePathPackages;
33
- this.config.remotePathIso = loaded.remotePathIso;
34
- this.config.localPathIso = loaded.localPathIso;
35
- /**
36
- * da eggs
37
- */
38
- const settings = new Settings();
39
- settings.load();
40
- this.snapshot_dir = settings.config.snapshot_dir;
41
- const prefix = settings.config.snapshot_prefix;
42
- this.snapshot_name = prefix + settings.config.snapshot_basename + '_' + Utils.uefiArch();
43
- }
44
- else {
45
- console.log(`Can't find: ${this.tools_yaml}`);
46
- process.exit(1);
47
- }
48
- return foundSettings;
49
- }
50
- }
@@ -1,28 +0,0 @@
1
- /**
2
- * ./src/classes/users.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
- *
10
- */
11
- export default class Users {
12
- gecos: string;
13
- gid: string;
14
- hasHome: boolean;
15
- home: string;
16
- login: string;
17
- password: string;
18
- saveIt: boolean;
19
- shell: string;
20
- size: number;
21
- uid: string;
22
- constructor(login: string, password: string, uid: string, gid: string, gecos: string, home: string, shell: string);
23
- /**
24
- * getSize
25
- * @param verbose
26
- */
27
- getValues(): Promise<void>;
28
- }