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.
- package/.oclif.manifest.json +53 -41
- package/README.md +146 -64
- package/README.pdf +21400 -3491
- package/addons/eggs/theme/livecd/full.grub.main.cfg +39 -4
- package/addons/eggs/theme/livecd/full.isolinux.main.cfg +47 -4
- package/bin/run.js +11 -0
- package/conf/derivatives.yaml +2 -1
- package/dist/appimage/dependency-manager.d.ts +31 -0
- package/dist/appimage/dependency-manager.js +292 -0
- package/dist/appimage/first-run-check.js +3 -3
- package/dist/bin/run.js +11 -0
- package/dist/classes/cli-autologin.js +1 -1
- package/dist/classes/daddy.js +11 -11
- package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +7 -0
- package/dist/classes/incubation/fisherman-helper/initcpio.js +7 -0
- package/dist/classes/incubation/fisherman.js +0 -2
- package/dist/classes/network.d.ts +1 -1
- package/dist/classes/ovary.d/edit-live-fs.d.ts +1 -1
- package/dist/classes/ovary.d/edit-live-fs.js +129 -93
- package/dist/classes/ovary.d/fertilization.js +1 -1
- package/dist/classes/ovary.d/xorriso-command.js +1 -5
- package/dist/classes/pacman.d.ts +21 -7
- package/dist/classes/pacman.js +53 -32
- package/dist/classes/utils.d.ts +1 -5
- package/dist/classes/utils.js +15 -12
- package/dist/commands/config.js +3 -14
- package/dist/commands/cuckoo.js +1 -1
- package/dist/commands/{setup.d.ts → setup/install.d.ts} +1 -5
- package/dist/commands/setup/install.js +71 -0
- package/dist/commands/setup/purge.d.ts +17 -0
- package/dist/commands/setup/purge.js +71 -0
- package/dist/commands/update.d.ts +15 -0
- package/dist/commands/update.js +74 -6
- package/dist/krill/components/title.js +4 -4
- package/dist/lib/utils.js +0 -19
- package/manpages/doc/man/eggs.1.gz +0 -0
- package/manpages/doc/man/eggs.html +29 -17
- package/package.json +8 -9
- package/scripts/_eggs +35 -7
- package/scripts/eggs.bash +2 -1
- package/dist/appimage/prerequisites.d.ts +0 -34
- package/dist/appimage/prerequisites.js +0 -350
- package/dist/commands/setup.js +0 -90
- package/scripts/appimage-build.sh +0 -152
- package/scripts/appimage-install.sh +0 -43
package/dist/commands/config.js
CHANGED
|
@@ -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 (!
|
|
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
|
|
99
|
-
await exec('rm /etc/penguins-eggs.d
|
|
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) {
|
package/dist/commands/cuckoo.js
CHANGED
|
@@ -6,12 +6,8 @@
|
|
|
6
6
|
* license: MIT
|
|
7
7
|
*/
|
|
8
8
|
import { Command } from '@oclif/core';
|
|
9
|
-
export default class
|
|
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
|
}
|
package/dist/commands/update.js
CHANGED
|
@@ -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 '
|
|
61
|
-
|
|
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', '
|
|
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/
|
|
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 = `
|
|
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 = "
|
|
17
|
+
if (!Utils.isAppImage()) {
|
|
18
|
+
type = "native";
|
|
19
19
|
}
|
|
20
20
|
if (title === "")
|
|
21
21
|
title = `${pjson.name}`;
|
|
22
|
-
let green = ` ${
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
451
|
+
$ eggs setup install
|
|
451
452
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
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
|
-
|
|
472
|
+
$ eggs setup # this help
|
|
461
473
|
|
|
462
|
-
sudo eggs setup
|
|
474
|
+
sudo eggs setup install # install native dependencies, autocomplete, man, etc
|
|
463
475
|
|
|
464
|
-
sudo eggs setup
|
|
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.
|
|
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.
|
|
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.
|
|
55
|
+
"eslint-config-oclif": "^6.0.119",
|
|
56
56
|
"eslint-config-prettier": "^10.1.8",
|
|
57
|
-
"glob": "^
|
|
57
|
+
"glob": "^13.0.0",
|
|
58
58
|
"mocha": "^11.7.5",
|
|
59
|
-
"oclif": "^4.22.
|
|
59
|
+
"oclif": "^4.22.50",
|
|
60
60
|
"perrisbrewery": "^25.9.16",
|
|
61
|
-
"prettier": "^3.
|
|
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 && ./
|
|
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
|
|
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
|
|
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
|