penguins-eggs 10.0.60 → 10.1.1

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 (138) hide show
  1. package/.oclif.manifest.json +62 -1
  2. package/README.md +145 -75
  3. package/addons/eggs/theme/calamares/modules/{_users.yml → users.yml} +3 -3
  4. package/addons/eggs/theme/livecd/grub.main.full.cfg +1 -1
  5. package/addons/eggs/theme/livecd/grub.main.simple.cfg +1 -1
  6. package/conf/derivatives.yaml +4 -3
  7. package/conf/derivatives_fedora.yaml +6 -0
  8. package/conf/distros/alpine/calamares/modules/users.yml +3 -3
  9. package/conf/distros/bionic/calamares/calamares-modules/grubcfg/grubcfg.yml +1 -1
  10. package/conf/distros/bionic/calamares/modules/users.yml +3 -3
  11. package/conf/distros/buster/calamares/modules/users.yml +4 -3
  12. package/conf/distros/fedora/calamares/modules/users.yml +3 -3
  13. package/conf/distros/noble/calamares/modules/focal-jammy/users.yml +3 -3
  14. package/conf/distros/noble/calamares/modules/users.yml +1 -0
  15. package/conf/distros/opensuse/calamares/modules/users.yml +3 -3
  16. package/conf/distros/rolling/calamares/modules/users.yml +3 -3
  17. package/conf/eggs.yaml +1 -1
  18. package/conf/love.yaml +4 -4
  19. package/dist/classes/compressors.js +1 -1
  20. package/dist/classes/distro.d.ts +27 -3
  21. package/dist/classes/distro.js +361 -289
  22. package/dist/classes/ovary.d/bind-live-fs.js +22 -30
  23. package/dist/classes/ovary.d/edit-live-fs.d.ts +1 -0
  24. package/dist/classes/ovary.d/edit-live-fs.js +9 -13
  25. package/dist/classes/ovary.d/fertilization.js +6 -1
  26. package/dist/classes/ovary.d/initrd.js +11 -15
  27. package/dist/classes/ovary.d/kernel-copy.js +2 -16
  28. package/dist/classes/ovary.d/make-efi.js +8 -5
  29. package/dist/classes/ovary.d/make-squashfs.d.ts +1 -1
  30. package/dist/classes/ovary.d/make-squashfs.js +17 -24
  31. package/dist/classes/ovary.d/merged.d.ts +9 -13
  32. package/dist/classes/ovary.d/merged.js +38 -48
  33. package/dist/classes/ovary.d/produce.d.ts +1 -1
  34. package/dist/classes/ovary.d/produce.js +38 -32
  35. package/dist/classes/ovary.d/syslinux.js +4 -4
  36. package/dist/classes/ovary.d/user-create-live.js +12 -5
  37. package/dist/classes/ovary.d.ts +8 -3
  38. package/dist/classes/ovary.js +8 -3
  39. package/dist/classes/pacman.d/archlinux.js +1 -5
  40. package/dist/classes/pacman.js +2 -1
  41. package/dist/classes/systemctl.d.ts +1 -1
  42. package/dist/classes/systemctl.js +1 -1
  43. package/dist/classes/tailor.js +2 -1
  44. package/dist/classes/utils.d/architecture.d.ts +41 -0
  45. package/dist/classes/utils.d/architecture.js +87 -0
  46. package/dist/classes/utils.d/console-output.d.ts +26 -0
  47. package/dist/classes/utils.d/console-output.js +46 -0
  48. package/dist/classes/utils.d/filesystem.d.ts +53 -0
  49. package/dist/classes/utils.d/filesystem.js +152 -0
  50. package/dist/classes/utils.d/formatters.d.ts +32 -0
  51. package/dist/classes/utils.d/formatters.js +64 -0
  52. package/dist/classes/utils.d/kernel.d.ts +83 -0
  53. package/dist/classes/utils.d/kernel.js +288 -0
  54. package/dist/classes/utils.d/network.d.ts +43 -0
  55. package/dist/classes/utils.d/network.js +133 -0
  56. package/dist/classes/utils.d/package-info.d.ts +55 -0
  57. package/dist/classes/utils.d/package-info.js +137 -0
  58. package/dist/classes/utils.d/snapshot.d.ts +44 -0
  59. package/dist/classes/utils.d/snapshot.js +102 -0
  60. package/dist/classes/utils.d/system.d.ts +63 -0
  61. package/dist/classes/utils.d/system.js +200 -0
  62. package/dist/classes/utils.d/user-interaction.d.ts +39 -0
  63. package/dist/classes/utils.d/user-interaction.js +104 -0
  64. package/dist/classes/utils.d.ts +90 -322
  65. package/dist/classes/utils.js +105 -1013
  66. package/dist/commands/dad.d.ts +1 -0
  67. package/dist/commands/dad.js +1 -0
  68. package/dist/commands/export/pkg.js +6 -6
  69. package/dist/commands/export/tarballs.js +11 -16
  70. package/dist/commands/kill.js +1 -1
  71. package/dist/commands/love.d.ts +1 -0
  72. package/dist/commands/love.js +21 -7
  73. package/dist/commands/pods.d.ts +22 -0
  74. package/dist/commands/pods.js +92 -0
  75. package/dist/commands/produce.d.ts +1 -0
  76. package/dist/commands/produce.js +21 -1
  77. package/dist/commands/update.js +2 -2
  78. package/dist/index.d.ts +6 -52
  79. package/dist/index.js +6 -145
  80. package/dist/krill/classes/krill_enums.d.ts +14 -1
  81. package/dist/krill/classes/krill_enums.js +16 -1
  82. package/dist/krill/classes/prepare.d/partitions.js +3 -3
  83. package/dist/krill/classes/prepare.d.ts +46 -21
  84. package/dist/krill/classes/prepare.js +187 -187
  85. package/dist/krill/classes/sequence.d/add_user.js +21 -3
  86. package/dist/krill/classes/sequence.d/partition.js +2 -2
  87. package/dist/krill/classes/sequence.d.ts +18 -21
  88. package/dist/krill/classes/sequence.js +156 -423
  89. package/dist/krill/components/information.js +13 -7
  90. package/dist/{krill/lib → lib}/kill_me_softly.js +2 -2
  91. package/dist/penguins-eggs_10.1.1-0_amd64.deb +0 -0
  92. package/dist/penguins-eggs_10.1.1-0_amd64.deb.sha256 +1 -0
  93. package/package.json +32 -27
  94. package/perrisbrewery/scripts/postinst +98 -0
  95. package/perrisbrewery/scripts/postrm +82 -0
  96. package/perrisbrewery/scripts/preinst +40 -0
  97. package/perrisbrewery/scripts/prerm +47 -0
  98. package/perrisbrewery/template/control.template +17 -0
  99. package/perrisbrewery/template/dependencies-bionic.yaml +33 -0
  100. package/perrisbrewery/template/dependencies.yaml +37 -0
  101. package/perrisbrewery/template/man.template.md +110 -0
  102. package/pods/README.md +14 -0
  103. package/pods/almalinux.sh +10 -0
  104. package/pods/archlinux.sh +10 -0
  105. package/pods/ci/README.md +5 -0
  106. package/pods/ci/kernel-overlay-install.sh +114 -0
  107. package/pods/ci/minimal/almalinux-container2host.sh +165 -0
  108. package/pods/ci/minimal/archlinux-container2host.sh +125 -0
  109. package/pods/ci/minimal/debian-container2host.sh +173 -0
  110. package/pods/ci/minimal/fedora-container2host.sh +170 -0
  111. package/pods/ci/minimal/manjaro-container2host.sh +123 -0
  112. package/pods/ci/minimal/opensuse-container2host.sh +143 -0
  113. package/pods/ci/penguins-eggs-execute.sh +22 -0
  114. package/pods/ci/penguins-eggs-install.sh +115 -0
  115. package/pods/ci/run +34 -0
  116. package/pods/ci/run-on-almalinux.sh +50 -0
  117. package/pods/ci/run-on-archlinux.sh +64 -0
  118. package/pods/ci/run-on-debian.sh +51 -0
  119. package/pods/ci/run-on-devuan.sh +48 -0
  120. package/pods/ci/run-on-fedora.sh +51 -0
  121. package/pods/ci/run-on-manjaro.sh +61 -0
  122. package/pods/ci/run-on-opensuse.sh +58 -0
  123. package/pods/ci/run-on-rockylinux.sh +51 -0
  124. package/pods/ci/run-on-ubuntu.sh +52 -0
  125. package/pods/debian.sh +23 -0
  126. package/pods/devuan.sh +26 -0
  127. package/pods/fedora.sh +12 -0
  128. package/pods/lmde.sh +22 -0
  129. package/pods/manjaro.sh +10 -0
  130. package/pods/opensuse.sh +12 -0
  131. package/pods/podman.command.sh +85 -0
  132. package/pods/rocky.sh +12 -0
  133. package/pods/run-build-packages-debs.sh +45 -0
  134. package/pods/run-create-debs.sh +23 -0
  135. package/pods/ubuntu.sh +24 -0
  136. package/scripts/_eggs +14 -5
  137. package/scripts/eggs.bash +5 -4
  138. /package/dist/{krill/lib → lib}/kill_me_softly.d.ts +0 -0
@@ -36,16 +36,50 @@ const __dirname = path.dirname(new URL(import.meta.url).pathname);
36
36
  * @param unsecure
37
37
  * @param verbose
38
38
  */
39
- export async function produce(clone = false, cryptedclone = false, scriptOnly = false, yolkRenew = false, release = false, myAddons, myLinks, excludes, nointeractive = false, noicons = false, unsecure = false, verbose = false) {
39
+ export async function produce(kernel = '', clone = false, cryptedclone = false, scriptOnly = false, yolkRenew = false, release = false, myAddons, myLinks, excludes, nointeractive = false, noicons = false, unsecure = false, verbose = false) {
40
40
  this.verbose = verbose;
41
41
  this.echo = Utils.setEcho(verbose);
42
42
  if (this.verbose) {
43
43
  this.toNull = ' > /dev/null 2>&1';
44
44
  }
45
+ this.kernel = kernel;
45
46
  this.clone = clone;
46
47
  this.cryptedclone = cryptedclone;
47
48
  const luksName = 'luks-volume';
48
49
  const luksFile = `/tmp/${luksName}`;
50
+ /**
51
+ * define kernel
52
+ */
53
+ if (this.kernel === '') {
54
+ if (this.familyId === 'alpine') {
55
+ // to do
56
+ }
57
+ else if (this.familyId === 'archlinux') {
58
+ const moduleDirs = fs.readdirSync('/usr/lib/modules');
59
+ this.kernel = moduleDirs[0];
60
+ /**
61
+ * no need more
62
+ */
63
+ if (Diversions.isManjaroBased(this.distroId)) {
64
+ // this.kernel += '-MANJARO'
65
+ }
66
+ }
67
+ else { // debian, fedora, openmamba, opensuse, voidlinux
68
+ let vmlinuz = path.basename(Utils.vmlinuz());
69
+ this.kernel = vmlinuz.substring(vmlinuz.indexOf('-') + 1);
70
+ }
71
+ }
72
+ /**
73
+ * define this.vmlinuz
74
+ */
75
+ this.vmlinuz = Utils.vmlinuz();
76
+ /**
77
+ * define this.initrd
78
+ */
79
+ this.initrd = Utils.initrdImg(this.kernel);
80
+ /**
81
+ * yolk
82
+ */
49
83
  if (this.familyId === 'debian' && Utils.uefiArch() === 'amd64') {
50
84
  const yolk = new Repo();
51
85
  if (!yolk.exists()) {
@@ -69,7 +103,7 @@ export async function produce(clone = false, cryptedclone = false, scriptOnly =
69
103
  }
70
104
  else {
71
105
  await this.liveCreateStructure();
72
- // Carica calamares sono se le icone sono accettate
106
+ // Carica calamares solo se le icone sono accettate
73
107
  if (!noicons && // se VOGLIO le icone
74
108
  !nointeractive &&
75
109
  this.settings.distro.isCalamaresAvailable &&
@@ -86,29 +120,10 @@ export async function produce(clone = false, cryptedclone = false, scriptOnly =
86
120
  * cryptedclone
87
121
  */
88
122
  console.log("eggs will SAVE users and users' data ENCRYPTED");
89
- /*
90
- const users = await this.usersFill()
91
- for (const user of users) {
92
- if (user.saveIt) {
93
- let utype = 'user '
94
- if (Number.parseInt(user.uid) < 1000) {
95
- utype = 'service'
96
- }
97
- //console.log(`- ${utype}: ${user.login.padEnd(16)} \thome: ${user.home}`)
98
- if (user.login !== 'root') {
99
- this.addRemoveExclusion(true, user.home)
100
- }
101
- }
102
- }
103
- */
104
123
  }
105
124
  else if (this.clone) {
106
125
  /**
107
126
  * clone
108
- *
109
- * users tend to set user_opt as
110
- * real user when create a clone,
111
- * this is WRONG here we correct
112
127
  */
113
128
  this.settings.config.user_opt = 'live'; // patch for humans
114
129
  this.settings.config.user_opt_passwd = 'evolution';
@@ -172,10 +187,9 @@ export async function produce(clone = false, cryptedclone = false, scriptOnly =
172
187
  this.incubator = new Incubator(this.settings.remix, this.settings.distro, this.settings.config.user_opt, this.theme, this.clone, verbose);
173
188
  await this.incubator.config(release);
174
189
  await this.syslinux(this.theme);
175
- //await this.isolinux(this.theme)
176
190
  await this.kernelCopy();
177
191
  /**
178
- * differents initfs for different families
192
+ * differents initrd for different families
179
193
  */
180
194
  if (this.familyId === 'alpine') {
181
195
  await this.initrdAlpine();
@@ -186,8 +200,7 @@ export async function produce(clone = false, cryptedclone = false, scriptOnly =
186
200
  else if (this.familyId === 'debian') {
187
201
  await this.initrdDebian();
188
202
  }
189
- else if (this.familyId === 'aldos' ||
190
- this.familyId === 'fedora' ||
203
+ else if (this.familyId === 'fedora' ||
191
204
  this.familyId === 'openmamba' ||
192
205
  this.familyId === 'opensuse' ||
193
206
  this.familyId === 'voidlinux') {
@@ -275,13 +288,6 @@ export async function produce(clone = false, cryptedclone = false, scriptOnly =
275
288
  await exec(`mkdir ${this.settings.iso_work}${pathName}/x86_64 -p`, this.echo);
276
289
  fs.linkSync(`${this.settings.iso_work}live/filesystem.squashfs`, `${this.settings.iso_work}${pathName}.sfs`);
277
290
  }
278
- /**
279
- * patch per aldos
280
- if (this.familyId === 'aldos') {
281
- await exec(`mkdir ${this.settings.iso_work}LiveOS -p`, this.echo)
282
- fs.linkSync(`${this.settings.iso_work}live/filesystem.squashfs`, `${this.settings.iso_work}LiveOS/squashfs.img`)
283
- }
284
- */
285
291
  await this.makeIso(mkIsofsCmd, scriptOnly);
286
292
  }
287
293
  }
@@ -53,14 +53,14 @@ export async function syslinux(theme = 'eggs') {
53
53
  Utils.warning('Cannot find: ' + isolinuxTemplate);
54
54
  process.exit();
55
55
  }
56
- const kernel_parameters = Diversions.kernelParameters(this.familyId, this.volid); // this.kernelParameters()
56
+ const kernel_parameters = Diversions.kernelParameters(this.familyId, this.volid);
57
57
  const template = fs.readFileSync(isolinuxTemplate, 'utf8');
58
58
  const view = {
59
59
  fullname: this.settings.remix.fullname.toUpperCase(),
60
- initrdImg: `/live${this.settings.initrdImg}`,
61
- kernel: Utils.kernelVersion(),
60
+ initrdImg: `/live/${path.basename(this.initrd)}`,
61
+ kernel: this.kernel,
62
62
  kernel_parameters,
63
- vmlinuz: `/live${this.settings.vmlinuz}`
63
+ vmlinuz: `/live/${path.basename(this.vmlinuz)}`
64
64
  };
65
65
  fs.writeFileSync(isolinuxDest, mustache.render(template, view));
66
66
  /**
@@ -11,6 +11,7 @@ import path from 'node:path';
11
11
  import yaml from 'js-yaml';
12
12
  // functions
13
13
  import rexec from './rexec.js';
14
+ import Utils from '../utils.js';
14
15
  // _dirname
15
16
  const __dirname = path.dirname(new URL(import.meta.url).pathname);
16
17
  /**
@@ -37,6 +38,9 @@ export async function userCreateLive() {
37
38
  }
38
39
  // da problemi con il mount sshfs
39
40
  cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' chown ' + this.settings.config.user_opt + ':users' + ' /home/' + this.settings.config.user_opt + ' -R', this.verbose));
41
+ /**
42
+ *
43
+ */
40
44
  switch (this.familyId) {
41
45
  case 'debian': {
42
46
  cmds.push(await rexec(`chroot ${this.settings.work_dir.merged} usermod -aG sudo ${this.settings.config.user_opt}`, this.verbose));
@@ -70,12 +74,11 @@ export async function userCreateLive() {
70
74
  // No default
71
75
  }
72
76
  /**
73
- * educaandos and others themes
74
- * users.yml
77
+ * look to calamares/modules/users.yml for groups
75
78
  */
76
- let usersConf = path.resolve(__dirname, `../../addons/${this.theme}/theme/calamares/users.yml`);
77
- if (this.theme.includes('/')) {
78
- usersConf = `${this.theme}/theme/calamares/modules/users.yml`;
79
+ let usersConf = '/etc/calamares/modules/users.conf';
80
+ if (!fs.existsSync(usersConf)) {
81
+ usersConf = '/etc/penguins-eggs.d/krill/modules/users.conf';
79
82
  }
80
83
  if (fs.existsSync(usersConf)) {
81
84
  const o = yaml.load(fs.readFileSync(usersConf, 'utf8'));
@@ -83,4 +86,8 @@ export async function userCreateLive() {
83
86
  cmds.push(await rexec(`chroot ${this.settings.work_dir.merged} usermod -aG ${group} ${this.settings.config.user_opt}`, this.verbose));
84
87
  }
85
88
  }
89
+ else {
90
+ console.log(`il file ${usersConf} non esiste!`);
91
+ await Utils.pressKeyToExit();
92
+ }
86
93
  }
@@ -13,11 +13,11 @@ import { produce } from './ovary.d/produce.js';
13
13
  import { bindLiveFs, uBindLiveFs } from './ovary.d/bind-live-fs.js';
14
14
  import { bindVfs, ubindVfs } from './ovary.d/bind-vfs.js';
15
15
  import { editLiveFs } from './ovary.d/edit-live-fs.js';
16
- import { makeSquashfs, addRemoveExclusion } from './ovary.d/make-squashfs.js';
16
+ import { makeSquashfs, addExclusion } from './ovary.d/make-squashfs.js';
17
17
  import { makeEfi } from './ovary.d/make-efi.js';
18
18
  import { xorrisoCommand } from './ovary.d/xorriso-commend.js';
19
19
  import { createXdgAutostart } from './ovary.d/create-xdg-autostart.js';
20
- import { merged, mergedAndOverlay } from './ovary.d/merged.js';
20
+ import { copied, merged, mergedAndOverlay } from './ovary.d/merged.js';
21
21
  import { makeIso } from './ovary.d/make-iso.js';
22
22
  import { initrdAlpine, initrdArch, initrdDebian, initrdDracut } from './ovary.d/initrd.js';
23
23
  import { userCreateLive } from './ovary.d/user-create-live.js';
@@ -37,6 +37,7 @@ export default class Ovary {
37
37
  cryptedclone: boolean;
38
38
  echo: {};
39
39
  familyId: string;
40
+ distroId: string;
40
41
  genisoimage: boolean;
41
42
  incubator: Incubator;
42
43
  nest: string;
@@ -48,6 +49,9 @@ export default class Ovary {
48
49
  verbose: boolean;
49
50
  volid: string;
50
51
  uuid: string;
52
+ kernel: string;
53
+ initrd: string;
54
+ vmlinuz: string;
51
55
  fertilization: typeof fertilization;
52
56
  produce: typeof produce;
53
57
  bindLiveFs: typeof bindLiveFs;
@@ -55,9 +59,10 @@ export default class Ovary {
55
59
  editLiveFs: typeof editLiveFs;
56
60
  makeEfi: typeof makeEfi;
57
61
  makeSquashfs: typeof makeSquashfs;
58
- addRemoveExclusion: typeof addRemoveExclusion;
62
+ addExclusion: typeof addExclusion;
59
63
  xorrisoCommand: typeof xorrisoCommand;
60
64
  createXdgAutostart: typeof createXdgAutostart;
65
+ copied: typeof copied;
61
66
  merged: typeof merged;
62
67
  mergedAndOverlay: typeof mergedAndOverlay;
63
68
  makeIso: typeof makeIso;
@@ -13,11 +13,11 @@ import { produce } from './ovary.d/produce.js';
13
13
  import { bindLiveFs, uBindLiveFs } from './ovary.d/bind-live-fs.js';
14
14
  import { bindVfs, ubindVfs } from './ovary.d/bind-vfs.js';
15
15
  import { editLiveFs } from './ovary.d/edit-live-fs.js';
16
- import { makeSquashfs, addRemoveExclusion } from './ovary.d/make-squashfs.js';
16
+ import { makeSquashfs, addExclusion } from './ovary.d/make-squashfs.js';
17
17
  import { makeEfi } from './ovary.d/make-efi.js';
18
18
  import { xorrisoCommand } from './ovary.d/xorriso-commend.js';
19
19
  import { createXdgAutostart } from './ovary.d/create-xdg-autostart.js';
20
- import { merged, mergedAndOverlay } from './ovary.d/merged.js';
20
+ import { copied, merged, mergedAndOverlay } from './ovary.d/merged.js';
21
21
  import { makeIso } from './ovary.d/make-iso.js';
22
22
  import { initrdAlpine, initrdArch, initrdDebian, initrdDracut } from './ovary.d/initrd.js';
23
23
  import { userCreateLive } from './ovary.d/user-create-live.js';
@@ -39,6 +39,7 @@ export default class Ovary {
39
39
  cryptedclone = false;
40
40
  echo = {};
41
41
  familyId = '';
42
+ distroId = '';
42
43
  genisoimage = false;
43
44
  incubator = {};
44
45
  nest = '';
@@ -50,6 +51,9 @@ export default class Ovary {
50
51
  verbose = false;
51
52
  volid = '';
52
53
  uuid = '';
54
+ kernel = '';
55
+ initrd = '';
56
+ vmlinuz = '';
53
57
  // I put all methods on ovary.d
54
58
  fertilization = fertilization;
55
59
  produce = produce;
@@ -59,9 +63,10 @@ export default class Ovary {
59
63
  editLiveFs = editLiveFs;
60
64
  makeEfi = makeEfi;
61
65
  makeSquashfs = makeSquashfs;
62
- addRemoveExclusion = addRemoveExclusion;
66
+ addExclusion = addExclusion;
63
67
  xorrisoCommand = xorrisoCommand;
64
68
  createXdgAutostart = createXdgAutostart;
69
+ copied = copied;
65
70
  merged = merged;
66
71
  mergedAndOverlay = mergedAndOverlay;
67
72
  makeIso = makeIso;
@@ -21,11 +21,7 @@ export default class Archlinux {
21
21
  static async calamaresInstall(verbose = false) {
22
22
  verbose = true; // serve per pacman
23
23
  const echo = Utils.setEcho(verbose);
24
- // const cal_eggs = 'calamares-eggs-3.3.9-1-x86_64.pkg.tar.zst' // 01/09/2024
25
- // const cal_eggs = 'calamares-eggs-3.3.10-1-x86_64.pkg.tar.zst' // 24/10/2024
26
- // const cal_eggs = 'calamares-eggs-3.3.12-2-x86_64.pkg.tar.zst' // 17/12/2024
27
- //let cmd = `wget -O /tmp/${cal_eggs} https://sourceforge.net/projects/penguins-eggs/files/packages/aur/${cal_eggs}/download`
28
- const cal_eggs = 'calamares-eggs-3.3.14-1-x86_64.pkg.tar.zst'; // 17/12/2024
24
+ const cal_eggs = 'calamares-eggs-3.3.14-2-x86_64.pkg.tar.zst'; // 11/05/2025
29
25
  let cmd = `wget -O /tmp/${cal_eggs} https://penguins-eggs.net/basket/packages/aur/${cal_eggs}`; // 21/12/2024
30
26
  try {
31
27
  await exec(cmd, echo);
@@ -193,7 +193,7 @@ export default class Pacman {
193
193
  config.make_isohybrid = true;
194
194
  config.compression = 'xz';
195
195
  config.ssh_pass = false;
196
- config.timezone = 'Europe/Rome';
196
+ config.timezone = 'America/New_York';
197
197
  config.pmount_fixed = false;
198
198
  if (!this.calamaresExists()) {
199
199
  config.force_installer = false;
@@ -245,6 +245,7 @@ export default class Pacman {
245
245
  shx.ln('-s', path.resolve(__dirname, '../../addons'), addons);
246
246
  shx.cp(path.resolve(__dirname, '../../conf/README.md'), confRoot);
247
247
  shx.cp(path.resolve(__dirname, '../../conf/derivatives.yaml'), confRoot);
248
+ shx.cp(path.resolve(__dirname, '../../conf/derivatives_fedora.yaml'), confRoot);
248
249
  shx.cp(path.resolve(__dirname, '../../conf/krill.yaml'), confRoot);
249
250
  shx.cp(path.resolve(__dirname, '../../conf/love.yaml'), confRoot);
250
251
  shx.cp(path.resolve(__dirname, '../../conf/tools.yaml'), config_tools);
@@ -17,7 +17,7 @@ export default class SistemdCtl {
17
17
  /**
18
18
  *
19
19
  */
20
- enable(service: string): Promise<void>;
20
+ enable(service: string, chroot?: string, report?: boolean): Promise<void>;
21
21
  /**
22
22
  *
23
23
  * @param service
@@ -26,7 +26,7 @@ export default class SistemdCtl {
26
26
  /**
27
27
  *
28
28
  */
29
- async enable(service) {
29
+ async enable(service, chroot = '/', report = false) {
30
30
  await exec(`systemctl enable ${service}`, this.echo);
31
31
  }
32
32
  /**
@@ -426,7 +426,8 @@ export default class Tailor {
426
426
  const distro = new Distro();
427
427
  let cmd = "";
428
428
  if (distro.familyId === "debian") {
429
- cmd = `apt-cache --no-generate pkgnames`;
429
+ // cmd=`apt-cache --no-generate pkgnames`
430
+ cmd = `apt-cache pkgnames`;
430
431
  }
431
432
  else if (distro.familyId === "archlinux") {
432
433
  cmd = `pacman -S --list | awk '{print $2}'`;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ./src/classes/utils.d/architecture.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * Architecture detection utilities - UEFI, arch-specific paths
5
+ * author: Piero Proietti
6
+ * email: piero.proietti@gmail.com
7
+ * license: MIT
8
+ */
9
+ export default class Architecture {
10
+ /**
11
+ * Return true if i686 architecture
12
+ * @remarks to move in Utils
13
+ * @returns {boolean} true se l'architettura è i686
14
+ */
15
+ static isi686(): boolean;
16
+ /**
17
+ * uefiArch
18
+ * @returns arch
19
+ */
20
+ static uefiArch(): string;
21
+ /**
22
+ * i386-pc,
23
+ * i386-efi,
24
+ * x86_64-efi,
25
+ * arm64-efi,
26
+ *
27
+ * ATTEMZIONE: install efibootmgr
28
+ *
29
+ * Fedora/RHEL have i386-pc
30
+ */
31
+ static uefiFormat(): string;
32
+ /**
33
+ *
34
+ * @returns
35
+ */
36
+ static usrLibPath(): string;
37
+ /**
38
+ * get the kernel version
39
+ */
40
+ static kernelVersion(): string;
41
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * ./src/classes/utils.d/architecture.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * Architecture detection utilities - UEFI, arch-specific paths
5
+ * author: Piero Proietti
6
+ * email: piero.proietti@gmail.com
7
+ * license: MIT
8
+ */
9
+ import shx from 'shelljs';
10
+ import os from 'os';
11
+ export default class Architecture {
12
+ /**
13
+ * Return true if i686 architecture
14
+ * @remarks to move in Utils
15
+ * @returns {boolean} true se l'architettura è i686
16
+ */
17
+ static isi686() {
18
+ return process.arch === 'ia32';
19
+ }
20
+ /**
21
+ * uefiArch
22
+ * @returns arch
23
+ */
24
+ static uefiArch() {
25
+ let arch = '';
26
+ if (process.arch === 'ia32') {
27
+ arch = 'i386';
28
+ //
29
+ if (shx.exec('uname -m', { silent: true }).stdout.trim() === 'x86_64') {
30
+ arch = 'amd64';
31
+ }
32
+ }
33
+ else if (process.arch === 'x64') {
34
+ arch = 'amd64';
35
+ }
36
+ else if (process.arch === 'arm64') {
37
+ arch = 'arm64';
38
+ }
39
+ return arch;
40
+ }
41
+ /**
42
+ * i386-pc,
43
+ * i386-efi,
44
+ * x86_64-efi,
45
+ * arm64-efi,
46
+ *
47
+ * ATTEMZIONE: install efibootmgr
48
+ *
49
+ * Fedora/RHEL have i386-pc
50
+ */
51
+ static uefiFormat() {
52
+ let format = '';
53
+ if (process.arch === 'ia32') {
54
+ format = 'i386-efi';
55
+ if (shx.exec('uname -m', { silent: true }).stdout.trim() === 'x86_64') {
56
+ format = 'x86_64-efi';
57
+ }
58
+ }
59
+ else if (process.arch === 'x64') {
60
+ format = 'x86_64-efi';
61
+ }
62
+ else if (process.arch === 'arm64') {
63
+ format = 'arm64-efi';
64
+ }
65
+ return format;
66
+ }
67
+ /**
68
+ *
69
+ * @returns
70
+ */
71
+ static usrLibPath() {
72
+ let path = '';
73
+ if (process.arch === 'x64') {
74
+ path = 'x86_64-linux-gnu';
75
+ }
76
+ else if (process.arch === 'arm64') {
77
+ path = 'aarch64-linux-gnu';
78
+ }
79
+ return path;
80
+ }
81
+ /**
82
+ * get the kernel version
83
+ */
84
+ static kernelVersion() {
85
+ return os.release();
86
+ }
87
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * ./src/classes/utils.d/console-output.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * Console output utilities - colored output, titles, warnings, errors
5
+ * author: Piero Proietti
6
+ * email: piero.proietti@gmail.com
7
+ * license: MIT
8
+ */
9
+ export default class ConsoleOutput {
10
+ /**
11
+ *
12
+ * @param msg
13
+ */
14
+ static warning(msg?: string): void;
15
+ static error(msg?: string): void;
16
+ /**
17
+ * titles
18
+ * Penguin's are gettings alive!
19
+ */
20
+ static titles(command?: string): void;
21
+ /**
22
+ *
23
+ * @returns flag
24
+ */
25
+ static flag(): string;
26
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * ./src/classes/utils.d/console-output.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * Console output utilities - colored output, titles, warnings, errors
5
+ * author: Piero Proietti
6
+ * email: piero.proietti@gmail.com
7
+ * license: MIT
8
+ */
9
+ import chalk from 'chalk';
10
+ // pjson
11
+ import { createRequire } from 'module';
12
+ const require = createRequire(import.meta.url);
13
+ const pjson = require('../../../package.json');
14
+ export default class ConsoleOutput {
15
+ /**
16
+ *
17
+ * @param msg
18
+ */
19
+ static warning(msg = '') {
20
+ console.log(pjson.shortName + ' >>> ' + chalk.cyanBright(msg) + '.');
21
+ }
22
+ static error(msg = '') {
23
+ console.error(pjson.shortName + ' >>> ' + chalk.bgMagentaBright(chalk.whiteBright(msg)) + '.');
24
+ }
25
+ /**
26
+ * titles
27
+ * Penguin's are gettings alive!
28
+ */
29
+ static titles(command = '') {
30
+ console.clear();
31
+ console.log('');
32
+ console.log(' E G G S: the reproductive system of penguins');
33
+ console.log('');
34
+ console.log(ConsoleOutput.flag());
35
+ console.log('command: ' + chalk.bgBlack.white(command) + '\n');
36
+ }
37
+ /**
38
+ *
39
+ * @returns flag
40
+ */
41
+ static flag() {
42
+ return chalk.bgGreen.whiteBright(' ' + pjson.name + ' ') +
43
+ chalk.bgWhite.blue(" Perri's Brewery edition ") +
44
+ chalk.bgRed.whiteBright(' ver. ' + pjson.version + ' ');
45
+ }
46
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * ./src/classes/utils.d/filesystem.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * Filesystem operations utilities - files, UUID, disk space
5
+ * author: Piero Proietti
6
+ * email: piero.proietti@gmail.com
7
+ * license: MIT
8
+ */
9
+ import IOsRelease from '../../interfaces/i-os-release.js';
10
+ export default class Filesystem {
11
+ /**
12
+ *
13
+ * @param file
14
+ * @param search
15
+ * @returns value
16
+ */
17
+ static searchOnFile(file?: string, search?: string): string;
18
+ /**
19
+ * restituisce uuid
20
+ * @param device
21
+ */
22
+ static uuid(device: string): string;
23
+ /**
24
+ *
25
+ * @param device
26
+ * @returns
27
+ */
28
+ static uuidGen(): string;
29
+ /**
30
+ * Calculate the space used on the disk
31
+ * @return {void}
32
+ */
33
+ static getUsedSpace(): number;
34
+ /**
35
+ * write a file
36
+ * @param file
37
+ * @param text
38
+ */
39
+ static write(file: string, text: string): void;
40
+ /**
41
+ *
42
+ * @param file
43
+ * @param cmd
44
+ */
45
+ static writeX(file: string, cmd: string): void;
46
+ /**
47
+ *
48
+ * @param file
49
+ * @param cmd
50
+ */
51
+ static writeXs(file: string, cmds: string[]): void;
52
+ static getOsRelease(): IOsRelease;
53
+ }