penguins-eggs 10.0.10 → 10.0.15
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 +18 -8
- package/README.md +153 -127
- package/conf/derivatives.yaml +2 -5
- package/conf/distros/noble/README.md +3 -0
- package/conf/exclude.list.d/{home.list → homes.list} +1 -1
- package/conf/exclude.list.d/master.list +4 -5
- package/conf/exclude.list.d/usr.list +2 -41
- package/conf/exclude.list.d/var.list +10 -2
- package/dist/classes/daddy.js +7 -13
- package/dist/classes/distro.js +6 -0
- package/dist/classes/incubation/incubator.js +5 -0
- package/dist/classes/ovary.d.ts +3 -2
- package/dist/classes/ovary.js +70 -35
- package/dist/classes/pacman.js +10 -9
- package/dist/commands/produce.d.ts +1 -0
- package/dist/commands/produce.js +19 -20
- package/dist/interfaces/i-excludes.d.ts +2 -2
- package/manpages/doc/man/eggs.1.gz +0 -0
- package/manpages/doc/man/eggs.html +18 -11
- package/package.json +2 -2
- package/scripts/_eggs +8 -8
- package/scripts/eggs.bash +2 -2
package/conf/derivatives.yaml
CHANGED
|
@@ -100,15 +100,12 @@
|
|
|
100
100
|
- victoria # Linux Mint
|
|
101
101
|
- virginia # LinuxMint
|
|
102
102
|
|
|
103
|
-
- id:
|
|
103
|
+
- id: noble
|
|
104
104
|
distroLike: Ubuntu
|
|
105
105
|
family: debian
|
|
106
106
|
ids:
|
|
107
|
-
- devel # Rhino
|
|
108
|
-
- lunar # Ubuntu lunar 23.04
|
|
109
|
-
- mantic # Ubuntu lunar 23.10
|
|
110
|
-
- noble # Ubuntu noble
|
|
111
107
|
- wilma # Linux Mint 22
|
|
108
|
+
- devel # Rhino
|
|
112
109
|
|
|
113
110
|
#
|
|
114
111
|
# ARCH
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
######################################################################################################
|
|
2
|
-
#
|
|
2
|
+
# homes: will be used just on:
|
|
3
3
|
# * --clone included in exclude.list
|
|
4
4
|
# * --cryptedclone used by syncto --excludes (automatically passed from ovary)
|
|
5
5
|
#
|
|
@@ -1,43 +1,4 @@
|
|
|
1
1
|
######################################################################################################
|
|
2
2
|
# usr: use this exclusions, attention this can lead to lost something
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
usr/bin/x86_64-w64-mingw32-gcc-12-win32
|
|
6
|
-
usr/bin/x86_64-w64-mingw32-gcc-ar-win32
|
|
7
|
-
usr/bin/x86_64-w64-mingw32-gcc-nm-win32
|
|
8
|
-
usr/bin/x86_64-w64-mingw32-gcc-ranlib-win32
|
|
9
|
-
usr/bin/x86_64-w64-mingw32-gcc-win32
|
|
10
|
-
usr/bin/x86_64-w64-mingw32-gcov-dump-win32
|
|
11
|
-
usr/bin/x86_64-w64-mingw32-gcov-tool-win32
|
|
12
|
-
usr/bin/x86_64-w64-mingw32-gcov-win32
|
|
13
|
-
usr/bin/x86_64-w64-mingw32-lto-dump-win32
|
|
14
|
-
usr/i686-w64-mingw32/*
|
|
15
|
-
usr/include/gtkmm-3.0/*
|
|
16
|
-
usr/lib/gcc/i686-w64-mingw32/*
|
|
17
|
-
usr/lib/gcc/x86_64-w64-mingw32/*
|
|
18
|
-
usr/lib/i386-linux-gnu/*
|
|
19
|
-
usr/lib/i386-linux-gnu/libLLVM-12.so
|
|
20
|
-
usr/lib/i386-linux-gnu/libLLVM-12.so.1
|
|
21
|
-
usr/lib/llvm-11/*
|
|
22
|
-
usr/lib/llvm-9/*
|
|
23
|
-
usr/lib/mono/*
|
|
24
|
-
usr/lib/x86_64-linux-gnu/libLLVM-10.so
|
|
25
|
-
usr/lib/x86_64-linux-gnu/libLLVM-10.so.1
|
|
26
|
-
usr/lib/x86_64-linux-gnu/libLLVM-11.so
|
|
27
|
-
usr/lib/x86_64-linux-gnu/libLLVM-11.so.1
|
|
28
|
-
usr/lib/x86_64-linux-gnu/libLLVM-12.so
|
|
29
|
-
usr/lib/x86_64-linux-gnu/libLLVM-12.so.1
|
|
30
|
-
usr/lib/x86_64-linux-gnu/libLLVM-14.so
|
|
31
|
-
usr/lib/x86_64-linux-gnu/libLLVM-14.so.1
|
|
32
|
-
usr/lib/x86_64-linux-gnu/libLLVM-9.so
|
|
33
|
-
usr/lib/x86_64-linux-gnu/libLLVM-9.so.1
|
|
34
|
-
usr/lib/x86_64-linux-gnu/openblas-pthread/*
|
|
35
|
-
usr/share/dict/*
|
|
36
|
-
usr/share/doc/*
|
|
37
|
-
usr/share/eclipse/*
|
|
38
|
-
usr/share/gimp/2.0/help/en/images/*
|
|
39
|
-
usr/share/gtk-doc/html/*
|
|
40
|
-
usr/share/krita/*
|
|
41
|
-
usr/share/texmf/*
|
|
42
|
-
usr/share/xemacs21/*
|
|
43
|
-
usr/x86_64-w64-mingw32/*
|
|
3
|
+
|
|
4
|
+
# this list is intentionally blank
|
|
@@ -4,8 +4,14 @@ var/backups/*
|
|
|
4
4
|
var/cache/*
|
|
5
5
|
var/lib/aide/*
|
|
6
6
|
var/lib/apt/*~
|
|
7
|
+
var/lib/apt/cache/*
|
|
7
8
|
var/lib/apt/cdroms.list
|
|
8
|
-
var/lib/apt/
|
|
9
|
+
var/lib/apt/daily_lock
|
|
10
|
+
var/lib/apt/extended_states
|
|
11
|
+
var/lib/apt/listchanges.db
|
|
12
|
+
var/lib/apt/lists/
|
|
13
|
+
var/lib/apt/mirrors/
|
|
14
|
+
var/lib/apt/periodic/
|
|
9
15
|
var/lib/aptitude/*.old
|
|
10
16
|
var/lib/cache/*
|
|
11
17
|
var/lib/dbus/machine-id
|
|
@@ -13,9 +19,11 @@ var/lib/dhcp/*
|
|
|
13
19
|
var/lib/dkms/wireguard/*
|
|
14
20
|
var/lib/dpkg/*~old
|
|
15
21
|
var/lib/gems/2.7.0/cache/*
|
|
16
|
-
#var/lib/snapd/*
|
|
17
22
|
var/log/*.log
|
|
18
23
|
var/log/*.log.?
|
|
19
24
|
var/log/*/*
|
|
20
25
|
var/spool/*
|
|
21
26
|
var/tmp/*
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
#var/lib/snapd/*
|
package/dist/classes/daddy.js
CHANGED
|
@@ -25,10 +25,8 @@ export default class Daddy {
|
|
|
25
25
|
* @param verbose
|
|
26
26
|
*/
|
|
27
27
|
async helpMe(reset = false, isCustom = false, fileCustom = '', verbose = false) {
|
|
28
|
-
console.log("reset: ", reset);
|
|
29
|
-
console.log("isCustom: ", isCustom);
|
|
30
28
|
if (isCustom) {
|
|
31
|
-
console.log("
|
|
29
|
+
console.log("using custom file: ", fileCustom);
|
|
32
30
|
}
|
|
33
31
|
// Controllo configurazione
|
|
34
32
|
if (!Pacman.configurationCheck()) {
|
|
@@ -47,16 +45,17 @@ export default class Daddy {
|
|
|
47
45
|
if (await this.settings.load()) {
|
|
48
46
|
config = this.settings.config;
|
|
49
47
|
config.compression = 'fast';
|
|
50
|
-
if (reset) {
|
|
51
|
-
// Reset configuration
|
|
48
|
+
if (reset || isCustom) {
|
|
52
49
|
if (config.snapshot_prefix === '') {
|
|
53
50
|
config.snapshot_prefix = Utils.snapshotPrefix(this.settings.distro.distroId, this.settings.distro.codenameId);
|
|
54
51
|
}
|
|
55
52
|
jsonConf = JSON.stringify(config);
|
|
56
|
-
console.log("reset");
|
|
57
53
|
}
|
|
58
|
-
else
|
|
59
|
-
|
|
54
|
+
else {
|
|
55
|
+
jsonConf = await this.editConfig(config);
|
|
56
|
+
}
|
|
57
|
+
// Custom configuration
|
|
58
|
+
if (isCustom) {
|
|
60
59
|
const conf = fs.readFileSync(fileCustom, 'utf8');
|
|
61
60
|
const confCustom = yaml.load(conf);
|
|
62
61
|
config.snapshot_basename = confCustom.snapshot_basename;
|
|
@@ -67,11 +66,6 @@ export default class Daddy {
|
|
|
67
66
|
config.theme = confCustom.theme;
|
|
68
67
|
jsonConf = JSON.stringify(config);
|
|
69
68
|
}
|
|
70
|
-
else {
|
|
71
|
-
// default configuration
|
|
72
|
-
jsonConf = await this.editConfig(config);
|
|
73
|
-
console.log("edit");
|
|
74
|
-
}
|
|
75
69
|
// Save new configuration
|
|
76
70
|
const confNew = JSON.parse(jsonConf);
|
|
77
71
|
config.snapshot_basename = confNew.snapshot_basename;
|
package/dist/classes/distro.js
CHANGED
|
@@ -185,6 +185,12 @@ class Distro {
|
|
|
185
185
|
this.codenameLikeId = 'jammy';
|
|
186
186
|
break;
|
|
187
187
|
}
|
|
188
|
+
case 'noble': {
|
|
189
|
+
// Ubuntu 24.04 noble LTS
|
|
190
|
+
this.distroLike = 'Ubuntu';
|
|
191
|
+
this.codenameLikeId = 'noble';
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
188
194
|
case 'devel': {
|
|
189
195
|
// Ubuntu rhino
|
|
190
196
|
this.distroLike = 'Ubuntu';
|
|
@@ -128,6 +128,11 @@ export default class Incubator {
|
|
|
128
128
|
await jammy.create();
|
|
129
129
|
break;
|
|
130
130
|
}
|
|
131
|
+
case 'noble': {
|
|
132
|
+
const noble = new Focal(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
|
|
133
|
+
await noble.create();
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
131
136
|
case 'devel': {
|
|
132
137
|
const devel = new Focal(this.installer, this.remix, this.distro, this.user_opt, release, this.theme, this.isClone, this.verbose);
|
|
133
138
|
await devel.create();
|
package/dist/classes/ovary.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export default class Ovary {
|
|
|
28
28
|
theme: string;
|
|
29
29
|
volid: string;
|
|
30
30
|
toNull: string;
|
|
31
|
+
genisoimage: boolean;
|
|
31
32
|
verbose: boolean;
|
|
32
33
|
/**
|
|
33
34
|
* Add or remove exclusion
|
|
@@ -158,7 +159,7 @@ export default class Ovary {
|
|
|
158
159
|
* @param unsecure
|
|
159
160
|
* @param verbose
|
|
160
161
|
*/
|
|
161
|
-
produce(clone: boolean | undefined, cryptedclone: boolean | undefined, scriptOnly: boolean | undefined, yolkRenew: boolean | undefined, release: boolean | undefined, myAddons: IAddons, myLinks: string[], excludes: IExcludes, nointeractive?: boolean, noicons?: boolean, unsecure?: boolean, verbose?: boolean): Promise<void>;
|
|
162
|
+
produce(clone: boolean | undefined, cryptedclone: boolean | undefined, scriptOnly: boolean | undefined, yolkRenew: boolean | undefined, release: boolean | undefined, myAddons: IAddons, myLinks: string[], excludes: IExcludes, nointeractive?: boolean, noicons?: boolean, unsecure?: boolean, udf?: boolean, verbose?: boolean): Promise<void>;
|
|
162
163
|
/**
|
|
163
164
|
* syslinux
|
|
164
165
|
*/
|
|
@@ -190,7 +191,7 @@ export default class Ovary {
|
|
|
190
191
|
* @param cryptedclone
|
|
191
192
|
* @returns cmd 4 mkiso
|
|
192
193
|
*/
|
|
193
|
-
xorrisoCommand(clone?: boolean, cryptedclone?: boolean): string
|
|
194
|
+
xorrisoCommand(clone?: boolean, cryptedclone?: boolean, udf?: boolean): Promise<string>;
|
|
194
195
|
/**
|
|
195
196
|
* Creazione link desktop per lxde
|
|
196
197
|
* @param name
|
package/dist/classes/ovary.js
CHANGED
|
@@ -52,6 +52,7 @@ export default class Ovary {
|
|
|
52
52
|
theme = '';
|
|
53
53
|
volid = '';
|
|
54
54
|
toNull = '';
|
|
55
|
+
genisoimage = false;
|
|
55
56
|
verbose = false;
|
|
56
57
|
/**
|
|
57
58
|
* Add or remove exclusion
|
|
@@ -340,7 +341,10 @@ export default class Ovary {
|
|
|
340
341
|
let text = '';
|
|
341
342
|
text += '#!/bin/sh\n';
|
|
342
343
|
text += 'DESKTOP=$(xdg-user-dir DESKTOP)\n';
|
|
343
|
-
text += '
|
|
344
|
+
text += 'while [ ! -d "$DESKTOP" ]; do\n';
|
|
345
|
+
text += ' DESKTOP=$(xdg-user-dir DESKTOP)\n';
|
|
346
|
+
text += ' sleep 1\n';
|
|
347
|
+
text += 'done\n';
|
|
344
348
|
text += `cp /usr/share/applications/${installerUrl} "$DESKTOP"\n`;
|
|
345
349
|
if (Pacman.packageIsInstalled('lxde-core')) {
|
|
346
350
|
if (!noicons) {
|
|
@@ -683,6 +687,9 @@ export default class Ovary {
|
|
|
683
687
|
console.log();
|
|
684
688
|
console.log('Remember, on liveCD user = ' + chalk.cyanBright(this.settings.config.user_opt) + '/' + chalk.cyanBright(this.settings.config.user_opt_passwd));
|
|
685
689
|
console.log(' root = ' + chalk.cyanBright('root') + '/' + chalk.cyanBright(this.settings.config.root_passwd));
|
|
690
|
+
if (this.genisoimage) {
|
|
691
|
+
console.log(`Note: format UDF, generated by ${chalk.cyanBright('genisoimage')}`);
|
|
692
|
+
}
|
|
686
693
|
}
|
|
687
694
|
/**
|
|
688
695
|
* initrdArch()
|
|
@@ -1268,7 +1275,7 @@ export default class Ovary {
|
|
|
1268
1275
|
* @param unsecure
|
|
1269
1276
|
* @param verbose
|
|
1270
1277
|
*/
|
|
1271
|
-
async produce(clone = false, cryptedclone = false, scriptOnly = false, yolkRenew = false, release = false, myAddons, myLinks, excludes, nointeractive = false, noicons = false, unsecure = false, verbose = false) {
|
|
1278
|
+
async produce(clone = false, cryptedclone = false, scriptOnly = false, yolkRenew = false, release = false, myAddons, myLinks, excludes, nointeractive = false, noicons = false, unsecure = false, udf = false, verbose = false) {
|
|
1272
1279
|
this.verbose = verbose;
|
|
1273
1280
|
this.echo = Utils.setEcho(verbose);
|
|
1274
1281
|
if (this.verbose) {
|
|
@@ -1354,39 +1361,44 @@ export default class Ovary {
|
|
|
1354
1361
|
Utils.warning("eggs will REMOVE users and users' data from live");
|
|
1355
1362
|
}
|
|
1356
1363
|
/**
|
|
1357
|
-
*
|
|
1364
|
+
* exclude.list
|
|
1358
1365
|
*/
|
|
1359
|
-
if (!
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1366
|
+
if (!excludes.static) {
|
|
1367
|
+
/**
|
|
1368
|
+
* create exclude.list if not exists
|
|
1369
|
+
*/
|
|
1370
|
+
if (!fs.existsSync('/etc/penguins-eggs/exclude.list')) {
|
|
1371
|
+
const excludeListTemplateDir = '/etc/penguins-eggs.d/exclude.list.d/';
|
|
1372
|
+
const excludeListTemplate = excludeListTemplateDir + 'master.list';
|
|
1373
|
+
if (!fs.existsSync(excludeListTemplate)) {
|
|
1374
|
+
Utils.warning('Cannot find: ' + excludeListTemplate);
|
|
1375
|
+
process.exit(1);
|
|
1376
|
+
}
|
|
1377
|
+
let excludeUsr = '';
|
|
1378
|
+
let excludeVar = '';
|
|
1379
|
+
let excludeHomes = '';
|
|
1380
|
+
let excludeHome = '';
|
|
1381
|
+
if (excludes.usr) {
|
|
1382
|
+
excludeUsr = fs.readFileSync(`${excludeListTemplateDir}usr.list`, 'utf8');
|
|
1383
|
+
}
|
|
1384
|
+
if (excludes.var) {
|
|
1385
|
+
excludeVar = fs.readFileSync(`${excludeListTemplateDir}var.list`, 'utf8');
|
|
1386
|
+
}
|
|
1387
|
+
if (excludes.homes) {
|
|
1388
|
+
excludeHomes = fs.readFileSync(`${excludeListTemplateDir}homes.list`, 'utf8');
|
|
1389
|
+
}
|
|
1390
|
+
if (excludes.home) {
|
|
1391
|
+
excludeHome = `home/${await Utils.getPrimaryUser()}/*`;
|
|
1392
|
+
}
|
|
1393
|
+
const view = {
|
|
1394
|
+
usr_list: excludeUsr,
|
|
1395
|
+
var_list: excludeVar,
|
|
1396
|
+
homes_list: excludeHomes,
|
|
1397
|
+
home_list: excludeHome,
|
|
1398
|
+
};
|
|
1399
|
+
const template = fs.readFileSync(excludeListTemplate, 'utf8');
|
|
1400
|
+
fs.writeFileSync(this.settings.config.snapshot_excludes, mustache.render(template, view));
|
|
1381
1401
|
}
|
|
1382
|
-
const view = {
|
|
1383
|
-
home_list: excludeHome,
|
|
1384
|
-
mine_list: excludeMine,
|
|
1385
|
-
usr_list: excludeUsr,
|
|
1386
|
-
var_list: excludeVar
|
|
1387
|
-
};
|
|
1388
|
-
const template = fs.readFileSync(excludeListTemplate, 'utf8');
|
|
1389
|
-
fs.writeFileSync(this.settings.config.snapshot_excludes, mustache.render(template, view));
|
|
1390
1402
|
}
|
|
1391
1403
|
/**
|
|
1392
1404
|
* NOTE: reCreate = false
|
|
@@ -1455,7 +1467,7 @@ export default class Ovary {
|
|
|
1455
1467
|
Utils.warning(`moving ${luksFile} in ${this.nest}iso/live`);
|
|
1456
1468
|
await exec(`mv ${luksFile} ${this.nest}iso/live`, this.echo);
|
|
1457
1469
|
}
|
|
1458
|
-
const mkIsofsCmd = this.xorrisoCommand(clone, cryptedclone).replaceAll(/\s\s+/g, ' ');
|
|
1470
|
+
const mkIsofsCmd = (await this.xorrisoCommand(clone, cryptedclone, udf)).replaceAll(/\s\s+/g, ' ');
|
|
1459
1471
|
this.makeDotDisk(this.volid, mksquashfsCmd, mkIsofsCmd);
|
|
1460
1472
|
/**
|
|
1461
1473
|
* AntiX/MX LINUX
|
|
@@ -1636,7 +1648,7 @@ export default class Ovary {
|
|
|
1636
1648
|
* @param cryptedclone
|
|
1637
1649
|
* @returns cmd 4 mkiso
|
|
1638
1650
|
*/
|
|
1639
|
-
xorrisoCommand(clone = false, cryptedclone = false) {
|
|
1651
|
+
async xorrisoCommand(clone = false, cryptedclone = false, udf = false) {
|
|
1640
1652
|
if (this.verbose) {
|
|
1641
1653
|
console.log('Ovary: xorrisoCommand');
|
|
1642
1654
|
}
|
|
@@ -1683,6 +1695,29 @@ export default class Ovary {
|
|
|
1683
1695
|
uefi_isohybridGptBasdat = '-isohybrid-gpt-basdat';
|
|
1684
1696
|
uefi_noEmulBoot = '-no-emul-boot';
|
|
1685
1697
|
}
|
|
1698
|
+
if (udf) {
|
|
1699
|
+
if (Pacman.packageIsInstalled('genisoimage')) {
|
|
1700
|
+
this.genisoimage = true;
|
|
1701
|
+
command = `genisoimage \
|
|
1702
|
+
-iso-level 3 \
|
|
1703
|
+
-allow-limited-size \
|
|
1704
|
+
-joliet-long \
|
|
1705
|
+
-r \
|
|
1706
|
+
-V "V3.0" \
|
|
1707
|
+
-cache-inodes \
|
|
1708
|
+
-J \
|
|
1709
|
+
-l \
|
|
1710
|
+
-b isolinux/isolinux.bin \
|
|
1711
|
+
-c isolinux/boot.cat \
|
|
1712
|
+
-no-emul-boot \
|
|
1713
|
+
-boot-load-size 4 \
|
|
1714
|
+
-boot-info-table \
|
|
1715
|
+
-eltorito-alt-boot \
|
|
1716
|
+
-e boot/grub/efiboot.img \
|
|
1717
|
+
-o ${output} ${this.settings.iso_work}`;
|
|
1718
|
+
return command;
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1686
1721
|
// xorriso
|
|
1687
1722
|
command = `xorriso -as mkisofs \
|
|
1688
1723
|
-J \
|
package/dist/classes/pacman.js
CHANGED
|
@@ -384,11 +384,11 @@ export default class Pacman {
|
|
|
384
384
|
await exec(`cp -r ${buster}/calamares/modules/unpackfs.yml ${dest}/calamares/modules/unpackfs.yml`, echo);
|
|
385
385
|
await exec(`cp -r ${buster}/calamares/modules/displaymanager.yml ${dest}/calamares/modules/displaymanager.yml`, echo);
|
|
386
386
|
/**
|
|
387
|
-
* Ubuntu
|
|
387
|
+
* Ubuntu 22.04 jammy: eredita da focal e buster
|
|
388
388
|
*/
|
|
389
389
|
}
|
|
390
|
-
else if (this.distro().codenameLikeId === '
|
|
391
|
-
const dest = '/etc/penguins-eggs.d/distros/
|
|
390
|
+
else if (this.distro().codenameLikeId === 'jammy') {
|
|
391
|
+
const dest = '/etc/penguins-eggs.d/distros/jammy';
|
|
392
392
|
const focal = `${rootPen}/conf/distros/focal/*`;
|
|
393
393
|
await exec(`cp -r ${focal} ${dest}`, echo);
|
|
394
394
|
await exec(`cp -r ${buster}/calamares/calamares-modules/cleanup ${dest}/calamares/calamares-modules/cleanup`, echo);
|
|
@@ -399,11 +399,12 @@ export default class Pacman {
|
|
|
399
399
|
await exec(`cp -r ${buster}/calamares/modules/unpackfs.yml ${dest}/calamares/modules/unpackfs.yml`, echo);
|
|
400
400
|
await exec(`cp -r ${buster}/calamares/modules/displaymanager.yml ${dest}/calamares/modules/displaymanager.yml`, echo);
|
|
401
401
|
/**
|
|
402
|
-
* Ubuntu
|
|
402
|
+
* Ubuntu noble: eredita da devel e buster
|
|
403
|
+
*
|
|
403
404
|
*/
|
|
404
405
|
}
|
|
405
|
-
else if (this.distro().codenameLikeId === '
|
|
406
|
-
const dest = '/etc/penguins-eggs.d/distros/
|
|
406
|
+
else if (this.distro().codenameLikeId === 'noble') {
|
|
407
|
+
const dest = '/etc/penguins-eggs.d/distros/noble';
|
|
407
408
|
const focal = `${rootPen}/conf/distros/focal/*`;
|
|
408
409
|
await exec(`cp -r ${focal} ${dest}`, echo);
|
|
409
410
|
await exec(`cp -r ${buster}/calamares/calamares-modules/cleanup ${dest}/calamares/calamares-modules/cleanup`, echo);
|
|
@@ -414,14 +415,14 @@ export default class Pacman {
|
|
|
414
415
|
await exec(`cp -r ${buster}/calamares/modules/unpackfs.yml ${dest}/calamares/modules/unpackfs.yml`, echo);
|
|
415
416
|
await exec(`cp -r ${buster}/calamares/modules/displaymanager.yml ${dest}/calamares/modules/displaymanager.yml`, echo);
|
|
416
417
|
/**
|
|
417
|
-
* Ubuntu
|
|
418
|
+
* Ubuntu rhino: eredita da devel e buster
|
|
418
419
|
*
|
|
419
420
|
*/
|
|
420
421
|
}
|
|
421
422
|
else if (this.distro().codenameLikeId === 'devel') {
|
|
422
423
|
const dest = '/etc/penguins-eggs.d/distros/devel';
|
|
423
|
-
const
|
|
424
|
-
await exec(`cp -r ${
|
|
424
|
+
const devel = `${rootPen}/conf/distros/devel/*`;
|
|
425
|
+
await exec(`cp -r ${devel} ${dest}`, echo);
|
|
425
426
|
await exec(`cp -r ${buster}/calamares/calamares-modules/cleanup ${dest}/calamares/calamares-modules/cleanup`, echo);
|
|
426
427
|
await exec(`cp -r ${buster}/calamares/calamares-modules/sources-yolk ${dest}/calamares/calamares-modules/sources-yolk`, echo);
|
|
427
428
|
await exec(`cp -r ${buster}/calamares/calamares-modules/sources-yolk-undo ${dest}/calamares/calamares-modules/sources-yolk-undo`, echo);
|
|
@@ -28,6 +28,7 @@ export default class Produce extends Command {
|
|
|
28
28
|
theme: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
29
29
|
unsecure: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
30
30
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
31
|
+
udf: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
31
32
|
yolk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
32
33
|
};
|
|
33
34
|
run(): Promise<void>;
|
package/dist/commands/produce.js
CHANGED
|
@@ -18,20 +18,23 @@ const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
|
18
18
|
export default class Produce extends Command {
|
|
19
19
|
static description = 'produce a live image from your system whithout your data';
|
|
20
20
|
static examples = [
|
|
21
|
-
'sudo eggs produce',
|
|
22
|
-
'sudo eggs produce --max',
|
|
23
|
-
'sudo eggs produce --pendrive',
|
|
24
|
-
'sudo eggs produce --clone',
|
|
25
|
-
'sudo eggs produce --cryptedclone',
|
|
21
|
+
'sudo eggs produce # fast compression',
|
|
22
|
+
'sudo eggs produce --max # max compression',
|
|
23
|
+
'sudo eggs produce --pendrive # compression optomized pendrive',
|
|
24
|
+
'sudo eggs produce --clone # clone',
|
|
25
|
+
'sudo eggs produce --cryptedclone # crypted clone',
|
|
26
26
|
'sudo eggs produce --basename=colibri',
|
|
27
|
-
'sudo eggs produce --
|
|
27
|
+
'sudo eggs produce --theme lastos',
|
|
28
|
+
'sudo eggs produce --excludes static # you can customize it',
|
|
29
|
+
'sudo eggs produce --excludes homes # exclude /home/*',
|
|
30
|
+
'sudo eggs produce --excludes home # exclude ~/*',
|
|
28
31
|
];
|
|
29
32
|
static flags = {
|
|
30
33
|
addons: Flags.string({ description: 'addons to be used: adapt, ichoice, pve, rsupport', multiple: true }),
|
|
31
34
|
basename: Flags.string({ description: 'basename' }),
|
|
32
35
|
clone: Flags.boolean({ char: 'c', description: 'clone' }),
|
|
33
36
|
cryptedclone: Flags.boolean({ char: 'C', description: 'crypted clone' }),
|
|
34
|
-
excludes: Flags.string({ description: 'use:
|
|
37
|
+
excludes: Flags.string({ description: 'use: static, homes, home', multiple: true }),
|
|
35
38
|
help: Flags.help({ char: 'h' }),
|
|
36
39
|
links: Flags.string({ description: 'desktop links', multiple: true }),
|
|
37
40
|
max: Flags.boolean({ char: 'm', description: 'max compression: xz -Xbcj ...' }),
|
|
@@ -45,6 +48,7 @@ export default class Produce extends Command {
|
|
|
45
48
|
theme: Flags.string({ description: 'theme for livecd, calamares branding and partitions' }),
|
|
46
49
|
unsecure: Flags.boolean({ char: 'u', description: '/root contents are included on live' }),
|
|
47
50
|
verbose: Flags.boolean({ char: 'v', description: 'verbose' }),
|
|
51
|
+
udf: Flags.boolean({ char: 'U', description: 'udf, create iso UDF format using genisoimage' }),
|
|
48
52
|
yolk: Flags.boolean({ char: 'y', description: 'force yolk renew' }),
|
|
49
53
|
};
|
|
50
54
|
async run() {
|
|
@@ -95,27 +99,21 @@ export default class Produce extends Command {
|
|
|
95
99
|
*/
|
|
96
100
|
// excludes
|
|
97
101
|
const excludes = {};
|
|
102
|
+
excludes.usr = true;
|
|
103
|
+
excludes.var = true;
|
|
98
104
|
excludes.static = false;
|
|
105
|
+
excludes.homes = false;
|
|
99
106
|
excludes.home = false;
|
|
100
|
-
excludes.mine = false;
|
|
101
|
-
excludes.usr = false;
|
|
102
|
-
excludes.var = false;
|
|
103
107
|
if (flags.excludes) {
|
|
104
108
|
if (flags.excludes.includes('static')) {
|
|
105
109
|
excludes.static = true;
|
|
106
110
|
}
|
|
111
|
+
if (flags.excludes.includes('homes')) {
|
|
112
|
+
excludes.homes = true;
|
|
113
|
+
}
|
|
107
114
|
if (flags.excludes.includes('home')) {
|
|
108
115
|
excludes.home = true;
|
|
109
116
|
}
|
|
110
|
-
if (flags.excludes.includes('mine')) {
|
|
111
|
-
excludes.mine = true;
|
|
112
|
-
}
|
|
113
|
-
if (flags.excludes.includes('usr')) {
|
|
114
|
-
excludes.usr = true;
|
|
115
|
-
}
|
|
116
|
-
if (flags.excludes.includes('var')) {
|
|
117
|
-
excludes.var = true;
|
|
118
|
-
}
|
|
119
117
|
}
|
|
120
118
|
let prefix = '';
|
|
121
119
|
if (flags.prefix !== undefined) {
|
|
@@ -145,6 +143,7 @@ export default class Produce extends Command {
|
|
|
145
143
|
const yolkRenew = flags.yolk;
|
|
146
144
|
const { nointeractive } = flags;
|
|
147
145
|
const { noicon } = flags;
|
|
146
|
+
const { udf } = flags;
|
|
148
147
|
// if clone or cryptedclone unsecure = true
|
|
149
148
|
const unsecure = flags.unsecure || clone || cryptedclone;
|
|
150
149
|
/**
|
|
@@ -191,7 +190,7 @@ export default class Produce extends Command {
|
|
|
191
190
|
const ovary = new Ovary();
|
|
192
191
|
Utils.warning('Produce an egg...');
|
|
193
192
|
if (await ovary.fertilization(prefix, basename, theme, compression, !nointeractive)) {
|
|
194
|
-
await ovary.produce(clone, cryptedclone, scriptOnly, yolkRenew, release, myAddons, myLinks, excludes, nointeractive, noicon, unsecure, verbose);
|
|
193
|
+
await ovary.produce(clone, cryptedclone, scriptOnly, yolkRenew, release, myAddons, myLinks, excludes, nointeractive, noicon, unsecure, udf, verbose);
|
|
195
194
|
ovary.finished(scriptOnly);
|
|
196
195
|
}
|
|
197
196
|
}
|
|
Binary file
|
|
@@ -6,10 +6,10 @@
|
|
|
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 v10.0.
|
|
9
|
+
<h1>eggs(1) -- the reproductive system of penguins: eggs v10.0.15</h1>
|
|
10
10
|
<h1>SYNOPSIS</h1>
|
|
11
11
|
<p>Install Debian families (debian/devuan/ubuntu)</p>
|
|
12
|
-
<pre><code>$ sudo dpkg -i penguins-eggs_10.0.
|
|
12
|
+
<pre><code>$ sudo dpkg -i penguins-eggs_10.0.15-bionic-1_amd64.deb
|
|
13
13
|
</code></pre>
|
|
14
14
|
<p>Install Arch families (Arch, manjaro Linux)</p>
|
|
15
15
|
<p>Arch from AUR</p>
|
|
@@ -30,7 +30,7 @@ $ makepkg -si
|
|
|
30
30
|
<h1>USAGE</h1>
|
|
31
31
|
<pre><code>$ eggs (-v|--version|version)
|
|
32
32
|
|
|
33
|
-
penguins-eggs/10.0.
|
|
33
|
+
penguins-eggs/10.0.15
|
|
34
34
|
$ eggs --help [COMMAND]
|
|
35
35
|
|
|
36
36
|
USAGE
|
|
@@ -382,12 +382,13 @@ EXAMPLES
|
|
|
382
382
|
<p>produce a live image from your system whithout your data</p>
|
|
383
383
|
<pre><code>USAGE
|
|
384
384
|
$ eggs produce [--addons <value>...] [--basename <value>] [-c] [-C] [--excludes <value>...] [-h] [--links
|
|
385
|
-
<value>...] [-m] [-N] [-n] [-p] [-P <value>] [--release] [-s] [-f] [--theme <value>] [-u] [-v] [-y]
|
|
385
|
+
<value>...] [-m] [-N] [-n] [-p] [-P <value>] [--release] [-s] [-f] [--theme <value>] [-u] [-v] [-U] [-y]
|
|
386
386
|
|
|
387
387
|
FLAGS
|
|
388
388
|
-C, --cryptedclone crypted clone
|
|
389
389
|
-N, --noicon no icon eggs on desktop
|
|
390
390
|
-P, --prefix=<value> prefix
|
|
391
|
+
-U, --udf udf, create iso UDF format using genisoimage
|
|
391
392
|
-c, --clone clone
|
|
392
393
|
-f, --standard standard compression: xz -b 1M
|
|
393
394
|
-h, --help Show CLI help.
|
|
@@ -400,7 +401,7 @@ FLAGS
|
|
|
400
401
|
-y, --yolk force yolk renew
|
|
401
402
|
--addons=<value>... addons to be used: adapt, ichoice, pve, rsupport
|
|
402
403
|
--basename=<value> basename
|
|
403
|
-
--excludes=<value>... use:
|
|
404
|
+
--excludes=<value>... use: static, homes, home
|
|
404
405
|
--links=<value>... desktop links
|
|
405
406
|
--release release: remove penguins-eggs, calamares and dependencies after installation
|
|
406
407
|
--theme=<value> theme for livecd, calamares branding and partitions
|
|
@@ -409,19 +410,25 @@ DESCRIPTION
|
|
|
409
410
|
produce a live image from your system whithout your data
|
|
410
411
|
|
|
411
412
|
EXAMPLES
|
|
412
|
-
sudo eggs produce
|
|
413
|
+
sudo eggs produce # fast compression
|
|
413
414
|
|
|
414
|
-
sudo eggs produce --max
|
|
415
|
+
sudo eggs produce --max # max compression
|
|
415
416
|
|
|
416
|
-
sudo eggs produce --pendrive
|
|
417
|
+
sudo eggs produce --pendrive # compression optomized pendrive
|
|
417
418
|
|
|
418
|
-
sudo eggs produce --clone
|
|
419
|
+
sudo eggs produce --clone # clone
|
|
419
420
|
|
|
420
|
-
sudo eggs produce --cryptedclone
|
|
421
|
+
sudo eggs produce --cryptedclone # crypted clone
|
|
421
422
|
|
|
422
423
|
sudo eggs produce --basename=colibri
|
|
423
424
|
|
|
424
|
-
sudo eggs produce --
|
|
425
|
+
sudo eggs produce --theme lastos
|
|
426
|
+
|
|
427
|
+
sudo eggs produce --excludes static # you can customize it
|
|
428
|
+
|
|
429
|
+
sudo eggs produce --excludes homes # exclude /home/*
|
|
430
|
+
|
|
431
|
+
sudo eggs produce --excludes home # exclude ~/*
|
|
425
432
|
</code></pre>
|
|
426
433
|
<h2><code>eggs status</code></h2>
|
|
427
434
|
<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 Arch, Debian, Devuan, Ubuntu and others",
|
|
5
|
-
"version": "10.0.
|
|
5
|
+
"version": "10.0.15",
|
|
6
6
|
"author": "Piero Proietti",
|
|
7
7
|
"bin": {
|
|
8
8
|
"eggs": "./bin/run.js"
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"eslint-config-prettier": "^9.1.0",
|
|
49
49
|
"mocha": "^10.4.0",
|
|
50
50
|
"oclif": "^4.13.8",
|
|
51
|
-
"perrisbrewery": "^
|
|
51
|
+
"perrisbrewery": "^10",
|
|
52
52
|
"prettier": "^3.3.2",
|
|
53
53
|
"shx": "^0.3.4",
|
|
54
54
|
"ts-node": "^10.9.2",
|