penguins-eggs 25.10.6 → 25.10.19
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 +51 -145
- package/README.md +3 -829
- package/addons/eggs/theme/livecd/isolinux.main.simple.cfg +3 -3
- package/conf/distros/trixie/calamares/modules/shellprocess@boot_deploy.yml +3 -4
- package/conf/love.yaml +1 -1
- package/dist/classes/distro.js +9 -2
- package/dist/classes/diversions.d.ts +1 -1
- package/dist/classes/diversions.js +27 -8
- package/dist/classes/incubation/incubator.d/archlinux.js +1 -0
- package/dist/classes/incubation/incubator.d/trixie.js +7 -10
- package/dist/classes/ovary.d/edit-live-fs.d.ts +1 -1
- package/dist/classes/ovary.d/edit-live-fs.js +1 -7
- package/dist/classes/ovary.d/fertilization.js +1 -0
- package/dist/classes/ovary.d/finished.js +1 -5
- package/dist/classes/ovary.d/initrd.d.ts +1 -1
- package/dist/classes/ovary.d/initrd.js +17 -19
- package/dist/classes/ovary.d/live-create-structure.js +1 -4
- package/dist/classes/ovary.d/luks-get-password.d.ts +12 -0
- package/dist/classes/ovary.d/luks-get-password.js +57 -0
- package/dist/classes/ovary.d/luks-home-support.d.ts +12 -0
- package/dist/classes/ovary.d/luks-home-support.js +75 -0
- package/dist/classes/ovary.d/luks-home.d.ts +15 -0
- package/dist/classes/ovary.d/luks-home.js +140 -0
- package/dist/classes/ovary.d/luks-root-bootstrap-builder.d.ts +11 -0
- package/dist/classes/ovary.d/luks-root-bootstrap-builder.js +45 -0
- package/dist/classes/ovary.d/luks-root.d.ts +15 -0
- package/dist/classes/ovary.d/luks-root.js +126 -0
- package/dist/classes/ovary.d/make-efi.js +1 -1
- package/dist/classes/ovary.d/make-squashfs.d.ts +1 -1
- package/dist/classes/ovary.d/make-squashfs.js +7 -3
- package/dist/classes/ovary.d/produce.d.ts +3 -3
- package/dist/classes/ovary.d/produce.js +76 -48
- package/dist/classes/ovary.d/syslinux.js +1 -1
- package/dist/classes/ovary.d/xorriso-command.d.ts +2 -2
- package/dist/classes/ovary.d/xorriso-command.js +27 -29
- package/dist/classes/ovary.d.ts +35 -16
- package/dist/classes/ovary.js +42 -16
- package/dist/classes/utils.d.ts +1 -0
- package/dist/classes/utils.js +3 -0
- package/dist/commands/config.d.ts +1 -1
- package/dist/commands/config.js +2 -2
- package/dist/commands/love.d.ts +3 -0
- package/dist/commands/love.js +40 -2
- package/dist/commands/produce.d.ts +3 -2
- package/dist/commands/produce.js +14 -17
- package/dist/commands/tools/{ppa.d.ts → repo.d.ts} +2 -2
- package/dist/commands/tools/{ppa.js → repo.js} +69 -67
- package/dracut/create-symlink +71 -0
- package/dracut/dracut-log.txt +3 -0
- package/dracut/dracut.conf.d/50-live.conf +24 -6
- package/dracut/dracut.conf.d/README.md +10 -0
- package/dracut/export +4 -0
- package/dracut/export-dracut-analysis +51 -0
- package/dracut/export-dracut-log +2 -0
- package/dracut/mkisofs +10 -0
- package/dracut/modules.d/00debug-shell/debug-hook.sh +13 -0
- package/dracut/modules.d/00debug-shell/module-setup.sh +20 -0
- package/dracut/modules.d/90block/README.md +7 -0
- package/dracut/modules.d/90block/block-cmdline.sh +3 -0
- package/dracut/modules.d/90block/module-setup.sh +15 -0
- package/dracut/modules.d/95iso-scan/README.md +3 -0
- package/dracut/modules.d/95iso-scan/iso-scan-fallback.sh +12 -0
- package/dracut/modules.d/95iso-scan/iso-scan.sh +92 -0
- package/dracut/modules.d/95iso-scan/module-setup.sh +18 -0
- package/dracut/modules.d/95luks-loop/README.md +9 -0
- package/dracut/modules.d/95luks-loop/luks-loop.sh +90 -0
- package/dracut/modules.d/95luks-loop/module-setup.sh +17 -0
- package/dracut/renew-initramfs +17 -0
- package/dracut/sbin2bin +10 -0
- package/dracut/update-dracut-conf-d +2 -0
- package/dracut/update-dracut-modules +62 -0
- package/manpages/doc/man/eggs.1.gz +0 -0
- package/manpages/doc/man/eggs.html +7 -661
- package/package.json +9 -8
- package/perrisbrewery/template/dependencies.yaml +6 -5
- package/scripts/_eggs +16 -31
- package/scripts/eggs.bash +4 -6
- package/scripts/luks-root-bootstrap-create.sh +235 -0
- package/scripts/luks-root-unlock.sh +172 -0
- package/scripts/mount-encrypted-home.sh +223 -0
- package/dist/commands/syncfrom.d.ts +0 -45
- package/dist/commands/syncfrom.js +0 -152
- package/dist/commands/syncto.d.ts +0 -40
- package/dist/commands/syncto.js +0 -175
package/dist/classes/ovary.d.ts
CHANGED
|
@@ -28,18 +28,25 @@ import { makeDotDisk } from './ovary.d/make-dot-disk.js';
|
|
|
28
28
|
import { kernelCopy } from './ovary.d/kernel-copy.js';
|
|
29
29
|
import { liveCreateStructure } from './ovary.d/live-create-structure.js';
|
|
30
30
|
import { finished } from './ovary.d/finished.js';
|
|
31
|
+
import { luksGetPassword } from './ovary.d/luks-get-password.js';
|
|
32
|
+
import { luksHome } from './ovary.d/luks-home.js';
|
|
33
|
+
import { installHomecryptSupport } from './ovary.d/luks-home-support.js';
|
|
34
|
+
import { luksRoot } from './ovary.d/luks-root.js';
|
|
35
|
+
import { createBootstrapFilesystem } from './ovary.d/luks-root-bootstrap-builder.js';
|
|
31
36
|
/**
|
|
32
37
|
* Ovary:
|
|
33
38
|
*/
|
|
34
39
|
export default class Ovary {
|
|
35
40
|
cliAutologin: CliAutologin;
|
|
36
|
-
clone: boolean;
|
|
37
41
|
compression: string;
|
|
38
|
-
|
|
42
|
+
clone: boolean;
|
|
43
|
+
homecrypt: boolean;
|
|
44
|
+
fullcrypt: boolean;
|
|
39
45
|
echo: {};
|
|
40
46
|
familyId: string;
|
|
41
47
|
distroId: string;
|
|
42
48
|
distroLike: string;
|
|
49
|
+
distroLliveMediumPath: string;
|
|
43
50
|
genisoimage: boolean;
|
|
44
51
|
incubator: Incubator;
|
|
45
52
|
settings: Settings;
|
|
@@ -57,31 +64,43 @@ export default class Ovary {
|
|
|
57
64
|
dotMnt: string;
|
|
58
65
|
dotOverlay: IWorkDir;
|
|
59
66
|
dotLivefs: string;
|
|
67
|
+
luksUuid: string;
|
|
68
|
+
luksName: string;
|
|
69
|
+
luksMappedName: string;
|
|
70
|
+
luksMountpoint: string;
|
|
71
|
+
luksFile: string;
|
|
72
|
+
luksDevice: string;
|
|
73
|
+
luksPassword: string;
|
|
60
74
|
fertilization: typeof fertilization;
|
|
61
75
|
produce: typeof produce;
|
|
76
|
+
addExclusion: typeof addExclusion;
|
|
62
77
|
bindLiveFs: typeof bindLiveFs;
|
|
63
78
|
bindVfs: typeof bindVfs;
|
|
64
|
-
editLiveFs: typeof editLiveFs;
|
|
65
|
-
makeEfi: typeof makeEfi;
|
|
66
|
-
makeSquashfs: typeof makeSquashfs;
|
|
67
|
-
addExclusion: typeof addExclusion;
|
|
68
|
-
xorrisoCommand: typeof xorrisoCommand;
|
|
69
|
-
createXdgAutostart: typeof createXdgAutostart;
|
|
70
79
|
copied: typeof copied;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
80
|
+
createXdgAutostart: typeof createXdgAutostart;
|
|
81
|
+
editLiveFs: typeof editLiveFs;
|
|
82
|
+
luksGetPassword: typeof luksGetPassword;
|
|
83
|
+
luksHome: typeof luksHome;
|
|
84
|
+
installHomecryptSupport: typeof installHomecryptSupport;
|
|
85
|
+
luksRoot: typeof luksRoot;
|
|
86
|
+
createBootstrapFilesystem: typeof createBootstrapFilesystem;
|
|
87
|
+
finished: typeof finished;
|
|
74
88
|
initrdAlpine: typeof initrdAlpine;
|
|
75
89
|
initrdArch: typeof initrdArch;
|
|
76
90
|
initrdDebian: typeof initrdDebian;
|
|
77
91
|
initrdDracut: typeof initrdDracut;
|
|
78
|
-
|
|
92
|
+
kernelCopy: typeof kernelCopy;
|
|
93
|
+
liveCreateStructure: typeof liveCreateStructure;
|
|
94
|
+
makeDotDisk: typeof makeDotDisk;
|
|
95
|
+
makeEfi: typeof makeEfi;
|
|
96
|
+
makeIso: typeof makeIso;
|
|
97
|
+
makeSquashfs: typeof makeSquashfs;
|
|
98
|
+
merged: typeof merged;
|
|
99
|
+
mergedAndOverlay: typeof mergedAndOverlay;
|
|
79
100
|
syslinux: typeof syslinux;
|
|
80
101
|
uBindLiveFs: typeof uBindLiveFs;
|
|
81
102
|
ubindVfs: typeof ubindVfs;
|
|
103
|
+
userCreateLive: typeof userCreateLive;
|
|
82
104
|
usersRemove: typeof usersRemove;
|
|
83
|
-
|
|
84
|
-
kernelCopy: typeof kernelCopy;
|
|
85
|
-
liveCreateStructure: typeof liveCreateStructure;
|
|
86
|
-
finished: typeof finished;
|
|
105
|
+
xorrisoCommand: typeof xorrisoCommand;
|
|
87
106
|
}
|
package/dist/classes/ovary.js
CHANGED
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* email: piero.proietti@gmail.com
|
|
6
6
|
* license: MIT
|
|
7
7
|
*/
|
|
8
|
+
// backup
|
|
8
9
|
import path from 'node:path';
|
|
10
|
+
// libraries
|
|
9
11
|
import CliAutologin from './cli-autologin.js';
|
|
10
12
|
// Methods
|
|
11
13
|
import { fertilization } from './ovary.d/fertilization.js';
|
|
@@ -27,6 +29,13 @@ import { makeDotDisk } from './ovary.d/make-dot-disk.js';
|
|
|
27
29
|
import { kernelCopy } from './ovary.d/kernel-copy.js';
|
|
28
30
|
import { liveCreateStructure } from './ovary.d/live-create-structure.js';
|
|
29
31
|
import { finished } from './ovary.d/finished.js';
|
|
32
|
+
import { luksGetPassword } from './ovary.d/luks-get-password.js';
|
|
33
|
+
import { luksHome } from './ovary.d/luks-home.js';
|
|
34
|
+
import { installHomecryptSupport } from './ovary.d/luks-home-support.js';
|
|
35
|
+
import { luksRoot } from './ovary.d/luks-root.js';
|
|
36
|
+
import { createBootstrapFilesystem } from './ovary.d/luks-root-bootstrap-builder.js';
|
|
37
|
+
// Functions
|
|
38
|
+
// import initramfs from '../krill/classes/sequence.d/initramfs.js'
|
|
30
39
|
// _dirname
|
|
31
40
|
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
32
41
|
/**
|
|
@@ -34,13 +43,15 @@ const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
|
34
43
|
*/
|
|
35
44
|
export default class Ovary {
|
|
36
45
|
cliAutologin = new CliAutologin();
|
|
37
|
-
clone = false;
|
|
38
46
|
compression = '';
|
|
39
|
-
|
|
47
|
+
clone = false;
|
|
48
|
+
homecrypt = false;
|
|
49
|
+
fullcrypt = false;
|
|
40
50
|
echo = {};
|
|
41
51
|
familyId = '';
|
|
42
52
|
distroId = '';
|
|
43
53
|
distroLike = '';
|
|
54
|
+
distroLliveMediumPath = '';
|
|
44
55
|
genisoimage = false;
|
|
45
56
|
incubator = {};
|
|
46
57
|
settings = {};
|
|
@@ -58,33 +69,48 @@ export default class Ovary {
|
|
|
58
69
|
dotMnt = '';
|
|
59
70
|
dotOverlay = {};
|
|
60
71
|
dotLivefs = '';
|
|
72
|
+
luksUuid = '';
|
|
73
|
+
luksName = '';
|
|
74
|
+
luksMappedName = '';
|
|
75
|
+
luksMountpoint = '';
|
|
76
|
+
luksFile = '';
|
|
77
|
+
luksDevice = '';
|
|
78
|
+
luksPassword = '';
|
|
61
79
|
// I put all methods on ovary.d
|
|
62
80
|
fertilization = fertilization;
|
|
63
81
|
produce = produce;
|
|
64
82
|
// called only inside Ovary
|
|
83
|
+
addExclusion = addExclusion;
|
|
65
84
|
bindLiveFs = bindLiveFs;
|
|
66
85
|
bindVfs = bindVfs;
|
|
67
|
-
editLiveFs = editLiveFs;
|
|
68
|
-
makeEfi = makeEfi;
|
|
69
|
-
makeSquashfs = makeSquashfs;
|
|
70
|
-
addExclusion = addExclusion;
|
|
71
|
-
xorrisoCommand = xorrisoCommand;
|
|
72
|
-
createXdgAutostart = createXdgAutostart;
|
|
73
86
|
copied = copied;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
87
|
+
createXdgAutostart = createXdgAutostart;
|
|
88
|
+
editLiveFs = editLiveFs;
|
|
89
|
+
// luks
|
|
90
|
+
luksGetPassword = luksGetPassword;
|
|
91
|
+
// luksHome
|
|
92
|
+
luksHome = luksHome;
|
|
93
|
+
installHomecryptSupport = installHomecryptSupport;
|
|
94
|
+
// luksRoot
|
|
95
|
+
luksRoot = luksRoot;
|
|
96
|
+
createBootstrapFilesystem = createBootstrapFilesystem;
|
|
97
|
+
finished = finished;
|
|
77
98
|
initrdAlpine = initrdAlpine;
|
|
78
99
|
initrdArch = initrdArch;
|
|
79
100
|
initrdDebian = initrdDebian;
|
|
80
101
|
initrdDracut = initrdDracut;
|
|
81
|
-
|
|
102
|
+
kernelCopy = kernelCopy;
|
|
103
|
+
liveCreateStructure = liveCreateStructure;
|
|
104
|
+
makeDotDisk = makeDotDisk;
|
|
105
|
+
makeEfi = makeEfi;
|
|
106
|
+
makeIso = makeIso;
|
|
107
|
+
makeSquashfs = makeSquashfs;
|
|
108
|
+
merged = merged;
|
|
109
|
+
mergedAndOverlay = mergedAndOverlay;
|
|
82
110
|
syslinux = syslinux;
|
|
83
111
|
uBindLiveFs = uBindLiveFs;
|
|
84
112
|
ubindVfs = ubindVfs;
|
|
113
|
+
userCreateLive = userCreateLive;
|
|
85
114
|
usersRemove = usersRemove;
|
|
86
|
-
|
|
87
|
-
kernelCopy = kernelCopy;
|
|
88
|
-
liveCreateStructure = liveCreateStructure;
|
|
89
|
-
finished = finished;
|
|
115
|
+
xorrisoCommand = xorrisoCommand;
|
|
90
116
|
}
|
package/dist/classes/utils.d.ts
CHANGED
package/dist/classes/utils.js
CHANGED
|
@@ -177,6 +177,9 @@ export default class Utils {
|
|
|
177
177
|
static warning(msg = '') {
|
|
178
178
|
console.log(pjson.shortName + ' >>> ' + chalk.cyanBright(msg) + '.');
|
|
179
179
|
}
|
|
180
|
+
static success(msg = '') {
|
|
181
|
+
console.log(pjson.shortName + ' >>> ' + chalk.greenBright(msg) + '.');
|
|
182
|
+
}
|
|
180
183
|
static error(msg = '') {
|
|
181
184
|
console.error(pjson.shortName + ' >>> ' + chalk.bgMagentaBright(chalk.whiteBright(msg)) + '.');
|
|
182
185
|
}
|
|
@@ -30,6 +30,6 @@ export default class Config extends Command {
|
|
|
30
30
|
*
|
|
31
31
|
* @param verbose
|
|
32
32
|
*/
|
|
33
|
-
static thatWeNeed(nointeractive?: boolean, verbose?: boolean,
|
|
33
|
+
static thatWeNeed(nointeractive?: boolean, verbose?: boolean, homecrypt?: boolean): Promise<IInstall>;
|
|
34
34
|
run(): Promise<void>;
|
|
35
35
|
}
|
package/dist/commands/config.js
CHANGED
|
@@ -69,12 +69,12 @@ export default class Config extends Command {
|
|
|
69
69
|
*
|
|
70
70
|
* @param verbose
|
|
71
71
|
*/
|
|
72
|
-
static async thatWeNeed(nointeractive = false, verbose = false,
|
|
72
|
+
static async thatWeNeed(nointeractive = false, verbose = false, homecrypt = false) {
|
|
73
73
|
const i = {};
|
|
74
74
|
i.distroTemplate = !Pacman.distroTemplateCheck();
|
|
75
75
|
i.addEfi = !Pacman.isUefi();
|
|
76
76
|
i.calamares = false;
|
|
77
|
-
if (!
|
|
77
|
+
if (!homecrypt &&
|
|
78
78
|
!Pacman.calamaresExists() &&
|
|
79
79
|
Pacman.isInstalledGui() &&
|
|
80
80
|
Pacman.isCalamaresAvailable()) {
|
package/dist/commands/love.d.ts
CHANGED
|
@@ -16,6 +16,9 @@ export default class Love extends Command {
|
|
|
16
16
|
help: import("@oclif/core/interfaces").BooleanFlag<void>;
|
|
17
17
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
18
18
|
nointeractive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
19
|
+
clone: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
20
|
+
homecrypt: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
21
|
+
fullcrypt: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
19
22
|
};
|
|
20
23
|
run(): Promise<void>;
|
|
21
24
|
}
|
package/dist/commands/love.js
CHANGED
|
@@ -23,6 +23,9 @@ export default class Love extends Command {
|
|
|
23
23
|
help: Flags.help({ char: 'h' }),
|
|
24
24
|
verbose: Flags.boolean({ char: 'v' }),
|
|
25
25
|
nointeractive: Flags.boolean({ char: 'n', description: 'no user interaction' }),
|
|
26
|
+
clone: Flags.boolean({ char: 'c', description: 'clone (uncrypted)' }),
|
|
27
|
+
homecrypt: Flags.boolean({ char: 'k', description: 'clone crypted home' }),
|
|
28
|
+
fullcrypt: Flags.boolean({ char: 'f', description: 'clone crypted full' }),
|
|
26
29
|
};
|
|
27
30
|
async run() {
|
|
28
31
|
const { args, flags } = await this.parse(Love);
|
|
@@ -32,6 +35,31 @@ export default class Love extends Command {
|
|
|
32
35
|
verbose = true;
|
|
33
36
|
flagVerbose = '--verbose';
|
|
34
37
|
}
|
|
38
|
+
let clone = false;
|
|
39
|
+
if (flags.clone) {
|
|
40
|
+
clone = true;
|
|
41
|
+
}
|
|
42
|
+
let homecrypt = false;
|
|
43
|
+
if (flags.homecrypt) {
|
|
44
|
+
clone = false;
|
|
45
|
+
homecrypt = true;
|
|
46
|
+
}
|
|
47
|
+
let fullcrypt = false;
|
|
48
|
+
if (flags.fullcrypt) {
|
|
49
|
+
fullcrypt = true;
|
|
50
|
+
clone = false;
|
|
51
|
+
homecrypt = false;
|
|
52
|
+
}
|
|
53
|
+
let flagClone = '';
|
|
54
|
+
if (clone) {
|
|
55
|
+
flagClone = "--clone";
|
|
56
|
+
}
|
|
57
|
+
else if (homecrypt) {
|
|
58
|
+
flagClone = "--homecrypt";
|
|
59
|
+
}
|
|
60
|
+
else if (fullcrypt) {
|
|
61
|
+
flagClone = "--fullcrypt";
|
|
62
|
+
}
|
|
35
63
|
let nointeractive = false;
|
|
36
64
|
let flagNointeractive = '';
|
|
37
65
|
if (flags.nointeractive) {
|
|
@@ -58,12 +86,22 @@ export default class Love extends Command {
|
|
|
58
86
|
console.log('The following commands will be executed:');
|
|
59
87
|
console.log();
|
|
60
88
|
for (const cmd of cmds) {
|
|
61
|
-
|
|
89
|
+
if (cmd.includes('produce')) {
|
|
90
|
+
console.log(`- ${cmdSudo} ${cmd} ${flagVerbose} ${flagClone} ${flagNointeractive}`);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
console.log(`- ${cmdSudo} ${cmd} ${flagVerbose} ${flagNointeractive}`);
|
|
94
|
+
}
|
|
62
95
|
}
|
|
63
96
|
console.log();
|
|
64
97
|
if (nointeractive || await Utils.customConfirm()) {
|
|
65
98
|
for (const cmd of cmds) {
|
|
66
|
-
|
|
99
|
+
if (cmd.includes('produce')) {
|
|
100
|
+
await exec(`${cmdSudo} ${cmd} ${flagVerbose} ${flagClone} ${flagNointeractive}`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
await exec(`${cmdSudo} ${cmd} ${flagVerbose} ${flagNointeractive}`);
|
|
104
|
+
}
|
|
67
105
|
}
|
|
68
106
|
}
|
|
69
107
|
else {
|
|
@@ -13,7 +13,8 @@ export default class Produce extends Command {
|
|
|
13
13
|
addons: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
14
|
basename: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
15
|
clone: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
-
|
|
16
|
+
homecrypt: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
17
|
+
fullcrypt: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
17
18
|
excludes: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
19
|
help: import("@oclif/core/interfaces").BooleanFlag<void>;
|
|
19
20
|
kernel: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -27,7 +28,7 @@ export default class Produce extends Command {
|
|
|
27
28
|
script: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
28
29
|
standard: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
29
30
|
theme: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
30
|
-
|
|
31
|
+
includeRoot: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
31
32
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
32
33
|
yolk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
33
34
|
};
|
package/dist/commands/produce.js
CHANGED
|
@@ -19,25 +19,21 @@ 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
21
|
'sudo eggs produce # zstd fast compression',
|
|
22
|
-
'sudo eggs produce --standard # xz compression',
|
|
23
|
-
'sudo eggs produce --max # xz max compression',
|
|
24
22
|
'sudo eggs produce --pendrive # zstd compression optimized pendrive',
|
|
25
|
-
'sudo eggs produce --clone # clone',
|
|
26
|
-
'sudo eggs produce --
|
|
23
|
+
'sudo eggs produce --clone # clear clone (unencrypted)',
|
|
24
|
+
'sudo eggs produce --homecrypt # clone crypted home (all inside /home is cypted)',
|
|
25
|
+
'sudo eggs produce --fullcrypt # clone crypted full (entire system is crypted)',
|
|
27
26
|
'sudo eggs produce --basename=colibri',
|
|
28
|
-
'sudo eggs produce --theme lastos',
|
|
29
|
-
'sudo eggs produce --excludes static # you can customize it',
|
|
30
|
-
'sudo eggs produce --excludes homes # exclude /home/*',
|
|
31
|
-
'sudo eggs produce --excludes home # exclude ~/*'
|
|
32
27
|
];
|
|
33
28
|
static flags = {
|
|
34
29
|
addons: Flags.string({ description: 'addons to be used: adapt, pve, rsupport', multiple: true }),
|
|
35
30
|
basename: Flags.string({ description: 'basename' }),
|
|
36
|
-
clone: Flags.boolean({ char: 'c', description: 'clone' }),
|
|
37
|
-
|
|
31
|
+
clone: Flags.boolean({ char: 'c', description: 'clone (uncrypted)' }),
|
|
32
|
+
homecrypt: Flags.boolean({ char: 'k', description: 'clone crypted home' }),
|
|
33
|
+
fullcrypt: Flags.boolean({ char: 'f', description: 'clone crypted full' }),
|
|
38
34
|
excludes: Flags.string({ description: 'use: static, homes, home', multiple: true }),
|
|
39
35
|
help: Flags.help({ char: 'h' }),
|
|
40
|
-
kernel: Flags.string({ char: '
|
|
36
|
+
kernel: Flags.string({ char: 'K', description: 'kernel version' }),
|
|
41
37
|
links: Flags.string({ description: 'desktop links', multiple: true }),
|
|
42
38
|
max: Flags.boolean({ char: 'm', description: 'max compression: xz -Xbcj ...' }),
|
|
43
39
|
noicon: Flags.boolean({ char: 'N', description: 'no icon eggs on desktop' }),
|
|
@@ -48,7 +44,7 @@ export default class Produce extends Command {
|
|
|
48
44
|
script: Flags.boolean({ char: 's', description: 'script mode. Generate scripts to manage iso build' }),
|
|
49
45
|
standard: Flags.boolean({ char: 'S', description: 'standard compression: xz -b 1M' }),
|
|
50
46
|
theme: Flags.string({ description: 'theme for livecd, calamares branding and partitions' }),
|
|
51
|
-
|
|
47
|
+
includeRoot: Flags.boolean({ char: 'i', description: 'folder /root is included on live' }),
|
|
52
48
|
verbose: Flags.boolean({ char: 'v', description: 'verbose' }),
|
|
53
49
|
yolk: Flags.boolean({ char: 'y', description: 'force yolk renew' })
|
|
54
50
|
};
|
|
@@ -137,15 +133,16 @@ export default class Produce extends Command {
|
|
|
137
133
|
compression = compressors.standard();
|
|
138
134
|
}
|
|
139
135
|
const { release } = flags;
|
|
140
|
-
const { cryptedclone } = flags;
|
|
141
136
|
const { clone } = flags;
|
|
137
|
+
const { homecrypt } = flags;
|
|
138
|
+
const { fullcrypt } = flags;
|
|
142
139
|
const { verbose } = flags;
|
|
143
140
|
const scriptOnly = flags.script;
|
|
144
141
|
const yolkRenew = flags.yolk;
|
|
145
142
|
const { nointeractive } = flags;
|
|
146
143
|
const { noicon } = flags;
|
|
147
|
-
// if clone or
|
|
148
|
-
const
|
|
144
|
+
// if clone or homecrypt includeRoot = true
|
|
145
|
+
const includeRoot = flags.includeRoot || clone || homecrypt;
|
|
149
146
|
let { kernel } = flags;
|
|
150
147
|
if (kernel === undefined) {
|
|
151
148
|
kernel = '';
|
|
@@ -186,7 +183,7 @@ export default class Produce extends Command {
|
|
|
186
183
|
process.exit();
|
|
187
184
|
}
|
|
188
185
|
}
|
|
189
|
-
const i = await Config.thatWeNeed(nointeractive, verbose,
|
|
186
|
+
const i = await Config.thatWeNeed(nointeractive, verbose, homecrypt);
|
|
190
187
|
if ((i.needUpdate || i.configurationInstall || i.configurationRefresh || i.distroTemplate)) {
|
|
191
188
|
await Config.install(i, nointeractive, verbose);
|
|
192
189
|
}
|
|
@@ -210,7 +207,7 @@ export default class Produce extends Command {
|
|
|
210
207
|
Utils.warning(message);
|
|
211
208
|
}
|
|
212
209
|
if (await ovary.fertilization(prefix, basename, theme, compression, !nointeractive)) {
|
|
213
|
-
await ovary.produce(kernel, clone,
|
|
210
|
+
await ovary.produce(kernel, clone, homecrypt, fullcrypt, scriptOnly, yolkRenew, release, myAddons, myLinks, excludes, nointeractive, noicon, includeRoot, verbose);
|
|
214
211
|
ovary.finished(scriptOnly);
|
|
215
212
|
}
|
|
216
213
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ./src/commands/tools/
|
|
2
|
+
* ./src/commands/tools/repo.ts
|
|
3
3
|
* penguins-eggs v.25.7.x / ecmascript 2020
|
|
4
4
|
* author: Piero Proietti
|
|
5
5
|
* email: piero.proietti@gmail.com
|
|
@@ -14,7 +14,7 @@ import { Command } from '@oclif/core';
|
|
|
14
14
|
/**
|
|
15
15
|
*
|
|
16
16
|
*/
|
|
17
|
-
export default class
|
|
17
|
+
export default class Repo extends Command {
|
|
18
18
|
static description: string;
|
|
19
19
|
static examples: string[];
|
|
20
20
|
static flags: {
|