penguins-eggs 9.2.2 → 9.2.4
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/README.md +145 -130
- package/addons/eggs/theme/livecd/isolinux.theme.cfg +36 -41
- package/conf/eggs.yaml +41 -73
- package/conf/exclude.list +1 -0
- package/conf/krill.yaml +38 -0
- package/lib/classes/daddy.d.ts +2 -2
- package/lib/classes/distro.d.ts +2 -0
- package/lib/classes/distro.js +6 -0
- package/lib/classes/incubation/fisherman.js +1 -1
- package/lib/classes/pacman.js +3 -2
- package/lib/classes/pxe.d.ts +42 -0
- package/lib/classes/pxe.js +242 -0
- package/lib/classes/settings.d.ts +3 -3
- package/lib/classes/settings.js +2 -1
- package/lib/classes/tools.d.ts +2 -2
- package/lib/classes/utils.d.ts +1 -1
- package/lib/classes/utils.js +1 -1
- package/lib/commands/cuckoo.d.ts +24 -0
- package/lib/commands/cuckoo.js +69 -0
- package/lib/commands/install.d.ts +2 -2
- package/lib/commands/install.js +8 -14
- package/lib/commands/produce.js +3 -3
- package/lib/commands/{info.d.ts → status.d.ts} +1 -1
- package/lib/commands/{info.js → status.js} +5 -5
- package/lib/components/summary.d.ts +6 -1
- package/lib/components/summary.js +25 -8
- package/lib/components/users.js +3 -4
- package/lib/interfaces/i-config-tools.d.ts +1 -1
- package/lib/interfaces/i-distro.d.ts +2 -0
- package/lib/interfaces/{i-config.d.ts → i-eggs-config.d.ts} +2 -4
- package/lib/interfaces/{i-config.js → i-eggs-config.js} +0 -0
- package/lib/interfaces/i-krill-config.d.ts +26 -0
- package/lib/interfaces/i-krill-config.js +2 -0
- package/lib/interfaces/i-packages.d.ts +6 -9
- package/lib/interfaces/i-packages.js +3 -0
- package/lib/interfaces/index.d.ts +1 -1
- package/lib/krill/krill-prepare.d.ts +5 -3
- package/lib/krill/krill-prepare.js +159 -35
- package/lib/krill/krill-sequence.d.ts +5 -3
- package/lib/krill/krill-sequence.js +26 -12
- package/lib/krill/modules/fstab.d.ts +5 -0
- package/lib/krill/modules/fstab.js +5 -0
- package/lib/krill/modules/grubcfg.d.ts +5 -0
- package/lib/krill/modules/grubcfg.js +5 -0
- package/lib/krill/modules/hostname.d.ts +5 -0
- package/lib/krill/modules/hostname.js +5 -0
- package/lib/krill/modules/hosts.d.ts +5 -0
- package/lib/krill/modules/hosts.js +5 -0
- package/lib/krill/modules/initramfs-cfg.d.ts +5 -0
- package/lib/krill/modules/initramfs-cfg.js +5 -0
- package/lib/krill/modules/initramfs.d.ts +5 -0
- package/lib/krill/modules/initramfs.js +5 -0
- package/lib/krill/modules/locale-cfg.d.ts +5 -0
- package/lib/krill/modules/locale-cfg.js +5 -0
- package/lib/krill/modules/locale.d.ts +5 -0
- package/lib/krill/modules/locale.js +5 -0
- package/lib/krill/modules/machine-id.d.ts +5 -0
- package/lib/krill/modules/machine-id.js +5 -0
- package/lib/krill/modules/mkfs.d.ts +5 -0
- package/lib/krill/modules/mkfs.js +5 -0
- package/lib/krill/modules/mount-fs.d.ts +5 -0
- package/lib/krill/modules/mount-fs.js +5 -0
- package/lib/krill/modules/mount-vfs.d.ts +5 -0
- package/lib/krill/modules/mount-vfs.js +5 -0
- package/lib/krill/modules/network-cfg.d.ts +5 -0
- package/lib/krill/modules/network-cfg.js +5 -0
- package/lib/krill/modules/packages.d.ts +14 -0
- package/lib/krill/modules/packages.js +65 -0
- package/lib/krill/modules/{partitions.d.ts → partition.d.ts} +5 -0
- package/lib/krill/modules/{partitions.js → partition.js} +5 -0
- package/lib/krill/modules/remove-installer-link.d.ts +5 -0
- package/lib/krill/modules/remove-installer-link.js +5 -0
- package/lib/krill/modules/set-keyboard.d.ts +5 -0
- package/lib/krill/modules/set-keyboard.js +37 -18
- package/lib/krill/modules/set-timezone.d.ts +5 -0
- package/lib/krill/modules/set-timezone.js +5 -0
- package/lib/krill/modules/umount.d.ts +5 -0
- package/lib/krill/modules/umount.js +5 -0
- package/lib/krill/modules/unpackfs.d.ts +5 -0
- package/lib/krill/modules/unpackfs.js +5 -0
- package/manpages/doc/man/eggs.1.gz +0 -0
- package/manpages/doc/man/eggs.html +72 -83
- package/package.json +6 -2
- package/scripts/_eggs +23 -24
- package/scripts/eggs.bash +4 -4
- package/scripts/mom-cli.sh +11 -11
- package/manpages/doc/man/eggs.roll.gz +0 -0
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
const tslib_1 = require("tslib");
|
|
11
11
|
/**
|
|
12
12
|
* Ideally, I want to respect calamares way, remplementing the same (SEMPLIFIED) steps
|
|
13
|
-
*
|
|
13
|
+
* in a TUI interface
|
|
14
14
|
*
|
|
15
15
|
* Phase 1 - prepare.
|
|
16
16
|
* View modules are shown as UI pages, jobs from job modules
|
|
@@ -24,10 +24,7 @@ const tslib_1 = require("tslib");
|
|
|
24
24
|
* - network
|
|
25
25
|
* - summary
|
|
26
26
|
*/
|
|
27
|
-
|
|
28
|
-
* problems:
|
|
29
|
-
*
|
|
30
|
-
*/
|
|
27
|
+
const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
|
|
31
28
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
32
29
|
const ink_1 = require("ink");
|
|
33
30
|
const utils_1 = tslib_1.__importDefault(require("../classes/utils"));
|
|
@@ -69,18 +66,20 @@ const get_gateway_1 = tslib_1.__importDefault(require("../lib/get_gateway"));
|
|
|
69
66
|
const get_domain_1 = tslib_1.__importDefault(require("../lib/get_domain"));
|
|
70
67
|
const get_dns_1 = tslib_1.__importDefault(require("../lib/get_dns"));
|
|
71
68
|
const krill_sequence_1 = tslib_1.__importDefault(require("./krill-sequence"));
|
|
69
|
+
const config_file = '/etc/penguins-eggs.d/krill.yaml';
|
|
72
70
|
/**
|
|
73
71
|
*
|
|
74
72
|
*/
|
|
75
73
|
class Krill {
|
|
76
74
|
constructor() {
|
|
75
|
+
this.krillConfig = {};
|
|
77
76
|
this.locales = new locales_1.default();
|
|
78
77
|
this.keyboards = new keyboards_1.default();
|
|
79
78
|
}
|
|
80
79
|
/**
|
|
81
80
|
* @param cryped
|
|
82
81
|
*/
|
|
83
|
-
async prepare(cryped = false, pve = false, verbose = false) {
|
|
82
|
+
async prepare(unattended = false, cryped = false, pve = false, verbose = false) {
|
|
84
83
|
/**
|
|
85
84
|
* Check for disk presence
|
|
86
85
|
*/
|
|
@@ -101,21 +100,92 @@ class Krill {
|
|
|
101
100
|
if (await systemdCtl.isActive('udisks2.service')) {
|
|
102
101
|
await systemdCtl.stop('udisks2.service');
|
|
103
102
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
103
|
+
let oWelcome = {};
|
|
104
|
+
let oLocation = {};
|
|
105
|
+
let oKeyboard = {};
|
|
106
|
+
let oPartitions = {};
|
|
107
|
+
let oUsers = {};
|
|
108
|
+
let oNetwork = {};
|
|
109
|
+
/**
|
|
110
|
+
* load default values
|
|
111
|
+
*/
|
|
112
|
+
if (!fs_1.default.existsSync(config_file)) {
|
|
113
|
+
console.log(`cannot find configuration file ${config_file},`);
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
this.krillConfig = js_yaml_1.default.load(fs_1.default.readFileSync(config_file, 'utf-8'));
|
|
117
|
+
if (unattended) {
|
|
118
|
+
oWelcome = { language: this.krillConfig.language };
|
|
119
|
+
oLocation = {
|
|
120
|
+
language: this.krillConfig.language,
|
|
121
|
+
region: this.krillConfig.region,
|
|
122
|
+
zone: this.krillConfig.zone
|
|
123
|
+
};
|
|
124
|
+
oKeyboard = {
|
|
125
|
+
keyboardModel: this.krillConfig.keyboardModel,
|
|
126
|
+
keyboardLayout: this.krillConfig.keyboardLayout,
|
|
127
|
+
keyboardVariant: this.krillConfig.keyboardVariant,
|
|
128
|
+
keyboardOption: this.krillConfig.keyboardOption
|
|
129
|
+
};
|
|
130
|
+
const drives = shelljs_1.default.exec('lsblk |grep disk|cut -f 1 "-d "', { silent: true }).stdout.trim().split('\n');
|
|
131
|
+
const driveList = [];
|
|
132
|
+
drives.forEach((element) => {
|
|
133
|
+
driveList.push('/dev/' + element);
|
|
134
|
+
});
|
|
135
|
+
oPartitions = {
|
|
136
|
+
installationDevice: driveList[0],
|
|
137
|
+
installationMode: this.krillConfig.installationMode,
|
|
138
|
+
filesystemType: this.krillConfig.filesystemType,
|
|
139
|
+
userSwapChoice: this.krillConfig.userSwapChoice
|
|
140
|
+
};
|
|
141
|
+
let hostname = this.krillConfig.hostname;
|
|
142
|
+
if (hostname === '') {
|
|
143
|
+
hostname = shelljs_1.default.exec('cat /etc/hostname').trim();
|
|
144
|
+
}
|
|
145
|
+
oUsers = {
|
|
146
|
+
name: this.krillConfig.name,
|
|
147
|
+
fullname: this.krillConfig.fullname,
|
|
148
|
+
password: this.krillConfig.password,
|
|
149
|
+
rootPassword: this.krillConfig.rootPassword,
|
|
150
|
+
autologin: this.krillConfig.autologin,
|
|
151
|
+
hostname: hostname
|
|
152
|
+
};
|
|
153
|
+
oNetwork =
|
|
154
|
+
{
|
|
155
|
+
iface: await utils_1.default.iface(),
|
|
156
|
+
addressType: this.krillConfig.addressType,
|
|
157
|
+
address: utils_1.default.address(),
|
|
158
|
+
netmask: utils_1.default.netmask(),
|
|
159
|
+
gateway: utils_1.default.gateway(),
|
|
160
|
+
dns: utils_1.default.getDns(),
|
|
161
|
+
domain: utils_1.default.getDomain()
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
oWelcome = await this.welcome();
|
|
166
|
+
oLocation = await this.location(oWelcome.language);
|
|
167
|
+
oKeyboard = await this.keyboard();
|
|
168
|
+
oPartitions = await this.partitions(cryped, pve);
|
|
169
|
+
oUsers = await this.users();
|
|
170
|
+
oNetwork = await this.network();
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* summary
|
|
174
|
+
*/
|
|
175
|
+
await this.summary(oLocation, oKeyboard, oPartitions, oUsers, unattended);
|
|
176
|
+
/**
|
|
177
|
+
* installation
|
|
178
|
+
*/
|
|
179
|
+
await this.install(oLocation, oKeyboard, oPartitions, oUsers, oNetwork, unattended, verbose);
|
|
113
180
|
}
|
|
114
181
|
/**
|
|
115
182
|
* WELCOME
|
|
116
183
|
*/
|
|
117
184
|
async welcome() {
|
|
118
|
-
let language =
|
|
185
|
+
let language = this.krillConfig.language;
|
|
186
|
+
if (language === '') {
|
|
187
|
+
language = await this.locales.getDefault(); // 'en_US.UTF-8'
|
|
188
|
+
}
|
|
119
189
|
let welcomeElem;
|
|
120
190
|
while (true) {
|
|
121
191
|
welcomeElem = react_1.default.createElement(welcome_1.default, { language: language });
|
|
@@ -130,9 +200,14 @@ class Krill {
|
|
|
130
200
|
* LOCATION
|
|
131
201
|
*/
|
|
132
202
|
async location(language) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
203
|
+
let region = this.krillConfig.region;
|
|
204
|
+
if (region === '') {
|
|
205
|
+
let region = shelljs_1.default.exec('cut -f1 -d/ < /etc/timezone', { silent: true }).stdout.trim();
|
|
206
|
+
}
|
|
207
|
+
let zone = this.krillConfig.zone;
|
|
208
|
+
if (zone === '') {
|
|
209
|
+
zone = shelljs_1.default.exec('cut -f2 -d/ < /etc/timezone', { silent: true }).stdout.trim();
|
|
210
|
+
}
|
|
136
211
|
// Try to auto-configure timezone by internet
|
|
137
212
|
const url = `https://geoip.kde.org/v1/calamares`;
|
|
138
213
|
try {
|
|
@@ -166,10 +241,22 @@ class Krill {
|
|
|
166
241
|
* KEYBOARD
|
|
167
242
|
*/
|
|
168
243
|
async keyboard() {
|
|
169
|
-
let keyboardModel =
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
244
|
+
let keyboardModel = this.krillConfig.keyboardModel;
|
|
245
|
+
if (keyboardModel === '') {
|
|
246
|
+
keyboardModel = await this.keyboards.getModel();
|
|
247
|
+
}
|
|
248
|
+
let keyboardLayout = this.krillConfig.keyboardLayout;
|
|
249
|
+
if (keyboardLayout === '') {
|
|
250
|
+
keyboardLayout = await this.keyboards.getLayout();
|
|
251
|
+
}
|
|
252
|
+
let keyboardVariant = this.krillConfig.keyboardVariant;
|
|
253
|
+
if (keyboardVariant === '') {
|
|
254
|
+
keyboardVariant = await this.keyboards.getVariant();
|
|
255
|
+
}
|
|
256
|
+
let keyboardOption = this.krillConfig.keyboardOption;
|
|
257
|
+
if (keyboardOption === '') {
|
|
258
|
+
keyboardOption = await this.keyboards.getOption();
|
|
259
|
+
}
|
|
173
260
|
let keyboardElem;
|
|
174
261
|
while (true) {
|
|
175
262
|
keyboardElem = react_1.default.createElement(keyboard_1.default, { keyboardModel: keyboardModel, keyboardLayout: keyboardLayout, keyboardVariant: keyboardVariant, keyboardOptions: keyboardOption });
|
|
@@ -207,7 +294,10 @@ class Krill {
|
|
|
207
294
|
driveList.push('/dev/' + element);
|
|
208
295
|
});
|
|
209
296
|
let installationDevice = driveList[0]; // it was just /dev/sda before
|
|
210
|
-
let installationMode =
|
|
297
|
+
let installationMode = this.krillConfig.installationMode;
|
|
298
|
+
if (installationMode === '') {
|
|
299
|
+
installationMode = 'standard';
|
|
300
|
+
}
|
|
211
301
|
if (crypted) {
|
|
212
302
|
installationMode = 'full-encrypted';
|
|
213
303
|
}
|
|
@@ -250,11 +340,26 @@ class Krill {
|
|
|
250
340
|
* USERS
|
|
251
341
|
*/
|
|
252
342
|
async users() {
|
|
253
|
-
let name =
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
let
|
|
343
|
+
let name = this.krillConfig.name;
|
|
344
|
+
if (name === '') {
|
|
345
|
+
name = 'artisan';
|
|
346
|
+
}
|
|
347
|
+
let fullname = this.krillConfig.fullname;
|
|
348
|
+
if (fullname === '') {
|
|
349
|
+
fullname = 'artisan';
|
|
350
|
+
}
|
|
351
|
+
let password = this.krillConfig.password;
|
|
352
|
+
if (password === '') {
|
|
353
|
+
password = 'evolution';
|
|
354
|
+
}
|
|
355
|
+
let rootPassword = this.krillConfig.rootPassword;
|
|
356
|
+
if (rootPassword === '') {
|
|
357
|
+
rootPassword = 'evolution';
|
|
358
|
+
}
|
|
359
|
+
let hostname = this.krillConfig.hostname;
|
|
360
|
+
if (hostname === '') {
|
|
361
|
+
hostname = shelljs_1.default.exec('cat /etc/hostname').trim();
|
|
362
|
+
}
|
|
258
363
|
let autologin = true;
|
|
259
364
|
let sameUserPassword = true;
|
|
260
365
|
let usersElem;
|
|
@@ -283,7 +388,7 @@ class Krill {
|
|
|
283
388
|
async network() {
|
|
284
389
|
const i = {};
|
|
285
390
|
const ifaces = fs_1.default.readdirSync('/sys/class/net/');
|
|
286
|
-
i.iface = utils_1.default.iface();
|
|
391
|
+
i.iface = await utils_1.default.iface();
|
|
287
392
|
i.addressType = 'dhcp';
|
|
288
393
|
i.address = utils_1.default.address();
|
|
289
394
|
i.netmask = utils_1.default.netmask();
|
|
@@ -325,11 +430,20 @@ class Krill {
|
|
|
325
430
|
/**
|
|
326
431
|
* SUMMARY
|
|
327
432
|
*/
|
|
328
|
-
async summary(location, keyboard, partitions) {
|
|
433
|
+
async summary(location, keyboard, partitions, users, unattended = false) {
|
|
329
434
|
let summaryElem;
|
|
435
|
+
let message = "";
|
|
436
|
+
if (unattended) {
|
|
437
|
+
message = "Unattended installation will start in 30 seconds, press CTRL-C to abort!";
|
|
438
|
+
}
|
|
330
439
|
while (true) {
|
|
331
|
-
summaryElem = react_1.default.createElement(summary_1.default, { region: location.region, zone: location.zone, language: location.language, keyboardModel: keyboard.keyboardModel, keyboardLayout: keyboard.keyboardLayout, installationDevice: partitions.installationDevice });
|
|
332
|
-
if (
|
|
440
|
+
summaryElem = react_1.default.createElement(summary_1.default, { name: users.name, password: users.password, rootPassword: users.rootPassword, hostname: users.hostname, region: location.region, zone: location.zone, language: location.language, keyboardModel: keyboard.keyboardModel, keyboardLayout: keyboard.keyboardLayout, installationDevice: partitions.installationDevice, message: message });
|
|
441
|
+
if (unattended) {
|
|
442
|
+
redraw(summaryElem);
|
|
443
|
+
await sleep(30000);
|
|
444
|
+
break;
|
|
445
|
+
}
|
|
446
|
+
else if (await confirm(summaryElem, "Confirm Summary datas?")) {
|
|
333
447
|
break;
|
|
334
448
|
}
|
|
335
449
|
}
|
|
@@ -337,9 +451,9 @@ class Krill {
|
|
|
337
451
|
/**
|
|
338
452
|
* INSTALL
|
|
339
453
|
*/
|
|
340
|
-
async install(location, keyboard, partitions, users, network, verbose = false) {
|
|
454
|
+
async install(location, keyboard, partitions, users, network, unattended = false, verbose = false) {
|
|
341
455
|
const sequence = new krill_sequence_1.default(location, keyboard, partitions, users, network);
|
|
342
|
-
await sequence.install(verbose);
|
|
456
|
+
await sequence.install(unattended, verbose);
|
|
343
457
|
}
|
|
344
458
|
/**
|
|
345
459
|
* return true if pv exist
|
|
@@ -394,3 +508,13 @@ function netmask2CIDR(mask) {
|
|
|
394
508
|
.map(part => decimalToBinary(part))
|
|
395
509
|
.join(''), '1');
|
|
396
510
|
}
|
|
511
|
+
/**
|
|
512
|
+
*
|
|
513
|
+
* @param ms
|
|
514
|
+
* @returns
|
|
515
|
+
*/
|
|
516
|
+
function sleep(ms = 0) {
|
|
517
|
+
return new Promise((resolve) => {
|
|
518
|
+
setTimeout(resolve, ms);
|
|
519
|
+
});
|
|
520
|
+
}
|
|
@@ -45,7 +45,7 @@ import { IRemix, IDistro, INet } from '../interfaces';
|
|
|
45
45
|
import Settings from '../classes/settings';
|
|
46
46
|
import { IInstaller, IDevices } from '../interfaces';
|
|
47
47
|
import { ILocation, IKeyboard, IPartitions, IUsers } from '../interfaces/i-krill';
|
|
48
|
-
import partition from './modules/
|
|
48
|
+
import partition from './modules/partition';
|
|
49
49
|
import { mountFs, umountFs } from './modules/mount-fs';
|
|
50
50
|
import { mountVfs, umountVfs } from './modules/mount-vfs';
|
|
51
51
|
import unpackfs from './modules/unpackfs';
|
|
@@ -62,6 +62,7 @@ import bootloaderConfigArch from './modules/bootloader-config-arch';
|
|
|
62
62
|
import bootloaderConfigUbuntu from './modules/bootloader-config-ubuntu';
|
|
63
63
|
import grubcfg from './modules/grubcfg';
|
|
64
64
|
import bootloader from './modules/bootloader';
|
|
65
|
+
import packages from './modules/packages';
|
|
65
66
|
import removeInstallerLink from './modules/remove-installer-link';
|
|
66
67
|
import initramfsCfg from './modules/initramfs-cfg';
|
|
67
68
|
import initramfs from './modules/initramfs';
|
|
@@ -92,6 +93,7 @@ export default class Sequence {
|
|
|
92
93
|
bootloaderConfigUbuntu: typeof bootloaderConfigUbuntu;
|
|
93
94
|
grubcfg: typeof grubcfg;
|
|
94
95
|
bootloader: typeof bootloader;
|
|
96
|
+
packages: typeof packages;
|
|
95
97
|
removeInstallerLink: typeof removeInstallerLink;
|
|
96
98
|
initramfsCfg: typeof initramfsCfg;
|
|
97
99
|
initramfs: typeof initramfs;
|
|
@@ -137,7 +139,7 @@ export default class Sequence {
|
|
|
137
139
|
* @param umount
|
|
138
140
|
* @returns
|
|
139
141
|
*/
|
|
140
|
-
install(verbose?: boolean): Promise<void>;
|
|
142
|
+
install(unattended?: boolean, verbose?: boolean): Promise<void>;
|
|
141
143
|
/**
|
|
142
144
|
*
|
|
143
145
|
*/
|
|
@@ -145,5 +147,5 @@ export default class Sequence {
|
|
|
145
147
|
/**
|
|
146
148
|
* only show the result
|
|
147
149
|
*/
|
|
148
|
-
finished(): Promise<void>;
|
|
150
|
+
finished(unattended?: boolean): Promise<void>;
|
|
149
151
|
}
|
|
@@ -24,7 +24,7 @@ const xdg_1 = tslib_1.__importDefault(require("../classes/xdg"));
|
|
|
24
24
|
const distro_1 = tslib_1.__importDefault(require("../classes/distro"));
|
|
25
25
|
const utils_2 = require("../lib/utils");
|
|
26
26
|
// import krill modules
|
|
27
|
-
const
|
|
27
|
+
const partition_1 = tslib_1.__importDefault(require("./modules/partition"));
|
|
28
28
|
const mount_fs_1 = require("./modules/mount-fs");
|
|
29
29
|
const mount_vfs_1 = require("./modules/mount-vfs");
|
|
30
30
|
const unpackfs_1 = tslib_1.__importDefault(require("./modules/unpackfs"));
|
|
@@ -47,7 +47,7 @@ const bootloader_config_ubuntu_1 = tslib_1.__importDefault(require("./modules/bo
|
|
|
47
47
|
//
|
|
48
48
|
const grubcfg_1 = tslib_1.__importDefault(require("./modules/grubcfg"));
|
|
49
49
|
const bootloader_1 = tslib_1.__importDefault(require("./modules/bootloader"));
|
|
50
|
-
|
|
50
|
+
const packages_1 = tslib_1.__importDefault(require("./modules/packages"));
|
|
51
51
|
const remove_installer_link_1 = tslib_1.__importDefault(require("./modules/remove-installer-link"));
|
|
52
52
|
// luksbootkeyfile:
|
|
53
53
|
// plymouthcfg;
|
|
@@ -69,7 +69,7 @@ class Sequence {
|
|
|
69
69
|
* constructor
|
|
70
70
|
*/
|
|
71
71
|
constructor(location, keyboard, partitions, users, network) {
|
|
72
|
-
this.partition =
|
|
72
|
+
this.partition = partition_1.default;
|
|
73
73
|
// mount
|
|
74
74
|
this.mountFs = mount_fs_1.mountFs;
|
|
75
75
|
this.mountVfs = mount_vfs_1.mountVfs;
|
|
@@ -94,7 +94,7 @@ class Sequence {
|
|
|
94
94
|
//
|
|
95
95
|
this.grubcfg = grubcfg_1.default;
|
|
96
96
|
this.bootloader = bootloader_1.default;
|
|
97
|
-
|
|
97
|
+
this.packages = packages_1.default;
|
|
98
98
|
this.removeInstallerLink = remove_installer_link_1.default;
|
|
99
99
|
// luksbootkeyfile:
|
|
100
100
|
// plymouthcfg;
|
|
@@ -165,7 +165,7 @@ class Sequence {
|
|
|
165
165
|
* @param umount
|
|
166
166
|
* @returns
|
|
167
167
|
*/
|
|
168
|
-
async install(verbose = false) {
|
|
168
|
+
async install(unattended = false, verbose = false) {
|
|
169
169
|
this.verbose = verbose;
|
|
170
170
|
this.echo = utils_1.default.setEcho(this.verbose);
|
|
171
171
|
if (this.verbose) {
|
|
@@ -362,9 +362,19 @@ class Sequence {
|
|
|
362
362
|
catch (error) {
|
|
363
363
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
364
364
|
}
|
|
365
|
+
// packages
|
|
366
|
+
message = "add/remove packages";
|
|
367
|
+
percent = 0.65;
|
|
368
|
+
try {
|
|
369
|
+
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
370
|
+
await this.packages();
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
374
|
+
}
|
|
365
375
|
// initramfsCfg
|
|
366
376
|
message = "initramfs configure";
|
|
367
|
-
percent = 0.
|
|
377
|
+
percent = 0.66;
|
|
368
378
|
try {
|
|
369
379
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
370
380
|
this.initramfsCfg(this.partitions.installationDevice);
|
|
@@ -422,7 +432,9 @@ class Sequence {
|
|
|
422
432
|
try {
|
|
423
433
|
message = "autologin GUI";
|
|
424
434
|
percent = 0.80;
|
|
425
|
-
|
|
435
|
+
if (this.users.autologin) {
|
|
436
|
+
await xdg_1.default.autologin(utils_1.default.getPrimaryUser(), this.users.name, this.installTarget);
|
|
437
|
+
}
|
|
426
438
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
427
439
|
}
|
|
428
440
|
catch (error) {
|
|
@@ -443,8 +455,8 @@ class Sequence {
|
|
|
443
455
|
// cleanup
|
|
444
456
|
await cliAutologin.msgRemove(`${this.installTarget}/etc/motd`);
|
|
445
457
|
await cliAutologin.msgRemove(`${this.installTarget}/etc/issue`);
|
|
446
|
-
//
|
|
447
|
-
message = "remove installer";
|
|
458
|
+
// removeInstallerLink
|
|
459
|
+
message = "remove installer link";
|
|
448
460
|
percent = 0.87;
|
|
449
461
|
try {
|
|
450
462
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
@@ -490,7 +502,7 @@ class Sequence {
|
|
|
490
502
|
percent = 100.0;
|
|
491
503
|
try {
|
|
492
504
|
await redraw(react_1.default.createElement(install_1.default, { message: message, percent: percent }));
|
|
493
|
-
await this.finished();
|
|
505
|
+
await this.finished(unattended);
|
|
494
506
|
}
|
|
495
507
|
catch (error) {
|
|
496
508
|
await utils_1.default.pressKeyToExit(JSON.stringify(error));
|
|
@@ -514,9 +526,11 @@ class Sequence {
|
|
|
514
526
|
/**
|
|
515
527
|
* only show the result
|
|
516
528
|
*/
|
|
517
|
-
async finished() {
|
|
529
|
+
async finished(unattended = false) {
|
|
518
530
|
await redraw(react_1.default.createElement(finished_1.default, { installationDevice: this.partitions.installationDevice, hostName: this.users.hostname, userName: this.users.name }));
|
|
519
|
-
|
|
531
|
+
if (!unattended) {
|
|
532
|
+
utils_1.default.pressKeyToExit('Press a key to reboot...');
|
|
533
|
+
}
|
|
520
534
|
shelljs_1.default.exec('reboot');
|
|
521
535
|
}
|
|
522
536
|
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
+
* krill: module fstab
|
|
4
|
+
*
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* mail: piero.proietti@gmail.com
|
|
7
|
+
*
|
|
3
8
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
4
9
|
*/
|
|
5
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
+
* krill: module grubcfg
|
|
4
|
+
*
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* mail: piero.proietti@gmail.com
|
|
7
|
+
*
|
|
3
8
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
4
9
|
*/
|
|
5
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
+
* krill: module hostname
|
|
4
|
+
*
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* mail: piero.proietti@gmail.com
|
|
7
|
+
*
|
|
3
8
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
4
9
|
*/
|
|
5
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
+
* krill: module hosts
|
|
4
|
+
*
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* mail: piero.proietti@gmail.com
|
|
7
|
+
*
|
|
3
8
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
4
9
|
*/
|
|
5
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
+
* krill: module initramfs-cfgs
|
|
4
|
+
*
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* mail: piero.proietti@gmail.com
|
|
7
|
+
*
|
|
3
8
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
4
9
|
*/
|
|
5
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
+
* krill: module initramfs
|
|
4
|
+
*
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* mail: piero.proietti@gmail.com
|
|
7
|
+
*
|
|
3
8
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
4
9
|
*/
|
|
5
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
+
* krill: module locale-cfg
|
|
4
|
+
*
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* mail: piero.proietti@gmail.com
|
|
7
|
+
*
|
|
3
8
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
4
9
|
*/
|
|
5
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
+
* krill: module locale
|
|
4
|
+
*
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* mail: piero.proietti@gmail.com
|
|
7
|
+
*
|
|
3
8
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
4
9
|
*/
|
|
5
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
+
* krill: module machine-id
|
|
4
|
+
*
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* mail: piero.proietti@gmail.com
|
|
7
|
+
*
|
|
3
8
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
4
9
|
*/
|
|
5
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
+
* krill: module mkfs
|
|
4
|
+
*
|
|
5
|
+
* author: Piero Proietti
|
|
6
|
+
* mail: piero.proietti@gmail.com
|
|
7
|
+
*
|
|
3
8
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
4
9
|
*/
|
|
5
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|