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,287 @@
1
+ /**
2
+ * ./src/classes/keyboards.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 fs from 'node:fs';
9
+ import { exec } from '../lib/utils.js';
10
+ // XkbModel - name of the model of your keyboard type
11
+ // XkbLayout - layout(s) you intend to use
12
+ // XkbVariant - variant(s) of the layout you intend to use
13
+ // XkbOptions - extra xkb configuration options
14
+ /**
15
+ * /usr/share/X11/xkb/rules/xorg.lst
16
+ */
17
+ export default class Keyboard {
18
+ layouts = [];
19
+ models = [];
20
+ options = [];
21
+ variants = [];
22
+ constructor() {
23
+ const xorg = '/usr/share/X11/xkb/rules/xorg.lst';
24
+ if (fs.existsSync(xorg)) {
25
+ const lines = fs.readFileSync(xorg, 'utf8').split('\n');
26
+ const lenght = lines.length;
27
+ let isModel = false;
28
+ let isLayout = false;
29
+ let isVariant = false;
30
+ let isOption = false;
31
+ for (let i = 0; i < lenght; i++) {
32
+ if (lines[i].slice(0, 1) === '!') {
33
+ switch (lines[i]) {
34
+ case '! model': {
35
+ isModel = true;
36
+ isLayout = false;
37
+ isVariant = false;
38
+ isOption = false;
39
+ break;
40
+ }
41
+ case '! layout': {
42
+ isModel = false;
43
+ isLayout = true;
44
+ isVariant = false;
45
+ isOption = false;
46
+ break;
47
+ }
48
+ case '! variant': {
49
+ isModel = false;
50
+ isLayout = false;
51
+ isVariant = true;
52
+ isOption = false;
53
+ break;
54
+ }
55
+ case '! option': {
56
+ isModel = false;
57
+ isLayout = false;
58
+ isVariant = false;
59
+ isOption = true;
60
+ break;
61
+ }
62
+ // No default
63
+ }
64
+ i++;
65
+ }
66
+ if (isModel) {
67
+ this.models.push(lines[i].trim());
68
+ }
69
+ else if (isLayout) {
70
+ this.layouts.push(lines[i].trim());
71
+ }
72
+ else if (isVariant) {
73
+ this.variants.push(lines[i].trim());
74
+ }
75
+ else if (isOption) {
76
+ this.options.push(lines[i].trim());
77
+ }
78
+ }
79
+ }
80
+ else {
81
+ this.models.push('pc105');
82
+ this.layouts = [
83
+ 'af',
84
+ 'al',
85
+ 'am',
86
+ 'ara',
87
+ 'at',
88
+ 'az',
89
+ 'ba',
90
+ 'bd',
91
+ 'be',
92
+ 'bg',
93
+ 'br',
94
+ 'brai',
95
+ 'by',
96
+ 'ca',
97
+ 'ch',
98
+ 'cm',
99
+ 'cn',
100
+ 'cz',
101
+ 'de',
102
+ 'dk',
103
+ 'dz',
104
+ 'ee',
105
+ 'epo',
106
+ 'fr',
107
+ 'gb',
108
+ 'ge',
109
+ 'gh',
110
+ 'gr',
111
+ 'hr',
112
+ 'hu',
113
+ 'id',
114
+ 'ie',
115
+ 'il',
116
+ 'in',
117
+ 'iq',
118
+ 'ir',
119
+ 'is',
120
+ 'it',
121
+ 'jp',
122
+ 'ke',
123
+ 'kg',
124
+ 'kr',
125
+ 'kz',
126
+ 'la',
127
+ 'latam',
128
+ 'lk',
129
+ 'lt',
130
+ 'lv',
131
+ 'ma',
132
+ 'md',
133
+ 'me',
134
+ 'mk',
135
+ 'ml',
136
+ 'mm',
137
+ 'mt',
138
+ 'my',
139
+ 'ng',
140
+ 'nl',
141
+ 'no',
142
+ 'nz',
143
+ 'ph',
144
+ 'pk',
145
+ 'pl',
146
+ 'pt',
147
+ 'ro',
148
+ 'rs',
149
+ 'ru',
150
+ 'se',
151
+ 'si',
152
+ 'sk',
153
+ 'sy',
154
+ 'th',
155
+ 'tj',
156
+ 'tw',
157
+ 'ua',
158
+ 'us',
159
+ 'uz',
160
+ 'vn'
161
+ ];
162
+ this.variants.push('none');
163
+ this.options.push('none');
164
+ }
165
+ }
166
+ /**
167
+ * XKBLAYOUT='us'
168
+ */
169
+ async getLayout() {
170
+ const file = '/etc/default/keyboard';
171
+ const cmd = 'grep XKBLAYOUT < /etc/default/keyboard | cut -f2 -d= | cut -f2 "-d\\""';
172
+ let keyboardLayout = 'us';
173
+ if (fs.existsSync(file)) {
174
+ const result = await exec(cmd, { capture: true, echo: false, ignore: false });
175
+ if (result.code === 0) {
176
+ keyboardLayout = result.data.trim();
177
+ }
178
+ }
179
+ return keyboardLayout;
180
+ }
181
+ /**
182
+ * XKBLAYOUT=[]
183
+ */
184
+ getLayouts() {
185
+ const oLayouts = [];
186
+ for (const layout of this.layouts) {
187
+ const l = {};
188
+ l.code = layout.slice(0, 15).trim();
189
+ l.description = layout.slice(16);
190
+ oLayouts.push(l);
191
+ }
192
+ return oLayouts;
193
+ }
194
+ /**
195
+ * XKBMODEL='pc105'
196
+ */
197
+ async getModel() {
198
+ const file = '/etc/default/keyboard';
199
+ const cmd = `grep XKBMODEL < ${file} |cut -f2 -d= | cut -f2 "-d\\""`;
200
+ let keyboardModel = 'pc105';
201
+ if (fs.existsSync(file)) {
202
+ const result = await exec(cmd, { capture: true, echo: false, ignore: false });
203
+ if (result.code === 0) {
204
+ keyboardModel = result.data.trim();
205
+ }
206
+ }
207
+ return keyboardModel;
208
+ }
209
+ /**
210
+ * XKBMODEL[]
211
+ */
212
+ getModels() {
213
+ // 0123456789012345678901234567890123456789
214
+ // pc101 Generic 101-key PC
215
+ const oModels = [];
216
+ for (const model of this.models) {
217
+ const m = {};
218
+ m.code = model.slice(0, 15).trim();
219
+ m.description = model.slice(16);
220
+ oModels.push(m);
221
+ }
222
+ return oModels;
223
+ }
224
+ /**
225
+ * XKBOPTIONS=''
226
+ */
227
+ async getOption() {
228
+ const file = '/etc/default/keyboard';
229
+ const cmd = `grep XKBOPTIONS < ${file} | cut -f2 -d= | cut -f2 "-d\\""`;
230
+ let keyboardOption = '';
231
+ if (fs.existsSync(file)) {
232
+ const result = await exec(cmd, { capture: true, echo: false, ignore: false });
233
+ if (result.code === 0) {
234
+ keyboardOption = result.data.trim();
235
+ }
236
+ }
237
+ return keyboardOption;
238
+ }
239
+ /**
240
+ * XKBOPTIONS[]
241
+ */
242
+ getOptions() {
243
+ // 0123456789012345678901234567890123456789
244
+ // grp:switch Right Alt (while pressed)
245
+ const aoOptions = [];
246
+ for (const option of this.options) {
247
+ const o = {};
248
+ o.code = option.slice(0, 15).trim();
249
+ o.description = option.slice(21);
250
+ aoOptions.push(o);
251
+ }
252
+ return aoOptions;
253
+ }
254
+ /**
255
+ * XKBVARIANT=''
256
+ */
257
+ async getVariant() {
258
+ const file = '/etc/default/keyboard';
259
+ const cmd = `grep XKBVARIANT < ${file} | cut -f2 -d=|cut -f2 "-d\\""`;
260
+ let keyboardVariant = '';
261
+ if (fs.existsSync(file)) {
262
+ const result = await exec(cmd, { capture: true, echo: false, ignore: false });
263
+ if (result.code === 0) {
264
+ keyboardVariant = result.data.trim();
265
+ }
266
+ }
267
+ return keyboardVariant;
268
+ }
269
+ /**
270
+ * IXkbVariant[]
271
+ */
272
+ getVariants(layout) {
273
+ // 0123456789012345678901234567890123456789
274
+ // chr us: Cherokee
275
+ const aoVariants = [];
276
+ for (const variant of this.variants) {
277
+ const v = {};
278
+ v.code = variant.slice(0, 15).trim();
279
+ v.lang = variant.substring(16, variant.indexOf(':')).trim();
280
+ v.description = variant.slice(Math.max(0, variant.indexOf(':')));
281
+ if (v.lang === layout) {
282
+ aoVariants.push(v);
283
+ }
284
+ }
285
+ return aoVariants;
286
+ }
287
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * ./src/classes/locales.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 class Locales {
9
+ /**
10
+ *
11
+ */
12
+ getDefault(): Promise<string>;
13
+ /**
14
+ * getSupported
15
+ */
16
+ getSupported(): Promise<string[]>;
17
+ /**
18
+ * getEnabled
19
+ */
20
+ getEnabled(): Promise<string[]>;
21
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * ./src/classes/locales.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 fs from 'node:fs';
9
+ import { exec } from '../lib/utils.js';
10
+ import Distro from './distro.js';
11
+ import Utils from './utils.js';
12
+ export default class Locales {
13
+ /**
14
+ *
15
+ */
16
+ async getDefault() {
17
+ const cmd = `locale|grep LANG|cut -f2 -d=`;
18
+ let defaultLanguage = 'en_US.UTF-8';
19
+ const result = await exec(cmd, { capture: true, echo: false, ignore: false });
20
+ if (result.code === 0) {
21
+ defaultLanguage = result.data.trim();
22
+ }
23
+ return defaultLanguage;
24
+ }
25
+ /**
26
+ * getSupported
27
+ */
28
+ async getSupported() {
29
+ const distro = new Distro();
30
+ let supporteds = [];
31
+ switch (distro.familyId) {
32
+ case 'alpine': {
33
+ supporteds = await this.getEnabled();
34
+ break;
35
+ }
36
+ case 'archlinux': {
37
+ supporteds = await this.getEnabled();
38
+ break;
39
+ }
40
+ case 'debian': {
41
+ supporteds = fs.readFileSync('/usr/share/i18n/SUPPORTED', 'utf8').split('\n');
42
+ break;
43
+ }
44
+ case 'fedora': {
45
+ supporteds = await this.getEnabled();
46
+ break;
47
+ }
48
+ case 'opensuse': {
49
+ supporteds = await this.getEnabled();
50
+ break;
51
+ }
52
+ }
53
+ const elements = [];
54
+ for (const elem of supporteds) {
55
+ elements.push(elem.replace(' UTF-8', ''));
56
+ }
57
+ return elements;
58
+ }
59
+ /**
60
+ * getEnabled
61
+ */
62
+ async getEnabled() {
63
+ let cmd = "locale -a";
64
+ if (Utils.isSystemd()) {
65
+ cmd = "localectl list-locales";
66
+ }
67
+ const enabledLocales = [];
68
+ const result = await exec(cmd, { capture: true, echo: false, ignore: false });
69
+ if (result.code === 0) {
70
+ const lines = result.data.split('\n');
71
+ for (const line of lines) {
72
+ enabledLocales.push(line.trim());
73
+ }
74
+ }
75
+ return enabledLocales;
76
+ }
77
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * ./src/classes/network.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 { Netmask } from 'netmask';
9
+ /**
10
+ *
11
+ */
12
+ export default class Network {
13
+ address: string;
14
+ cidr: string;
15
+ family: string;
16
+ internal: boolean;
17
+ mac: string;
18
+ netmask: string;
19
+ o: Netmask;
20
+ /**
21
+ *
22
+ */
23
+ constructor();
24
+ base(): string;
25
+ bitmask(): void;
26
+ broadcast(): string;
27
+ contains(): (address: string | Netmask | number) => boolean;
28
+ first(): string;
29
+ forEach(): (cb: (ip: string, long: number, index: number) => void) => void;
30
+ hostmask(): string;
31
+ last(): string;
32
+ maskLong(): number;
33
+ netLong(): number;
34
+ next(): (count?: number) => Netmask;
35
+ size(): number;
36
+ toString(): () => string;
37
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * ./src/classes/network.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 { Netmask } from 'netmask';
9
+ import os from 'node:os';
10
+ /**
11
+ *
12
+ */
13
+ export default class Network {
14
+ address = '';
15
+ cidr = '';
16
+ family = '';
17
+ internal = false;
18
+ mac = '';
19
+ netmask = '';
20
+ o = {};
21
+ /**
22
+ *
23
+ */
24
+ constructor() {
25
+ const interfaces = os.networkInterfaces();
26
+ const address = '';
27
+ if (interfaces !== undefined) {
28
+ for (const devName in interfaces) {
29
+ const iface = interfaces[devName];
30
+ if (iface !== undefined) {
31
+ for (const alias of iface) {
32
+ if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) {
33
+ // take just the first!
34
+ if (this.address === '') {
35
+ this.address = alias.address;
36
+ }
37
+ if (this.cidr === '' && alias.cidr !== null) {
38
+ this.cidr = alias.cidr;
39
+ }
40
+ if (this.family === '') {
41
+ this.family = alias.family;
42
+ }
43
+ if (this.mac === '') {
44
+ this.mac = alias.mac;
45
+ }
46
+ if (this.netmask === '') {
47
+ this.netmask = alias.netmask;
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+ /**
54
+ * valori da netmask
55
+ */
56
+ this.o = new Netmask(this.cidr);
57
+ }
58
+ }
59
+ base() {
60
+ return this.o.base;
61
+ }
62
+ bitmask() {
63
+ this.o.bitmask;
64
+ }
65
+ broadcast() {
66
+ return this.o.broadcast;
67
+ }
68
+ contains() {
69
+ return this.o.contains;
70
+ }
71
+ first() {
72
+ return this.o.first;
73
+ }
74
+ forEach() {
75
+ return this.o.forEach;
76
+ }
77
+ hostmask() {
78
+ return this.o.hostmask;
79
+ }
80
+ last() {
81
+ return this.o.last;
82
+ }
83
+ maskLong() {
84
+ return this.o.maskLong;
85
+ }
86
+ netLong() {
87
+ return this.o.netLong;
88
+ }
89
+ next() {
90
+ return this.o.next;
91
+ }
92
+ size() {
93
+ return this.o.size;
94
+ }
95
+ toString() {
96
+ return this.o.toString;
97
+ }
98
+ }