penguins-eggs 25.11.21 → 25.11.29

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 (45) hide show
  1. package/.oclif.manifest.json +53 -41
  2. package/README.md +146 -64
  3. package/README.pdf +21400 -3491
  4. package/addons/eggs/theme/livecd/full.grub.main.cfg +39 -4
  5. package/addons/eggs/theme/livecd/full.isolinux.main.cfg +47 -4
  6. package/bin/run.js +11 -0
  7. package/conf/derivatives.yaml +2 -1
  8. package/dist/appimage/dependency-manager.d.ts +31 -0
  9. package/dist/appimage/dependency-manager.js +292 -0
  10. package/dist/appimage/first-run-check.js +3 -3
  11. package/dist/bin/run.js +11 -0
  12. package/dist/classes/cli-autologin.js +1 -1
  13. package/dist/classes/daddy.js +11 -11
  14. package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +7 -0
  15. package/dist/classes/incubation/fisherman-helper/initcpio.js +7 -0
  16. package/dist/classes/incubation/fisherman.js +0 -2
  17. package/dist/classes/network.d.ts +1 -1
  18. package/dist/classes/ovary.d/edit-live-fs.d.ts +1 -1
  19. package/dist/classes/ovary.d/edit-live-fs.js +129 -93
  20. package/dist/classes/ovary.d/fertilization.js +1 -1
  21. package/dist/classes/ovary.d/xorriso-command.js +1 -5
  22. package/dist/classes/pacman.d.ts +21 -7
  23. package/dist/classes/pacman.js +53 -32
  24. package/dist/classes/utils.d.ts +1 -5
  25. package/dist/classes/utils.js +15 -12
  26. package/dist/commands/config.js +3 -14
  27. package/dist/commands/cuckoo.js +1 -1
  28. package/dist/commands/{setup.d.ts → setup/install.d.ts} +1 -5
  29. package/dist/commands/setup/install.js +71 -0
  30. package/dist/commands/setup/purge.d.ts +17 -0
  31. package/dist/commands/setup/purge.js +71 -0
  32. package/dist/commands/update.d.ts +15 -0
  33. package/dist/commands/update.js +74 -6
  34. package/dist/krill/components/title.js +4 -4
  35. package/dist/lib/utils.js +0 -19
  36. package/manpages/doc/man/eggs.1.gz +0 -0
  37. package/manpages/doc/man/eggs.html +29 -17
  38. package/package.json +8 -9
  39. package/scripts/_eggs +35 -7
  40. package/scripts/eggs.bash +2 -1
  41. package/dist/appimage/prerequisites.d.ts +0 -34
  42. package/dist/appimage/prerequisites.js +0 -350
  43. package/dist/commands/setup.js +0 -90
  44. package/scripts/appimage-build.sh +0 -152
  45. package/scripts/appimage-install.sh +0 -43
@@ -74,8 +74,7 @@ export default class Config extends Command {
74
74
  i.distroTemplate = !Pacman.distroTemplateCheck();
75
75
  i.addEfi = !Pacman.isUefi();
76
76
  i.calamares = false;
77
- if (!homecrypt &&
78
- !Pacman.calamaresExists() &&
77
+ if (!Pacman.calamaresExists() &&
79
78
  Pacman.isInstalledGui() &&
80
79
  Pacman.isCalamaresAvailable()) {
81
80
  i.calamares = true;
@@ -95,18 +94,8 @@ export default class Config extends Command {
95
94
  }
96
95
  if (Utils.isRoot(this.id)) {
97
96
  if (flags.clean) {
98
- Utils.warning('removing old configurations');
99
- await exec('rm /etc/penguins-eggs.d -rf');
100
- }
101
- /**
102
- * Se stiamo utilizzando eggs da source/appimage
103
- * Aggiungo autocomplete e manPage
104
- */
105
- if (Utils.isSources() || Utils.isAppImage()) {
106
- Utils.warning('creating autocomplete...');
107
- await Pacman.autocompleteInstall(verbose);
108
- Utils.warning('creating eggs man page...');
109
- await Pacman.manPageInstall(verbose);
97
+ Utils.warning('removing penguins-eggs configurations');
98
+ await exec('rm -rf /etc/penguins-eggs.d');
110
99
  }
111
100
  const i = await Config.thatWeNeed(nointeractive, verbose);
112
101
  if (i.needUpdate || i.configurationInstall || i.configurationRefresh || i.distroTemplate) {
@@ -39,7 +39,7 @@ export default class Cuckoo extends Command {
39
39
  host: n.address,
40
40
  subnet: n.cidr,
41
41
  tftpserver: n.address,
42
- broadcast: n.broadcast()
42
+ broadcast: Utils.broadcast()
43
43
  };
44
44
  pxe.dhcpdStart(dhcpOptions);
45
45
  /**
@@ -6,12 +6,8 @@
6
6
  * license: MIT
7
7
  */
8
8
  import { Command } from '@oclif/core';
9
- export default class Setup extends Command {
9
+ export default class Install extends Command {
10
10
  static description: string;
11
- static flags: {
12
- check: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
- };
15
11
  static examples: string[];
16
12
  /**
17
13
  *
@@ -0,0 +1,71 @@
1
+ /**
2
+ * ./src/commands/setup.ts
3
+ * penguins-eggs v.25.11.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Distro from '../../classes/distro.js';
9
+ import Utils from '../../classes/utils.js';
10
+ import Pacman from '../../classes/pacman.js';
11
+ import { Command } from '@oclif/core';
12
+ import { DependencyManager } from '../../appimage/dependency-manager.js';
13
+ import { execSync } from 'node:child_process';
14
+ export default class Install extends Command {
15
+ static description = 'Automatically check and install system prerequisites';
16
+ static examples = [
17
+ 'eggs setup # this help',
18
+ 'sudo eggs setup install # install native dependencies, autocomplete, man, etc',
19
+ 'sudo eggs setup purge # purge all configurations, autocomplete, man, etc installed from penguins-eggs AppImage',
20
+ ];
21
+ /**
22
+ *
23
+ * @returns
24
+ */
25
+ async run() {
26
+ Utils.titles(this.id + ' ' + this.argv);
27
+ /**
28
+ * continue only on AppImage
29
+ */
30
+ if (!Utils.isAppImage()) {
31
+ console.log("The eggs setup command is only applicable on the AppImage version.");
32
+ console.log("On penguins-eggs native package this operation is done by the system package manager.");
33
+ process.exit();
34
+ }
35
+ const appImagePath = process.env.APPIMAGE;
36
+ console.log(`Running AppImage:\n${appImagePath}\n`);
37
+ const distro = new Distro();
38
+ const osInfo = Utils.getOsRelease();
39
+ const codenameId = osInfo.VERSION_CODENAME;
40
+ const releaseId = osInfo.VERSION_ID;
41
+ const distroId = osInfo.ID;
42
+ const { flags } = await this.parse(Install);
43
+ const depsManager = new DependencyManager();
44
+ console.log(`Your system is: ${distroId} ${releaseId} ${codenameId}, family ${distro.familyId}\n`);
45
+ console.log(`Compatible with: ${distro.distroLike} ${distro.distroUniqueId}\n`);
46
+ if (depsManager.isInstalled()) {
47
+ console.log('penguins-eggs distro meta-packages are already installed');
48
+ }
49
+ else {
50
+ console.log('penguins-eggs distro meta-packages are NOT installed');
51
+ }
52
+ if (Utils.isRoot()) {
53
+ console.log();
54
+ Utils.warning(`Are you sure you want to install penguins-eggs AppImage autocomplete, manpages, configurations and distro meta-packages:\n`);
55
+ if (await Utils.customConfirm('Select yes to continue...')) {
56
+ const appImagePath = process.env.APPIMAGE;
57
+ if (appImagePath !== '/usr/bin/eggs') {
58
+ execSync(`mv ${appImagePath} /usr/bin/eggs`);
59
+ console.log(`${appImagePath} moved to /usr/bin/eggs`);
60
+ }
61
+ await Pacman.autocompleteInstall();
62
+ await Pacman.manpageInstall();
63
+ await Pacman.configurationInstall();
64
+ depsManager.installDistroPackages();
65
+ }
66
+ }
67
+ else {
68
+ Utils.useRoot(this.id);
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ./src/commands/setup.ts
3
+ * penguins-eggs v.25.11.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import { Command } from '@oclif/core';
9
+ export default class Purge extends Command {
10
+ static description: string;
11
+ static examples: string[];
12
+ /**
13
+ *
14
+ * @returns
15
+ */
16
+ run(): Promise<void>;
17
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * ./src/commands/setup.ts
3
+ * penguins-eggs v.25.11.x / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import Distro from '../../classes/distro.js';
9
+ import Utils from '../../classes/utils.js';
10
+ import Pacman from '../../classes/pacman.js';
11
+ import { Command } from '@oclif/core';
12
+ import { DependencyManager } from '../../appimage/dependency-manager.js';
13
+ import { execSync } from 'node:child_process';
14
+ export default class Purge extends Command {
15
+ static description = 'Automatically check and install system prerequisites';
16
+ static examples = [
17
+ 'eggs setup # this help',
18
+ 'sudo eggs setup install # install native dependencies, autocomplete, man, etc',
19
+ 'sudo eggs setup purge # purge all configurations, autocomplete, man, etc installed from penguins-eggs AppImage',
20
+ ];
21
+ /**
22
+ *
23
+ * @returns
24
+ */
25
+ async run() {
26
+ Utils.titles(this.id + ' ' + this.argv);
27
+ /**
28
+ * continue only on AppImage
29
+ */
30
+ if (!Utils.isAppImage()) {
31
+ console.log("The eggs setup purge command is only applicable on the AppImage version.");
32
+ console.log("On penguins-eggs native package this operation is done by the system package manager.");
33
+ process.exit();
34
+ }
35
+ const appImagePath = process.env.APPIMAGE;
36
+ console.log(`Running AppImage:\n${appImagePath}\n`);
37
+ const distro = new Distro();
38
+ const osInfo = Utils.getOsRelease();
39
+ const codenameId = osInfo.VERSION_CODENAME;
40
+ const releaseId = osInfo.VERSION_ID;
41
+ const distroId = osInfo.ID;
42
+ const { flags } = await this.parse(Purge);
43
+ const depsManager = new DependencyManager();
44
+ console.log(`Your system is: ${distroId} ${releaseId} ${codenameId}, family ${distro.familyId}\n`);
45
+ console.log(`Compatible with: ${distro.distroLike} ${distro.distroUniqueId}\n`);
46
+ if (Utils.isRoot()) {
47
+ console.log();
48
+ Utils.warning(`Are you sure you want to purge penguins-eggs AppImage autocomplete, manpages, configurations and distro meta-aackages:\n ${appImagePath}`);
49
+ if (await Utils.customConfirm('Select yes to continue...')) {
50
+ depsManager.removeDistroPackages();
51
+ await Pacman.autocompleteRemove();
52
+ await Pacman.manpageRemove();
53
+ await Pacman.configurationRemove();
54
+ execSync('rm -f /usr/share/applications/penguins-eggs.desktop');
55
+ execSync('rm -f /usr/bin/penguins-links-add.sh');
56
+ execSync('rm -f /usr/local/bin/g4*');
57
+ console.log('penguins-eggs AppImage stuffs was successfully removed.\n');
58
+ if (appImagePath === '/usr/bin/eggs') {
59
+ execSync(`rm -f ${appImagePath} /usr/bin/eggs`);
60
+ }
61
+ else {
62
+ console.log('You can completely erase AppImage file, using:');
63
+ console.log(`sudo rm ${appImagePath}\n`);
64
+ }
65
+ }
66
+ }
67
+ else {
68
+ Utils.useRoot(this.id);
69
+ }
70
+ }
71
+ }
@@ -43,4 +43,19 @@ export default class Update extends Command {
43
43
  * show
44
44
  */
45
45
  show(url: string): Promise<void>;
46
+ /**
47
+ *
48
+ */
49
+ getLatestAppImage(): Promise<void>;
50
+ /**
51
+ *
52
+ */
53
+ getLatestAppImageUrl(): Promise<string | null>;
54
+ /**
55
+ *
56
+ * @param url
57
+ * @param outputFilename
58
+ * @returns
59
+ */
60
+ downloadWithCurl(url: string, outputFilename: string): Promise<void>;
46
61
  }
@@ -12,6 +12,7 @@ import Tools from '../classes/tools.js';
12
12
  import Utils from '../classes/utils.js';
13
13
  import Diversions from '../classes/diversions.js';
14
14
  import { exec } from '../lib/utils.js';
15
+ import { spawn } from 'child_process';
15
16
  import axios from 'axios';
16
17
  import https from 'node:https';
17
18
  const agent = new https.Agent({
@@ -57,8 +58,13 @@ export default class Update extends Command {
57
58
  await this.getPkgFromLan();
58
59
  break;
59
60
  }
60
- case 'Package_Manager': {
61
- await this.getPkgFromPackageManager();
61
+ case 'Internet': {
62
+ if (Utils.isAppImage()) {
63
+ await this.getLatestAppImage();
64
+ }
65
+ else {
66
+ await this.getPkgFromPackageManager();
67
+ }
62
68
  break;
63
69
  }
64
70
  case 'Source': {
@@ -73,7 +79,7 @@ export default class Update extends Command {
73
79
  */
74
80
  async choosePkg() {
75
81
  const choices = ['Abort'];
76
- choices.push('LAN', 'Package_Manager', 'Source');
82
+ choices.push('LAN', 'Internet', 'Source');
77
83
  const questions = [
78
84
  {
79
85
  choices,
@@ -92,6 +98,7 @@ export default class Update extends Command {
92
98
  *
93
99
  */
94
100
  async getPkgFromPackageManager() {
101
+ Utils.titles(`update from package Manager`);
95
102
  let cmd = "";
96
103
  if (this.distro.familyId === 'alpine') {
97
104
  cmd = `doas apk add penguins-egga`;
@@ -111,7 +118,6 @@ export default class Update extends Command {
111
118
  else if (this.distro.familyId === "opensuse") {
112
119
  cmd = 'sudo zypper install penguins-eggs\\zypper install --force penguins-eggs';
113
120
  }
114
- Utils.titles(`update`);
115
121
  Utils.warning(`To install/update penguins-eggs cut and copy one of the follow commands`);
116
122
  console.log();
117
123
  console.log(cmd);
@@ -129,10 +135,10 @@ export default class Update extends Command {
129
135
  let install = '';
130
136
  let repo = '';
131
137
  if (Utils.isAppImage()) {
132
- console.log("AppImage: penguins-eggs-*-x86_64.AppImage will be installed as /usr/local/bin/eggs");
138
+ console.log("AppImage: penguins-eggs-*-x86_64.AppImage will be installed as /usr/bin/eggs");
133
139
  filter = `penguins-eggs-*-x86_64.AppImage`;
134
140
  copy = `scp ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathPackages}/${filter} /tmp`;
135
- install = `mkdir -p /usr/local/bin |mv /tmp/${filter} /usr/local/bin/eggs`;
141
+ install = `mv /tmp/${filter} /usr/bin/eggs`;
136
142
  }
137
143
  else {
138
144
  /**
@@ -244,4 +250,66 @@ export default class Update extends Command {
244
250
  console.log('- ' + country[0] + ': ' + country[1]);
245
251
  }
246
252
  }
253
+ /**
254
+ *
255
+ */
256
+ async getLatestAppImage() {
257
+ let url = await this.getLatestAppImageUrl();
258
+ console.log(`Downloading AppImage from ${url}`);
259
+ let AppFile = '/tmp/eggs.AppImage';
260
+ if (url !== null) {
261
+ await this.downloadWithCurl(url, AppFile);
262
+ }
263
+ await exec(`mv ${AppFile} /usr/bin/eggs`);
264
+ await exec(`chmod +x /usr/bin/eggs`);
265
+ }
266
+ /**
267
+ *
268
+ */
269
+ async getLatestAppImageUrl() {
270
+ const repo = 'pieroproietti/penguins-eggs';
271
+ const apiUrl = `https://api.github.com/repos/${repo}/releases/latest`;
272
+ try {
273
+ const response = await fetch(apiUrl);
274
+ if (!response.ok)
275
+ throw new Error(`Errore API GitHub: ${response.statusText}`);
276
+ const data = await response.json();
277
+ // Cerchiamo l'asset che finisce per .AppImage
278
+ const asset = data.assets.find((a) => a.name.endsWith('.AppImage'));
279
+ return asset ? asset.browser_download_url : null;
280
+ }
281
+ catch (error) {
282
+ console.error(" :", error);
283
+ return null;
284
+ }
285
+ }
286
+ /**
287
+ *
288
+ * @param url
289
+ * @param outputFilename
290
+ * @returns
291
+ */
292
+ async downloadWithCurl(url, outputFilename) {
293
+ return new Promise((resolve, reject) => {
294
+ console.log(`Avvio download di: ${outputFilename}...`);
295
+ // Spawniamo il processo curl
296
+ // -L: segue i redirect (fondamentale per GitHub)
297
+ // -o: specifica il file di output
298
+ const curl = spawn('curl', ['-L', '-o', outputFilename, url], {
299
+ stdio: 'inherit' // Questo mostra la progress bar di curl direttamente nel tuo terminale!
300
+ });
301
+ curl.on('close', (code) => {
302
+ if (code === 0) {
303
+ console.log('\nDownload completato con successo!');
304
+ resolve();
305
+ }
306
+ else {
307
+ reject(new Error(`Curl è uscito con codice errore: ${code}`));
308
+ }
309
+ });
310
+ curl.on('error', (err) => {
311
+ reject(new Error(`Impossibile avviare curl. È installato? ${err.message}`));
312
+ });
313
+ });
314
+ }
247
315
  }
@@ -14,14 +14,14 @@ const require = createRequire(import.meta.url);
14
14
  const pjson = require('../../../package.json');
15
15
  export default function Title({ title = "", version = "" }) {
16
16
  let type = "";
17
- if (Utils.isAppImage()) {
18
- type = "AppImage:";
17
+ if (!Utils.isAppImage()) {
18
+ type = "native";
19
19
  }
20
20
  if (title === "")
21
21
  title = `${pjson.name}`;
22
- let green = ` ${type} ${title}`.padEnd(25, " ");
22
+ let green = ` ${title}`.padEnd(25, " ");
23
23
  let white = ` Perri's brewery edition `.padEnd(25, " ");
24
- let red = ` v${pjson.version} `.padStart(25, " ");
24
+ let red = ` v${pjson.version} ${type} `.padStart(25, " ");
25
25
  return (React.createElement(React.Fragment, null,
26
26
  React.createElement(Box, { flexDirection: "column" },
27
27
  React.createElement(Box, null),
package/dist/lib/utils.js CHANGED
@@ -21,25 +21,6 @@ export async function exec(command, { echo = false, ignore = false, capture = fa
21
21
  const spawnOptions = {
22
22
  stdio: ignore ? 'ignore' : capture ? 'pipe' : 'inherit'
23
23
  };
24
- // AppImage Detected
25
- if (process.env.APPIMAGE) {
26
- // Clona l'ambiente attuale
27
- const env = { ...process.env };
28
- // 1. Rimuovi le variabili che causano conflitti di librerie (Kernel Panic)
29
- delete env.LD_LIBRARY_PATH;
30
- delete env.LD_PRELOAD;
31
- delete env.GSETTINGS_SCHEMA_DIR;
32
- delete env.PYTHONPATH;
33
- delete env.MANPATH;
34
- // 2. FORZA IL PATH DI SISTEMA
35
- env.PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin';
36
- // Applica l'ambiente pulito alle opzioni di spawn
37
- spawnOptions.env = env;
38
- // (Opzionale) Debug visivo per essere sicuri che stia funzionando
39
- if (echo) {
40
- console.log(' [AppImage Detected] Environment sanitized for system command.');
41
- }
42
- }
43
24
  const child = spawn('bash', ['-c', command], spawnOptions);
44
25
  let stdout = '';
45
26
  if (capture) {
Binary file
@@ -6,12 +6,12 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1">
7
7
  </head>
8
8
  <body>
9
- <h1>eggs(1) -- the reproductive system of penguins: eggs v25.11.21</h1>
9
+ <h1>eggs(1) -- the reproductive system of penguins: eggs v25.11.29</h1>
10
10
  <h1>SYNOPSIS</h1>
11
11
  <p>eggs is a console utility, in active development, who let you to remaster your system and redistribuite it as live ISO image.</p>
12
12
  <h1>INSTALL</h1>
13
13
  <p>penguins-eggs as an AppImage, it can be installed on all supported distributions. Download it from https://github.com/pieroproietti/penguins-eggs/releases, then run the following commands:</p>
14
- <pre><code>$ chmod +x penguins-eggs_25.11.21-1_amd64-x86_64.AppImage
14
+ <pre><code>$ chmod +x penguins-eggs_25.11.29-1_amd64-x86_64.AppImage
15
15
  $ sudo mv /usr/local/bin
16
16
  $ sudo eggs setup
17
17
  </code></pre>
@@ -19,30 +19,30 @@ $ sudo eggs setup
19
19
  <pre><code>$ doas apk add penguins-eggs@testing
20
20
  </code></pre>
21
21
  <p>AlmaLinux/RockyLinux</p>
22
- <pre><code>$ sudo dnf install ./penguins-eggs_25.11.21-1_amd64-1rocky9.5..x86_64.rpm
22
+ <pre><code>$ sudo dnf install ./penguins-eggs_25.11.29-1_amd64-1rocky9.5..x86_64.rpm
23
23
 
24
24
  </code></pre>
25
25
  <p>Arch</p>
26
26
  <pre><code>$ sudo pacman -S penguins-eggs
27
- $ sudo pacman -U penguins-eggs_25.11.21-1_amd64-1-x86_64.pkg.tar.zst
27
+ $ sudo pacman -U penguins-eggs_25.11.29-1_amd64-1-x86_64.pkg.tar.zst
28
28
  </code></pre>
29
29
  <p>Debian/Devuan/Ubuntu</p>
30
30
  <pre><code>$ sudo apt install penguins-eggs
31
- $ sudo dpkg -i penguins-eggs_25.11.21-1_amd64.deb
31
+ $ sudo dpkg -i penguins-eggs_25.11.29-1_amd64.deb
32
32
  </code></pre>
33
33
  <p>Fedora</p>
34
- <pre><code>$ sudo dnf install ./penguins-eggs_25.11.21-1_amd64-1fedora.x86_64.rpm
34
+ <pre><code>$ sudo dnf install ./penguins-eggs_25.11.29-1_amd64-1fedora.x86_64.rpm
35
35
  </code></pre>
36
36
  <p>Manjaro</p>
37
37
  <pre><code>$ sudo pamac install penguins-eggs
38
38
  </code></pre>
39
39
  <p>OpenMamba</p>
40
- <pre><code>$ sudo dnf install ./penguins-eggs_25.11.21-1_amd64-1mamba.x86_64.rpm
40
+ <pre><code>$ sudo dnf install ./penguins-eggs_25.11.29-1_amd64-1mamba.x86_64.rpm
41
41
  </code></pre>
42
42
  <h1>USAGE</h1>
43
43
  <pre><code>$ eggs (-v|--version|version)
44
44
 
45
- penguins-eggs/25.11.21
45
+ penguins-eggs/25.11.29
46
46
  $ eggs --help [COMMAND]
47
47
 
48
48
  USAGE
@@ -79,7 +79,8 @@ sudo eggs dad
79
79
  <li><a href="#eggs-love"><code>eggs love</code></a></li>
80
80
  <li><a href="#eggs-mom"><code>eggs mom</code></a></li>
81
81
  <li><a href="#eggs-produce"><code>eggs produce</code></a></li>
82
- <li><a href="#eggs-setup"><code>eggs setup</code></a></li>
82
+ <li><a href="#eggs-setup-install"><code>eggs setup install</code></a></li>
83
+ <li><a href="#eggs-setup-purge"><code>eggs setup purge</code></a></li>
83
84
  <li><a href="#eggs-status"><code>eggs status</code></a></li>
84
85
  <li><a href="#eggs-tools-clean"><code>eggs tools clean</code></a></li>
85
86
  <li><a href="#eggs-tools-repo"><code>eggs tools repo</code></a></li>
@@ -444,24 +445,35 @@ EXAMPLES
444
445
 
445
446
  sudo eggs produce --basename=colibri
446
447
  </code></pre>
447
- <h2><code>eggs setup</code></h2>
448
+ <h2><code>eggs setup install</code></h2>
448
449
  <p>Automatically check and install system prerequisites</p>
449
450
  <pre><code>USAGE
450
- $ eggs setup [-c] [-f]
451
+ $ eggs setup install
451
452
 
452
- FLAGS
453
- -c, --check check status only, do not install
454
- -f, --force force installation even if already installed
453
+ DESCRIPTION
454
+ Automatically check and install system prerequisites
455
+
456
+ EXAMPLES
457
+ $ eggs setup # this help
458
+
459
+ sudo eggs setup install # install native dependencies, autocomplete, man, etc
460
+
461
+ sudo eggs setup purge # purge all configurations, autocomplete, man, etc installed from penguins-eggs AppImage
462
+ </code></pre>
463
+ <h2><code>eggs setup purge</code></h2>
464
+ <p>Automatically check and install system prerequisites</p>
465
+ <pre><code>USAGE
466
+ $ eggs setup purge
455
467
 
456
468
  DESCRIPTION
457
469
  Automatically check and install system prerequisites
458
470
 
459
471
  EXAMPLES
460
- sudo eggs setup # install prerequisites
472
+ $ eggs setup # this help
461
473
 
462
- sudo eggs setup --check # check prerequisites presence
474
+ sudo eggs setup install # install native dependencies, autocomplete, man, etc
463
475
 
464
- sudo eggs setup --force # force prerequisites install
476
+ sudo eggs setup purge # purge all configurations, autocomplete, man, etc installed from penguins-eggs AppImage
465
477
  </code></pre>
466
478
  <h2><code>eggs status</code></h2>
467
479
  <p>informations about eggs status</p>
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "penguins-eggs",
3
3
  "shortName": "eggs",
4
4
  "description": "A remaster system tool, compatible with Almalinux, Alpine, Arch, Debian, Devuan, Fedora, Manjaro, Opensuse, Ubuntu and derivatives",
5
- "version": "25.11.21",
5
+ "version": "25.11.29",
6
6
  "author": "Piero Proietti",
7
7
  "bin": {
8
8
  "eggs": "./bin/run.js"
@@ -44,7 +44,7 @@
44
44
  "@types/js-yaml": "^4.0.9",
45
45
  "@types/mocha": "^10.0.8",
46
46
  "@types/mustache": "^4.2.6",
47
- "@types/netmask": "^2.0.5",
47
+ "@types/netmask": "^2.0.6",
48
48
  "@types/node": "^22.15.30",
49
49
  "@types/react": "^18.3.18",
50
50
  "@types/read": "^0.0.32",
@@ -52,13 +52,13 @@
52
52
  "@types/ws": "^8.18.1",
53
53
  "chai": "^6.2.1",
54
54
  "eslint": "^9.39.1",
55
- "eslint-config-oclif": "^6.0.118",
55
+ "eslint-config-oclif": "^6.0.119",
56
56
  "eslint-config-prettier": "^10.1.8",
57
- "glob": "^12.0.0",
57
+ "glob": "^13.0.0",
58
58
  "mocha": "^11.7.5",
59
- "oclif": "^4.22.47",
59
+ "oclif": "^4.22.50",
60
60
  "perrisbrewery": "^25.9.16",
61
- "prettier": "^3.6.2",
61
+ "prettier": "^3.7.2",
62
62
  "shx": "^0.4.0",
63
63
  "ts-node": "10.9.2",
64
64
  "ts-prune": "^0.10.3",
@@ -110,10 +110,9 @@
110
110
  "repository": "pieroproietti/penguins-eggs",
111
111
  "types": "dist/index.d.ts",
112
112
  "scripts": {
113
- "appimage": "pnpm build && ./scripts/appimage-build.sh",
114
- "appimage:install": "./scripts/appimage-install.sh",
113
+ "appimage": "pnpm build && ./appimage.sh",
115
114
  "build": "pnpm clean && shx rm -rf dist && tsc -p . && oclif manifest",
116
- "clean": "rm -rf build dist *.AppImage AppDir squashfs-root",
115
+ "clean": "rm -rf build dist *.AppImage AppDir",
117
116
  "deb": "pnpm build && pb deb --release $(cat ./release)",
118
117
  "format": "prettier --write \"+(src|test)/**/*.+(ts|js|json)\"",
119
118
  "lint": "eslint . --ext .ts",
package/scripts/_eggs CHANGED
@@ -58,6 +58,37 @@ _values "completions" \
58
58
  esac
59
59
  }
60
60
 
61
+ _eggs_setup() {
62
+ local context state state_descr line
63
+ typeset -A opt_args
64
+
65
+ _arguments -C "1: :->cmds" "*::arg:->args"
66
+
67
+ case "$state" in
68
+ cmds)
69
+ _values "completions" \
70
+ "install[Automatically check and install system prerequisites]" \
71
+ "purge[Automatically check and install system prerequisites]" \
72
+
73
+ ;;
74
+ args)
75
+ case $line[1] in
76
+ "install")
77
+ _arguments -S \
78
+ --help"[Show help for command]" \
79
+ "*: :_files"
80
+ ;;
81
+ "purge")
82
+ _arguments -S \
83
+ --help"[Show help for command]" \
84
+ "*: :_files"
85
+ ;;
86
+
87
+ esac
88
+ ;;
89
+ esac
90
+ }
91
+
61
92
  _eggs_tools() {
62
93
  local context state state_descr line
63
94
  typeset -A opt_args
@@ -191,6 +222,7 @@ _eggs() {
191
222
  cmds)
192
223
  _values "completions" \
193
224
  "export[export penguins-eggs AppImage to the destination host]" \
225
+ "setup[Automatically check and install system prerequisites]" \
194
226
  "tools[clean system log, apt, etc]" \
195
227
  "wardrobe[get warorobe]" \
196
228
  "adapt[adapt monitor resolution for VM only]" \
@@ -203,7 +235,6 @@ _eggs() {
203
235
  "love[the simplest way to get an egg!]" \
204
236
  "mom[ask help from mommy - TUI helper]" \
205
237
  "produce[produce a live image from your system]" \
206
- "setup[Automatically check and install system prerequisites]" \
207
238
  "status[informations about eggs status]" \
208
239
  "update[update the Penguins' eggs tool]" \
209
240
  "autocomplete[Display autocomplete installation instructions.]" \
@@ -216,6 +247,9 @@ _eggs() {
216
247
  export)
217
248
  _eggs_export
218
249
  ;;
250
+ setup)
251
+ _eggs_setup
252
+ ;;
219
253
  tools)
220
254
  _eggs_tools
221
255
  ;;
@@ -335,12 +369,6 @@ _arguments -S \
335
369
  "(-y --yolk)"{-y,--yolk}"[force yolk renew]" \
336
370
  --help"[Show help for command]" \
337
371
  "*: :_files" ;;
338
- setup)
339
- _arguments -S \
340
- "(-c --check)"{-c,--check}"[check status only, do not install]" \
341
- "(-f --force)"{-f,--force}"[force installation even if already installed]" \
342
- --help"[Show help for command]" \
343
- "*: :_files" ;;
344
372
  status)
345
373
  _arguments -S \
346
374
  "(-h --help)"{-h,--help}"[Show CLI help.]" \
package/scripts/eggs.bash CHANGED
@@ -25,7 +25,8 @@ krill --btrfs --chroot --crypted --domain --halt --help --ip --nointeractive --n
25
25
  love --help --verbose --hidden --nointeractive --clone --homecrypt --fullcrypt
26
26
  mom --help
27
27
  produce --addons --basename --clone --homecrypt --fullcrypt --excludes --help --hidden --kernel --links --max --noicon --nointeractive --pendrive --prefix --release --script --standard --theme --includeRootHome --verbose --yolk
28
- setup --check --force
28
+ setup:install
29
+ setup:purge
29
30
  status --help --verbose
30
31
  tools:clean --help --nointeractive --verbose
31
32
  tools:repo --add --help --nointeractive --remove --verbose