penguins-eggs 9.3.23 → 9.3.25
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 +1 -1
- package/README.md +30 -31
- package/dist/classes/incubation/fisherman.js +3 -6
- package/dist/classes/ovary.js +52 -31
- package/dist/classes/tools.js +1 -2
- package/dist/classes/utils.js +1 -1
- package/dist/commands/export/iso.js +0 -5
- package/dist/commands/produce.js +15 -17
- package/dist/commands/syncfrom.js +8 -8
- package/dist/commands/syncto.js +2 -2
- package/dist/krill/krill-sequence.js +126 -113
- package/dist/krill/modules/locale-cfg.js +2 -1
- package/dist/krill/modules/locale.js +1 -1
- package/dist/krill/modules/m-keyboard.js +1 -1
- package/package.json +1 -1
- package/scripts/_eggs +51 -52
- package/scripts/eggs.bash +16 -16
- package/scripts/mom.sh +198 -8
- package/scripts/includes/common.sh +0 -59
- package/scripts/includes/easybashgui-debug +0 -146
- package/scripts/includes/easydialog-legacy +0 -163
- package/scripts/old-mom-cli.sh +0 -403
package/dist/commands/produce.js
CHANGED
|
@@ -58,18 +58,15 @@ class Produce extends core_1.Command {
|
|
|
58
58
|
}
|
|
59
59
|
const compressors = new compressors_1.default();
|
|
60
60
|
await compressors.populate();
|
|
61
|
-
let compression = compressors.
|
|
61
|
+
let compression = compressors.fast();
|
|
62
62
|
if (flags.max) {
|
|
63
63
|
compression = compressors.max();
|
|
64
64
|
}
|
|
65
|
-
else if (flags.
|
|
66
|
-
compression = compressors.
|
|
65
|
+
else if (flags.standard) {
|
|
66
|
+
compression = compressors.normal();
|
|
67
67
|
}
|
|
68
68
|
const release = flags.release;
|
|
69
|
-
|
|
70
|
-
// compression = compressors.max()
|
|
71
|
-
// }
|
|
72
|
-
const backup = flags.backup;
|
|
69
|
+
const cryptedclone = flags.cryptedclone;
|
|
73
70
|
const clone = flags.clone;
|
|
74
71
|
const verbose = flags.verbose;
|
|
75
72
|
const scriptOnly = flags.script;
|
|
@@ -91,7 +88,7 @@ class Produce extends core_1.Command {
|
|
|
91
88
|
}
|
|
92
89
|
}
|
|
93
90
|
}
|
|
94
|
-
const i = await config_1.default.thatWeNeed(nointeractive, verbose,
|
|
91
|
+
const i = await config_1.default.thatWeNeed(nointeractive, verbose, cryptedclone);
|
|
95
92
|
if ((i.needApt || i.configurationInstall || i.configurationRefresh || i.distroTemplate) && (await utils_1.default.customConfirm('Select yes to continue...'))) {
|
|
96
93
|
await config_1.default.install(i, verbose);
|
|
97
94
|
}
|
|
@@ -114,7 +111,7 @@ class Produce extends core_1.Command {
|
|
|
114
111
|
const ovary = new ovary_1.default();
|
|
115
112
|
utils_1.default.warning('Produce an egg...');
|
|
116
113
|
if (await ovary.fertilization(prefix, basename, theme, compression, !nointeractive)) {
|
|
117
|
-
await ovary.produce(
|
|
114
|
+
await ovary.produce(clone, cryptedclone, scriptOnly, yolkRenew, release, myAddons, nointeractive, verbose);
|
|
118
115
|
ovary.finished(scriptOnly);
|
|
119
116
|
}
|
|
120
117
|
}
|
|
@@ -126,16 +123,16 @@ class Produce extends core_1.Command {
|
|
|
126
123
|
exports.default = Produce;
|
|
127
124
|
Produce.flags = {
|
|
128
125
|
addons: core_1.Flags.string({ multiple: true, description: 'addons to be used: adapt, ichoice, pve, rsupport' }),
|
|
129
|
-
backup: core_1.Flags.boolean({ char: 'b', description: 'backup mode (CRYPTED)' }),
|
|
130
126
|
basename: core_1.Flags.string({ description: 'basename' }),
|
|
131
|
-
clone: core_1.Flags.boolean({ char: 'c', description: 'clone
|
|
132
|
-
|
|
127
|
+
clone: core_1.Flags.boolean({ char: 'c', description: 'clone' }),
|
|
128
|
+
cryptedclone: core_1.Flags.boolean({ char: 'C', description: 'crypted clone' }),
|
|
133
129
|
help: core_1.Flags.help({ char: 'h' }),
|
|
134
130
|
max: core_1.Flags.boolean({ char: 'm', description: 'max compression' }),
|
|
135
131
|
nointeractive: core_1.Flags.boolean({ char: 'n', description: 'don\'t ask for user interctions' }),
|
|
136
132
|
prefix: core_1.Flags.string({ char: 'p', description: 'prefix' }),
|
|
137
133
|
release: core_1.Flags.boolean({ description: 'release: max compression, remove penguins-eggs and calamares after installation' }),
|
|
138
134
|
script: core_1.Flags.boolean({ char: 's', description: 'script mode. Generate scripts to manage iso build' }),
|
|
135
|
+
standard: core_1.Flags.boolean({ char: 'f', description: 'standard compression' }),
|
|
139
136
|
theme: core_1.Flags.string({ description: 'theme for livecd, calamares branding and partitions' }),
|
|
140
137
|
verbose: core_1.Flags.boolean({ char: 'v', description: 'verbose' }),
|
|
141
138
|
yolk: core_1.Flags.boolean({ char: 'y', description: '-y force yolk renew' }),
|
|
@@ -143,10 +140,11 @@ Produce.flags = {
|
|
|
143
140
|
Produce.description = 'produce a live image from your system whithout your data';
|
|
144
141
|
Produce.examples = [
|
|
145
142
|
"sudo eggs produce",
|
|
146
|
-
"sudo eggs produce --
|
|
143
|
+
"sudo eggs produce --standard",
|
|
147
144
|
"sudo eggs produce --max",
|
|
148
|
-
"sudo eggs produce --
|
|
149
|
-
"sudo eggs produce --
|
|
150
|
-
"sudo eggs produce --
|
|
151
|
-
"sudo eggs produce --
|
|
145
|
+
"sudo eggs produce --max --basename=colibri",
|
|
146
|
+
"sudo eggs produce --cryptedclone",
|
|
147
|
+
"sudo eggs produce --clone",
|
|
148
|
+
"sudo eggs produce --basename=colibri",
|
|
149
|
+
"sudo eggs produce --basename=colibri --theme /path/to/theme --addons adapt",
|
|
152
150
|
];
|
|
@@ -21,10 +21,10 @@ class Syncfrom extends core_1.Command {
|
|
|
21
21
|
this.verbose = false;
|
|
22
22
|
this.echo = {};
|
|
23
23
|
this.rootDir = '/';
|
|
24
|
-
this.luksName = 'luks-eggs-
|
|
24
|
+
this.luksName = 'luks-eggs-data';
|
|
25
25
|
this.luksFile = `/run/live/medium/live/${this.luksName}`;
|
|
26
26
|
this.luksDevice = `/dev/mapper/${this.luksName}`;
|
|
27
|
-
this.luksMountpoint = '/tmp/eggs-
|
|
27
|
+
this.luksMountpoint = '/tmp/eggs-data';
|
|
28
28
|
}
|
|
29
29
|
async run() {
|
|
30
30
|
const { flags } = await this.parse(Syncfrom);
|
|
@@ -50,7 +50,7 @@ class Syncfrom extends core_1.Command {
|
|
|
50
50
|
}
|
|
51
51
|
if (utils_1.default.isRoot()) {
|
|
52
52
|
if (fileVolume === '') {
|
|
53
|
-
fileVolume = '/run/live/medium/live/luks-eggs-
|
|
53
|
+
fileVolume = '/run/live/medium/live/luks-eggs-dada';
|
|
54
54
|
}
|
|
55
55
|
if (!utils_1.default.isLive()) {
|
|
56
56
|
/**
|
|
@@ -60,7 +60,7 @@ class Syncfrom extends core_1.Command {
|
|
|
60
60
|
this.luksName = path_1.default.basename(fileVolume);
|
|
61
61
|
this.luksFile = fileVolume;
|
|
62
62
|
this.luksDevice = `/dev/mapper/${this.luksName}`;
|
|
63
|
-
this.luksMountpoint = '/tmp/eggs-
|
|
63
|
+
this.luksMountpoint = '/tmp/eggs-data';
|
|
64
64
|
await this.restorePrivateData();
|
|
65
65
|
if (await utils_1.default.customConfirm(`Your system was updated! Press a key to reboot`)) {
|
|
66
66
|
await (0, utils_2.exec)('reboot');
|
|
@@ -77,7 +77,7 @@ class Syncfrom extends core_1.Command {
|
|
|
77
77
|
this.luksName = path_1.default.basename(fileVolume);
|
|
78
78
|
this.luksFile = fileVolume;
|
|
79
79
|
this.luksDevice = `/dev/mapper/${this.luksName}`;
|
|
80
|
-
this.luksMountpoint = '/tmp/eggs-
|
|
80
|
+
this.luksMountpoint = '/tmp/eggs-data';
|
|
81
81
|
await this.restorePrivateData();
|
|
82
82
|
}
|
|
83
83
|
}
|
|
@@ -108,7 +108,7 @@ class Syncfrom extends core_1.Command {
|
|
|
108
108
|
await (0, utils_2.exec)(`cp ${this.luksMountpoint}/etc/group ${this.rootDir}/etc/`, this.echo);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
utils_1.default.warning('Restoring
|
|
111
|
+
utils_1.default.warning('Restoring crypted data');
|
|
112
112
|
let cmd = `rsync -a ${this.luksMountpoint}/ROOT/ ${this.rootDir}/`;
|
|
113
113
|
if (destDelete) {
|
|
114
114
|
cmd = `rsync --archive --delete ${this.luksMountpoint}/ROOT/ ${this.rootDir}/`;
|
|
@@ -161,6 +161,6 @@ Syncfrom.flags = {
|
|
|
161
161
|
};
|
|
162
162
|
Syncfrom.description = 'restore users and user data from a LUKS volumes';
|
|
163
163
|
Syncfrom.examples = [
|
|
164
|
-
'sudo eggs
|
|
165
|
-
'sudo eggs
|
|
164
|
+
'sudo eggs syncfrom',
|
|
165
|
+
'sudo eggs syncfrom --file /path/to/fileLUKS',
|
|
166
166
|
];
|
package/dist/commands/syncto.js
CHANGED
|
@@ -67,12 +67,12 @@ class Syncto extends core_1.Command {
|
|
|
67
67
|
* restore con file
|
|
68
68
|
*/
|
|
69
69
|
if (fileVolume === '') {
|
|
70
|
-
fileVolume = '/tmp/luks-eggs-
|
|
70
|
+
fileVolume = '/tmp/luks-eggs-data';
|
|
71
71
|
}
|
|
72
72
|
this.luksName = path_1.default.basename(fileVolume);
|
|
73
73
|
this.luksFile = fileVolume;
|
|
74
74
|
this.luksDevice = `/dev/mapper/${this.luksName}`;
|
|
75
|
-
this.luksMountpoint = '/tmp/eggs-
|
|
75
|
+
this.luksMountpoint = '/tmp/eggs-data';
|
|
76
76
|
if (!fs_1.default.existsSync(fileVolume)) {
|
|
77
77
|
await this.luksCreate();
|
|
78
78
|
}
|
|
@@ -124,11 +124,14 @@ class Sequence {
|
|
|
124
124
|
this.settings = {};
|
|
125
125
|
this.remix = {};
|
|
126
126
|
this.distro = {};
|
|
127
|
-
|
|
128
|
-
this.
|
|
129
|
-
this.
|
|
130
|
-
this.
|
|
131
|
-
this.
|
|
127
|
+
// Crypted Clone
|
|
128
|
+
this.luksName = 'luks-eggs-data';
|
|
129
|
+
this.luksFile = `/run/live/medium/live/${this.luksName}`;
|
|
130
|
+
this.luksDevice = `/dev/mapper/${this.luksName}`;
|
|
131
|
+
this.luksMountpoint = `/mnt`;
|
|
132
|
+
// Clone (Uncrypted)
|
|
133
|
+
this.is_clone = fs_1.default.existsSync('/etc/penguins-eggs.d/is_clone');
|
|
134
|
+
this.is_crypted_clone = fs_1.default.existsSync('/etc/penguins-eggs.d/is_crypted_clone');
|
|
132
135
|
this.unattended = false;
|
|
133
136
|
this.installer = (0, installer_1.installer)();
|
|
134
137
|
this.settings = new settings_1.default();
|
|
@@ -148,13 +151,6 @@ class Sequence {
|
|
|
148
151
|
this.devices.swap = {};
|
|
149
152
|
this.distro = new distro_1.default(this.remix);
|
|
150
153
|
this.efi = fs_1.default.existsSync('/sys/firmware/efi/efivars');
|
|
151
|
-
// Per il restore dei dati
|
|
152
|
-
this.luksName = 'luks-eggs-backup';
|
|
153
|
-
this.luksFile = `/run/live/medium/live/${this.luksName}`;
|
|
154
|
-
this.luksDevice = `/dev/mapper/${this.luksName}`;
|
|
155
|
-
this.luksMountpoint = `/mnt`;
|
|
156
|
-
// per il restore dei dati personali controllo esistenza di is-clone.md
|
|
157
|
-
this.personalFile = `/run/live/medium/live/is-clone.md`;
|
|
158
154
|
}
|
|
159
155
|
/**
|
|
160
156
|
* install
|
|
@@ -176,7 +172,7 @@ class Sequence {
|
|
|
176
172
|
let message = "";
|
|
177
173
|
let isPartitioned = false;
|
|
178
174
|
message = "Creating partitions";
|
|
179
|
-
percent = 0.
|
|
175
|
+
percent = 0.03;
|
|
180
176
|
try {
|
|
181
177
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
182
178
|
isPartitioned = await this.partition();
|
|
@@ -187,7 +183,7 @@ class Sequence {
|
|
|
187
183
|
if (isPartitioned) {
|
|
188
184
|
// formatting
|
|
189
185
|
message = "Formatting file system ";
|
|
190
|
-
percent = 0.
|
|
186
|
+
percent = 0.06;
|
|
191
187
|
try {
|
|
192
188
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
193
189
|
await this.mkfs();
|
|
@@ -197,7 +193,7 @@ class Sequence {
|
|
|
197
193
|
}
|
|
198
194
|
// mountFs
|
|
199
195
|
message = "Mounting target file system ";
|
|
200
|
-
percent = 0.
|
|
196
|
+
percent = 0.09;
|
|
201
197
|
try {
|
|
202
198
|
redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
203
199
|
await this.mountFs();
|
|
@@ -207,7 +203,7 @@ class Sequence {
|
|
|
207
203
|
}
|
|
208
204
|
// mountVfs
|
|
209
205
|
message = "Mounting on target VFS ";
|
|
210
|
-
percent = 0.
|
|
206
|
+
percent = 0.12;
|
|
211
207
|
try {
|
|
212
208
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
213
209
|
await this.mountVfs();
|
|
@@ -217,7 +213,7 @@ class Sequence {
|
|
|
217
213
|
}
|
|
218
214
|
// unpackfs
|
|
219
215
|
message = "Unpacking filesystem ";
|
|
220
|
-
percent = 0.
|
|
216
|
+
percent = 0.15;
|
|
221
217
|
try {
|
|
222
218
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
223
219
|
await this.unpackfs();
|
|
@@ -228,7 +224,7 @@ class Sequence {
|
|
|
228
224
|
// dpkg-unsafe-io
|
|
229
225
|
if (this.distro.familyId === 'debian') {
|
|
230
226
|
message = "dpkg-unsafe-io";
|
|
231
|
-
percent = 0.
|
|
227
|
+
percent = 0.40;
|
|
232
228
|
try {
|
|
233
229
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
234
230
|
await this.execCalamaresModule('dpkg-unsafe-io');
|
|
@@ -237,26 +233,10 @@ class Sequence {
|
|
|
237
233
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
238
234
|
}
|
|
239
235
|
}
|
|
240
|
-
/**
|
|
241
|
-
* IF RESTORE USERS DATA
|
|
242
|
-
*/
|
|
243
|
-
if (fs_1.default.existsSync(this.luksFile)) {
|
|
244
|
-
// restoring users data
|
|
245
|
-
message = "Restore private data from backup ";
|
|
246
|
-
percent = 0.37;
|
|
247
|
-
let cmd = 'eggs syncfrom --rootdir /tmp/calamares-krill-root/';
|
|
248
|
-
try {
|
|
249
|
-
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent, spinner: true }));
|
|
250
|
-
await (0, utils_2.exec)(cmd, utils_1.default.setEcho(true));
|
|
251
|
-
}
|
|
252
|
-
catch (error) {
|
|
253
|
-
await utils_1.default.pressKeyToExit(cmd);
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
236
|
// sources-yolk
|
|
257
237
|
if (this.distro.familyId === 'debian') {
|
|
258
238
|
message = 'sources-yolk';
|
|
259
|
-
percent = 0.
|
|
239
|
+
percent = 0.43;
|
|
260
240
|
try {
|
|
261
241
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent, spinner: true }));
|
|
262
242
|
await this.execCalamaresModule('sources-yolk');
|
|
@@ -267,7 +247,7 @@ class Sequence {
|
|
|
267
247
|
}
|
|
268
248
|
// machineid
|
|
269
249
|
message = 'machineid';
|
|
270
|
-
percent = 0.
|
|
250
|
+
percent = 0.46;
|
|
271
251
|
try {
|
|
272
252
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent, spinner: true }));
|
|
273
253
|
await this.machineId();
|
|
@@ -277,7 +257,7 @@ class Sequence {
|
|
|
277
257
|
}
|
|
278
258
|
// fstab
|
|
279
259
|
message = "Creating fstab ";
|
|
280
|
-
percent = 0.
|
|
260
|
+
percent = 0.49;
|
|
281
261
|
try {
|
|
282
262
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
283
263
|
await this.fstab(this.partitions.installationDevice);
|
|
@@ -285,46 +265,39 @@ class Sequence {
|
|
|
285
265
|
catch (error) {
|
|
286
266
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
287
267
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
message = "localeCfg";
|
|
309
|
-
percent = 0.50;
|
|
310
|
-
try {
|
|
311
|
-
this.localeCfg();
|
|
312
|
-
}
|
|
313
|
-
catch (error) {
|
|
314
|
-
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
268
|
+
/**
|
|
269
|
+
* CryptedClone exec eggs syncfrom
|
|
270
|
+
*/
|
|
271
|
+
if (this.is_crypted_clone) {
|
|
272
|
+
message = "Restore private data from crypted clone ";
|
|
273
|
+
if (fs_1.default.existsSync(this.luksFile)) {
|
|
274
|
+
percent = 0.55;
|
|
275
|
+
let cmd = `eggs syncfrom --rootdir /tmp/calamares-krill-root/ --file ${this.luksFile}`;
|
|
276
|
+
try {
|
|
277
|
+
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent, spinner: true }));
|
|
278
|
+
await (0, utils_2.exec)(cmd, utils_1.default.setEcho(true));
|
|
279
|
+
this.is_clone = true; // Adesso è un clone
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
await utils_1.default.pressKeyToExit(cmd);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
await utils_1.default.pressKeyToExit(`Cannot find LUKS file ${this.luksFile}`);
|
|
287
|
+
}
|
|
315
288
|
}
|
|
316
289
|
// networkcfg
|
|
317
290
|
message = "networkcfg";
|
|
318
|
-
percent = 0.
|
|
291
|
+
percent = 0.61;
|
|
319
292
|
try {
|
|
320
|
-
this.networkCfg();
|
|
293
|
+
await this.networkCfg();
|
|
321
294
|
}
|
|
322
295
|
catch (error) {
|
|
323
296
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
324
297
|
}
|
|
325
298
|
// hostname
|
|
326
299
|
message = "Create hostname ";
|
|
327
|
-
percent = 0.
|
|
300
|
+
percent = 0.64;
|
|
328
301
|
try {
|
|
329
302
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
330
303
|
await this.hostname(domain);
|
|
@@ -334,17 +307,17 @@ class Sequence {
|
|
|
334
307
|
}
|
|
335
308
|
// initramfsCfg
|
|
336
309
|
message = "initramfs configure";
|
|
337
|
-
percent = 0.
|
|
310
|
+
percent = 0.67;
|
|
338
311
|
try {
|
|
339
312
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
340
|
-
this.initramfsCfg(this.partitions.installationDevice);
|
|
313
|
+
await this.initramfsCfg(this.partitions.installationDevice);
|
|
341
314
|
}
|
|
342
315
|
catch (error) {
|
|
343
316
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
344
317
|
}
|
|
345
318
|
// initramfs
|
|
346
319
|
message = "initramfs ";
|
|
347
|
-
percent = 0.
|
|
320
|
+
percent = 0.70;
|
|
348
321
|
try {
|
|
349
322
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
350
323
|
await this.initramfs();
|
|
@@ -355,7 +328,7 @@ class Sequence {
|
|
|
355
328
|
// dpkg-unsafe-io-undo
|
|
356
329
|
if (this.distro.familyId === 'debian') {
|
|
357
330
|
message = "dpkg-unsafe-io-undo";
|
|
358
|
-
percent = 0.
|
|
331
|
+
percent = 0.72;
|
|
359
332
|
try {
|
|
360
333
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
361
334
|
await this.execCalamaresModule('dpkg-unsafe-io-undo');
|
|
@@ -365,72 +338,102 @@ class Sequence {
|
|
|
365
338
|
}
|
|
366
339
|
}
|
|
367
340
|
/**
|
|
368
|
-
* IF NOT
|
|
341
|
+
* IF NOT CLONE:
|
|
342
|
+
* - locale
|
|
343
|
+
* - keyboard
|
|
344
|
+
* - localeCfg
|
|
345
|
+
* - delLiveUser
|
|
346
|
+
* - adduser
|
|
347
|
+
* - autologin
|
|
369
348
|
*/
|
|
370
|
-
if (!
|
|
371
|
-
//
|
|
372
|
-
message = "
|
|
373
|
-
percent = 0.
|
|
349
|
+
if (!this.is_clone) {
|
|
350
|
+
// locale
|
|
351
|
+
message = "Locale";
|
|
352
|
+
percent = 0.74;
|
|
374
353
|
try {
|
|
375
|
-
|
|
376
|
-
await this.
|
|
354
|
+
redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
355
|
+
await this.locale();
|
|
377
356
|
}
|
|
378
357
|
catch (error) {
|
|
379
358
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
380
359
|
}
|
|
381
|
-
//
|
|
382
|
-
message = "
|
|
383
|
-
percent = 0.
|
|
360
|
+
// keyboard
|
|
361
|
+
message = "settings keyboard";
|
|
362
|
+
percent = 0.75;
|
|
384
363
|
try {
|
|
385
|
-
await
|
|
386
|
-
await this.addUser(this.users.name, this.users.password, this.users.fullname, '', '', '');
|
|
364
|
+
await this.keyboard();
|
|
387
365
|
}
|
|
388
366
|
catch (error) {
|
|
389
367
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
390
368
|
}
|
|
391
|
-
//
|
|
392
|
-
message = "
|
|
393
|
-
percent = 0.
|
|
369
|
+
// localeCfg
|
|
370
|
+
message = "Locale Configuration";
|
|
371
|
+
percent = 0.76;
|
|
372
|
+
try {
|
|
373
|
+
await this.localeCfg();
|
|
374
|
+
await (0, utils_2.exec)("chroot " + this.installTarget + " locale-gen");
|
|
375
|
+
}
|
|
376
|
+
catch (error) {
|
|
377
|
+
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
378
|
+
}
|
|
379
|
+
// delLiveUser
|
|
380
|
+
message = "Remove user LIVE";
|
|
381
|
+
percent = 0.75;
|
|
394
382
|
try {
|
|
395
383
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
396
|
-
await this.
|
|
384
|
+
await this.delLiveUser();
|
|
397
385
|
}
|
|
398
386
|
catch (error) {
|
|
399
387
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
400
388
|
}
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
389
|
+
// addUser
|
|
390
|
+
message = "Add user";
|
|
391
|
+
percent = 0.76;
|
|
404
392
|
try {
|
|
405
|
-
message = "autologin GUI";
|
|
406
|
-
percent = 0.65;
|
|
407
|
-
if (this.users.autologin) {
|
|
408
|
-
await xdg_1.default.autologin(await utils_1.default.getPrimaryUser(), this.users.name, this.installTarget);
|
|
409
|
-
}
|
|
410
393
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
394
|
+
await this.addUser(this.users.name, this.users.password, this.users.fullname, '', '', '');
|
|
411
395
|
}
|
|
412
396
|
catch (error) {
|
|
413
397
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
414
398
|
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
percent = 0.66;
|
|
399
|
+
// changePassword root
|
|
400
|
+
message = "Add user password";
|
|
401
|
+
percent = 0.77;
|
|
419
402
|
try {
|
|
420
403
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
421
|
-
await
|
|
404
|
+
await this.changePassword('root', this.users.rootPassword);
|
|
422
405
|
}
|
|
423
406
|
catch (error) {
|
|
424
407
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
425
408
|
}
|
|
409
|
+
// autologin
|
|
410
|
+
if (pacman_1.default.isInstalledGui()) {
|
|
411
|
+
try {
|
|
412
|
+
message = "Autologin GUI";
|
|
413
|
+
percent = 0.78;
|
|
414
|
+
if (this.users.autologin) {
|
|
415
|
+
await xdg_1.default.autologin(await utils_1.default.getPrimaryUser(), this.users.name, this.installTarget);
|
|
416
|
+
}
|
|
417
|
+
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
418
|
+
}
|
|
419
|
+
catch (error) {
|
|
420
|
+
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
} // IF NOT CLONE END
|
|
424
|
+
// Remove autologin CLI
|
|
425
|
+
message = "Remove autologin CLI";
|
|
426
|
+
percent = 0.80;
|
|
427
|
+
try {
|
|
428
|
+
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
429
|
+
await cliAutologin.remove(this.installTarget);
|
|
430
|
+
}
|
|
431
|
+
catch (error) {
|
|
432
|
+
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
426
433
|
}
|
|
427
|
-
// cleanup
|
|
428
|
-
await cliAutologin.msgRemove(`${this.installTarget}/etc/motd`);
|
|
429
|
-
await cliAutologin.msgRemove(`${this.installTarget}/etc/issue`);
|
|
430
|
-
await cliAutologin.remove(this.installTarget);
|
|
431
434
|
// bootloader-config
|
|
432
435
|
message = "bootloader-config ";
|
|
433
|
-
percent = 0.
|
|
436
|
+
percent = 0.82;
|
|
434
437
|
try {
|
|
435
438
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
436
439
|
await this.bootloaderConfig();
|
|
@@ -440,7 +443,7 @@ class Sequence {
|
|
|
440
443
|
}
|
|
441
444
|
// grubcfg
|
|
442
445
|
message = "grubcfg ";
|
|
443
|
-
percent = 0.
|
|
446
|
+
percent = 0.84;
|
|
444
447
|
try {
|
|
445
448
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
446
449
|
await this.grubcfg();
|
|
@@ -450,7 +453,7 @@ class Sequence {
|
|
|
450
453
|
}
|
|
451
454
|
// bootloader (grub-install)
|
|
452
455
|
message = "bootloader ";
|
|
453
|
-
percent = 0.
|
|
456
|
+
percent = 0.86;
|
|
454
457
|
try {
|
|
455
458
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
456
459
|
await this.bootloader();
|
|
@@ -461,7 +464,7 @@ class Sequence {
|
|
|
461
464
|
// sources-yolk-undo
|
|
462
465
|
if (this.distro.familyId === 'debian') {
|
|
463
466
|
message = "sources-yolk-undo";
|
|
464
|
-
percent = 0.
|
|
467
|
+
percent = 0.88;
|
|
465
468
|
try {
|
|
466
469
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
467
470
|
await this.execCalamaresModule('sources-yolk-undo');
|
|
@@ -472,14 +475,13 @@ class Sequence {
|
|
|
472
475
|
}
|
|
473
476
|
// packages
|
|
474
477
|
message = "add/remove packages";
|
|
475
|
-
percent = 0.
|
|
478
|
+
percent = 0.90;
|
|
476
479
|
try {
|
|
477
480
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
478
481
|
await this.packages();
|
|
479
482
|
}
|
|
480
483
|
catch (error) {
|
|
481
484
|
console.log(JSON.stringify(error));
|
|
482
|
-
// await Utils.pressKeyToExit(JSON.stringify(error))
|
|
483
485
|
}
|
|
484
486
|
/**
|
|
485
487
|
*
|
|
@@ -487,7 +489,7 @@ class Sequence {
|
|
|
487
489
|
*/
|
|
488
490
|
if (await pacman_1.default.calamaresCheck()) {
|
|
489
491
|
message = "remove installer link";
|
|
490
|
-
percent = 0.
|
|
492
|
+
percent = 0.92;
|
|
491
493
|
try {
|
|
492
494
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
493
495
|
await this.removeInstallerLink();
|
|
@@ -496,9 +498,20 @@ class Sequence {
|
|
|
496
498
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
497
499
|
}
|
|
498
500
|
}
|
|
501
|
+
// remove /etc/penguins_eggs.d/is_clone*
|
|
502
|
+
message = "Cleanup";
|
|
503
|
+
percent = 0.94;
|
|
504
|
+
try {
|
|
505
|
+
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
506
|
+
await (0, utils_2.exec)(`rm -f ${this.installTarget}/etc/penguins-eggs.d/is_clone`);
|
|
507
|
+
await (0, utils_2.exec)(`rm -f ${this.installTarget}/etc/penguins-eggs.d/is_crypted_clone`);
|
|
508
|
+
}
|
|
509
|
+
catch (error) {
|
|
510
|
+
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
511
|
+
}
|
|
499
512
|
// umountVfs
|
|
500
513
|
message = "umount VFS";
|
|
501
|
-
percent = 0.
|
|
514
|
+
percent = 0.96;
|
|
502
515
|
try {
|
|
503
516
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
504
517
|
await this.umountVfs();
|
|
@@ -508,7 +521,7 @@ class Sequence {
|
|
|
508
521
|
}
|
|
509
522
|
// umount
|
|
510
523
|
message = "umount";
|
|
511
|
-
percent = 0.
|
|
524
|
+
percent = 0.98;
|
|
512
525
|
try {
|
|
513
526
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
514
527
|
await this.umountFs();
|
|
@@ -47,10 +47,11 @@ async function localeCfg() {
|
|
|
47
47
|
}
|
|
48
48
|
localeGenDest += '\n';
|
|
49
49
|
localeGenDest += krillBookmark;
|
|
50
|
-
const locales = [
|
|
50
|
+
const locales = [];
|
|
51
51
|
if (this.language !== 'en_US.UTF-8') {
|
|
52
52
|
locales.push('en_US.UTF-8');
|
|
53
53
|
}
|
|
54
|
+
locales.push(this.language);
|
|
54
55
|
for (const supported of supporteds) {
|
|
55
56
|
for (const locale of locales) {
|
|
56
57
|
if (supported.includes(locale)) {
|
|
@@ -47,7 +47,7 @@ async function mKeyboard() {
|
|
|
47
47
|
if (utils_1.default.isSystemd()) {
|
|
48
48
|
let content = '# KEYBOARD CONFIGURATION FILE\n\n';
|
|
49
49
|
content += '# Consult the keyboard(5) manual page.\n\n';
|
|
50
|
-
content += '# See penguins-eggs/src/krill/modules/
|
|
50
|
+
content += '# See penguins-eggs/src/krill/modules/m-keyboard.ts\n\n';
|
|
51
51
|
content += 'XKBMODEL="' + this.keyboardModel + '"\n';
|
|
52
52
|
content += 'XKBLAYOUT="' + this.keyboardLayout + '"\n';
|
|
53
53
|
content += 'XKBVARIANT="' + this.keyboardVariant + '"\n';
|