penguins-eggs 9.3.26 → 9.3.28
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/conf/derivatives.yaml +7 -0
- package/dist/classes/bleach.js +26 -24
- package/dist/classes/compressors.js +7 -5
- package/dist/classes/daddy.js +38 -36
- package/dist/classes/distro.js +30 -27
- package/dist/classes/family/archlinux.js +21 -19
- package/dist/classes/family/debian.js +33 -31
- package/dist/classes/family/fedora.js +19 -17
- package/dist/classes/family/suse.js +19 -17
- package/dist/classes/incubation/branding.js +8 -6
- package/dist/classes/incubation/distros/bionic.js +5 -3
- package/dist/classes/incubation/distros/buster.js +5 -3
- package/dist/classes/incubation/distros/focal.js +5 -3
- package/dist/classes/incubation/distros/jessie.js +6 -4
- package/dist/classes/incubation/distros/rolling.js +9 -7
- package/dist/classes/incubation/fisherman-helper/displaymanager.js +5 -3
- package/dist/classes/incubation/fisherman-helper/packages.js +17 -15
- package/dist/classes/incubation/fisherman.js +19 -19
- package/dist/classes/incubation/incubator.js +37 -35
- package/dist/classes/incubation/installer.js +8 -6
- package/dist/classes/initrd.js +5 -3
- package/dist/classes/keyboards.js +25 -23
- package/dist/classes/locales.js +19 -17
- package/dist/classes/n8.js +4 -2
- package/dist/classes/network.js +9 -9
- package/dist/classes/ovary.js +280 -281
- package/dist/classes/pacman.js +128 -128
- package/dist/classes/pve-live.js +7 -5
- package/dist/classes/pxe.js +141 -138
- package/dist/classes/settings.js +34 -32
- package/dist/classes/sources_list.js +31 -31
- package/dist/classes/systemctl.js +16 -14
- package/dist/classes/tailor.js +255 -262
- package/dist/classes/tools.js +7 -5
- package/dist/classes/users.js +30 -28
- package/dist/classes/utils.js +22 -20
- package/dist/classes/xdg.js +60 -58
- package/dist/classes/yolk.js +33 -33
- package/dist/commands/adapt.js +14 -12
- package/dist/commands/analyze.js +48 -15
- package/dist/commands/calamares.js +28 -26
- package/dist/commands/config.js +77 -79
- package/dist/commands/cuckoo.js +19 -17
- package/dist/commands/dad.js +16 -14
- package/dist/commands/export/deb.js +19 -17
- package/dist/commands/export/iso.js +17 -15
- package/dist/commands/install.js +31 -29
- package/dist/commands/kill.js +17 -15
- package/dist/commands/mom.js +11 -9
- package/dist/commands/produce.js +30 -28
- package/dist/commands/status.js +7 -5
- package/dist/commands/syncfrom.js +41 -41
- package/dist/commands/syncto.js +77 -80
- package/dist/commands/tools/clean.js +13 -11
- package/dist/commands/tools/ppa.js +26 -24
- package/dist/commands/tools/skel.js +18 -16
- package/dist/commands/tools/stat.js +12 -10
- package/dist/commands/tools/yolk.js +13 -11
- package/dist/commands/update.js +29 -27
- package/dist/commands/wardrobe/get.js +14 -12
- package/dist/commands/wardrobe/list.js +25 -23
- package/dist/commands/wardrobe/show.js +25 -23
- package/dist/commands/wardrobe/wear.js +24 -22
- package/dist/components/elements/information.js +21 -19
- package/dist/components/elements/steps.js +4 -2
- package/dist/components/elements/title.js +4 -2
- package/dist/components/finished.js +10 -8
- package/dist/components/install.js +10 -8
- package/dist/components/keyboard.js +10 -8
- package/dist/components/location.js +10 -8
- package/dist/components/network.js +10 -8
- package/dist/components/partitions.js +10 -8
- package/dist/components/summary.js +10 -8
- package/dist/components/users.js +33 -8
- package/dist/components/welcome.js +10 -8
- package/dist/interfaces/i-packages.js +1 -1
- package/dist/interfaces/i-pxe.js +39 -0
- package/dist/krill/krill-prepare.js +92 -90
- package/dist/krill/krill-sequence.js +148 -145
- package/dist/krill/modules/add-user.js +11 -9
- package/dist/krill/modules/bootloader-config-ubuntu.js +25 -23
- package/dist/krill/modules/bootloader.js +11 -9
- package/dist/krill/modules/change-password.js +2 -2
- package/dist/krill/modules/del-live-user.js +8 -6
- package/dist/krill/modules/fstab.js +35 -33
- package/dist/krill/modules/grubcfg.js +8 -6
- package/dist/krill/modules/hostname.js +19 -17
- package/dist/krill/modules/initramfs-cfg.js +6 -4
- package/dist/krill/modules/initramfs.js +17 -15
- package/dist/krill/modules/locale-cfg.js +12 -10
- package/dist/krill/modules/locale.js +13 -11
- package/dist/krill/modules/m-keyboard.js +33 -31
- package/dist/krill/modules/m-timezone.js +7 -5
- package/dist/krill/modules/machine-id.js +8 -6
- package/dist/krill/modules/mkfs.js +7 -7
- package/dist/krill/modules/mount-fs.js +22 -22
- package/dist/krill/modules/mount-vfs.js +12 -12
- package/dist/krill/modules/network-cfg.js +21 -21
- package/dist/krill/modules/packages.js +20 -18
- package/dist/krill/modules/partition.js +148 -139
- package/dist/krill/modules/remove-installer-link.js +5 -3
- package/dist/krill/modules/umount.js +9 -7
- package/dist/krill/modules/unpackfs.js +8 -6
- package/dist/lib/cli-autologin.js +163 -163
- package/dist/lib/dependencies.js +10 -10
- package/dist/lib/get_address.js +6 -4
- package/dist/lib/get_dns.js +6 -4
- package/dist/lib/get_domain.js +6 -4
- package/dist/lib/get_gateway.js +6 -4
- package/dist/lib/get_hostname.js +6 -4
- package/dist/lib/get_netmask.js +6 -4
- package/dist/lib/get_password.js +8 -6
- package/dist/lib/get_root_password.js +7 -5
- package/dist/lib/get_userfullname.js +6 -4
- package/dist/lib/get_username.js +6 -4
- package/dist/lib/select_address_type.js +6 -4
- package/dist/lib/select_filesystem_type.js +8 -6
- package/dist/lib/select_installation_device.js +7 -5
- package/dist/lib/select_installation_mode.js +6 -4
- package/dist/lib/select_interface.js +6 -4
- package/dist/lib/select_keyboard_layout.js +10 -8
- package/dist/lib/select_keyboard_model.js +10 -8
- package/dist/lib/select_keyboard_option.js +10 -8
- package/dist/lib/select_keyboard_variant.js +10 -8
- package/dist/lib/select_languages.js +9 -7
- package/dist/lib/select_regions.js +6 -4
- package/dist/lib/select_user_swap_choice.js +8 -6
- package/dist/lib/select_zones.js +12 -10
- package/dist/lib/utils.js +3 -3
- package/package.json +12 -5
- package/dist/dhcpd/dhcpd.js +0 -222
- package/dist/dhcpd/index.js +0 -7
- package/dist/dhcpd/packet/converters.js +0 -377
- package/dist/dhcpd/packet/options.js +0 -2
- package/dist/dhcpd/packet/types.js +0 -2
- package/dist/dhcpd/packet.js +0 -251
- package/dist/dhcpd/proxy.js +0 -152
- package/dist/dhcpd/server.js +0 -152
- package/dist/dhcpd/sprintf.js +0 -170
- package/dist/dhcpd/utils.js +0 -190
- package/dist/interfaces/i-pxe-options.js +0 -2
package/dist/commands/syncto.js
CHANGED
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
* email: piero.proietti@gmail.com
|
|
6
6
|
* license: MIT
|
|
7
7
|
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
8
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
const tslib_1 = require("tslib");
|
|
10
12
|
/**
|
|
11
13
|
*
|
|
12
14
|
* syncfrom (restore)
|
|
@@ -24,14 +26,14 @@ const tslib_1 = require("tslib");
|
|
|
24
26
|
* this should not be available by default
|
|
25
27
|
*/
|
|
26
28
|
const core_1 = require("@oclif/core");
|
|
27
|
-
const fs_1 =
|
|
28
|
-
const path_1 =
|
|
29
|
-
const
|
|
30
|
-
const
|
|
29
|
+
const fs_1 = __importDefault(require("fs"));
|
|
30
|
+
const path_1 = __importDefault(require("path"));
|
|
31
|
+
const utils_js_1 = __importDefault(require("../classes/utils.js"));
|
|
32
|
+
const utils_js_2 = require("../lib/utils.js");
|
|
31
33
|
// backup
|
|
32
34
|
const promises_1 = require("fs/promises");
|
|
33
35
|
const fs_2 = require("fs");
|
|
34
|
-
const
|
|
36
|
+
const users_js_1 = __importDefault(require("../classes/users.js"));
|
|
35
37
|
/**
|
|
36
38
|
*
|
|
37
39
|
*/
|
|
@@ -53,7 +55,7 @@ class Syncto extends core_1.Command {
|
|
|
53
55
|
if (flags.verbose) {
|
|
54
56
|
this.verbose = true;
|
|
55
57
|
}
|
|
56
|
-
this.echo =
|
|
58
|
+
this.echo = utils_js_1.default.setEcho(this.verbose);
|
|
57
59
|
let fileVolume = '';
|
|
58
60
|
if (flags.file) {
|
|
59
61
|
fileVolume = flags.file;
|
|
@@ -62,10 +64,10 @@ class Syncto extends core_1.Command {
|
|
|
62
64
|
if (flags.delete) {
|
|
63
65
|
destDelete = true;
|
|
64
66
|
}
|
|
65
|
-
if (
|
|
67
|
+
if (utils_js_1.default.isRoot()) {
|
|
66
68
|
/**
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
* restore con file
|
|
70
|
+
*/
|
|
69
71
|
if (fileVolume === '') {
|
|
70
72
|
fileVolume = '/tmp/luks-eggs-data';
|
|
71
73
|
}
|
|
@@ -77,7 +79,7 @@ class Syncto extends core_1.Command {
|
|
|
77
79
|
await this.luksCreate();
|
|
78
80
|
}
|
|
79
81
|
else {
|
|
80
|
-
|
|
82
|
+
utils_js_1.default.warning(`LUKS volume: ${this.luksFile} exist, don't need create`);
|
|
81
83
|
}
|
|
82
84
|
if (fs_1.default.existsSync(fileVolume)) {
|
|
83
85
|
await this.luksOpen();
|
|
@@ -86,7 +88,7 @@ class Syncto extends core_1.Command {
|
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
90
|
else {
|
|
89
|
-
|
|
91
|
+
utils_js_1.default.useRoot(this.id);
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
/**
|
|
@@ -94,30 +96,28 @@ class Syncto extends core_1.Command {
|
|
|
94
96
|
*/
|
|
95
97
|
async backup(destDelete = false) {
|
|
96
98
|
if (this.verbose) {
|
|
97
|
-
|
|
99
|
+
utils_js_1.default.warning('backup');
|
|
98
100
|
}
|
|
99
|
-
|
|
101
|
+
utils_js_1.default.warning(`Saving users' data on ${this.luksFile}`);
|
|
100
102
|
const usersArray = await this.usersFill();
|
|
101
|
-
for (
|
|
102
|
-
if (
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
cmd = `rsync --archive --delete ${source} ${dest}`;
|
|
111
|
-
}
|
|
112
|
-
await (0, utils_2.exec)(cmd, this.echo);
|
|
103
|
+
for (const element of usersArray) {
|
|
104
|
+
if (element.saveIt && fs_1.default.existsSync(element.home)) {
|
|
105
|
+
await (0, utils_js_2.exec)(`mkdir -p ${this.luksMountpoint}/ROOT${element.home}`, this.echo);
|
|
106
|
+
const source = element.home;
|
|
107
|
+
let dest = this.luksMountpoint + '/ROOT' + element.home;
|
|
108
|
+
dest = dest.slice(0, Math.max(0, dest.lastIndexOf('/')));
|
|
109
|
+
let cmd = `rsync --archive ${source} ${dest}`;
|
|
110
|
+
if (destDelete) {
|
|
111
|
+
cmd = `rsync --archive --delete ${source} ${dest}`;
|
|
113
112
|
}
|
|
113
|
+
await (0, utils_js_2.exec)(cmd, this.echo);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
|
|
117
|
-
await (0,
|
|
118
|
-
await (0,
|
|
119
|
-
await (0,
|
|
120
|
-
await (0,
|
|
116
|
+
utils_js_1.default.warning(`Saving users' accounts on ${this.luksFile}`);
|
|
117
|
+
await (0, utils_js_2.exec)(`mkdir -p ${this.luksMountpoint}/etc`, this.echo);
|
|
118
|
+
await (0, utils_js_2.exec)(`cp /etc/passwd ${this.luksMountpoint}/etc`, this.echo);
|
|
119
|
+
await (0, utils_js_2.exec)(`cp /etc/shadow ${this.luksMountpoint}/etc`, this.echo);
|
|
120
|
+
await (0, utils_js_2.exec)(`cp /etc/group ${this.luksMountpoint}/etc`, this.echo);
|
|
121
121
|
}
|
|
122
122
|
/**
|
|
123
123
|
* usersFill
|
|
@@ -126,9 +126,9 @@ class Syncto extends core_1.Command {
|
|
|
126
126
|
const usersArray = [];
|
|
127
127
|
await (0, promises_1.access)('/etc/passwd', fs_2.constants.R_OK | fs_2.constants.W_OK);
|
|
128
128
|
const passwd = fs_1.default.readFileSync('/etc/passwd', 'utf-8').split('\n');
|
|
129
|
-
for (
|
|
130
|
-
|
|
131
|
-
const users = new
|
|
129
|
+
for (const element of passwd) {
|
|
130
|
+
const line = element.split(':');
|
|
131
|
+
const users = new users_js_1.default(line[0], line[1], line[2], line[3], line[4], line[5], line[6]);
|
|
132
132
|
await users.getValues();
|
|
133
133
|
if (users.password !== undefined) {
|
|
134
134
|
usersArray.push(users);
|
|
@@ -140,61 +140,58 @@ class Syncto extends core_1.Command {
|
|
|
140
140
|
*
|
|
141
141
|
*/
|
|
142
142
|
async luksCreate() {
|
|
143
|
-
|
|
143
|
+
utils_js_1.default.warning(`Creating LUKS Volume on ${this.luksFile}`);
|
|
144
144
|
let totalSize = 0;
|
|
145
|
-
console.log(
|
|
145
|
+
console.log('I will extimate volume size from your private data:');
|
|
146
146
|
const users = await this.usersFill();
|
|
147
|
-
for (
|
|
148
|
-
if (
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
utype = 'service';
|
|
153
|
-
}
|
|
154
|
-
console.log(`- ${utype}: ${users[i].login.padEnd(16)} \thome: ${users[i].home} \tsize: ${utils_1.default.formatBytes(users[i].size)} \tBytes: ${users[i].size} `);
|
|
155
|
-
totalSize += users[i].size;
|
|
147
|
+
for (const user of users) {
|
|
148
|
+
if (user.login !== 'root' && user.saveIt) {
|
|
149
|
+
let utype = 'user ';
|
|
150
|
+
if (Number.parseInt(user.uid) < 1000) {
|
|
151
|
+
utype = 'service';
|
|
156
152
|
}
|
|
153
|
+
console.log(`- ${utype}: ${user.login.padEnd(16)} \thome: ${user.home} \tsize: ${utils_js_1.default.formatBytes(user.size)} \tBytes: ${user.size} `);
|
|
154
|
+
totalSize += user.size;
|
|
157
155
|
}
|
|
158
156
|
}
|
|
159
|
-
console.log(`Total\t\t\t\t\t\t\tsize: ${
|
|
157
|
+
console.log(`Total\t\t\t\t\t\t\tsize: ${utils_js_1.default.formatBytes(totalSize)} \tBytes: ${totalSize}`);
|
|
160
158
|
/**
|
|
161
|
-
|
|
162
|
-
|
|
159
|
+
* after we get size, we can start building luks-volume
|
|
160
|
+
*/
|
|
163
161
|
const binaryHeaderSize = 4194304;
|
|
164
|
-
|
|
162
|
+
const volumeSize = totalSize * 1.5 + binaryHeaderSize;
|
|
165
163
|
// Deciding blockSize and blocks
|
|
166
|
-
|
|
164
|
+
const blockSize = 512;
|
|
167
165
|
let blocks = Math.ceil(volumeSize / blockSize);
|
|
168
166
|
// We need a minimum size of 32 MB
|
|
169
|
-
|
|
170
|
-
if (totalSize < minimunSize) {
|
|
171
|
-
}
|
|
167
|
+
const minimunSize = 134217728; // 128 * 1024 *1024
|
|
168
|
+
if (totalSize < minimunSize) { }
|
|
172
169
|
if (blocks * blockSize < minimunSize) {
|
|
173
170
|
blocks = Math.ceil(minimunSize / blockSize);
|
|
174
171
|
}
|
|
175
|
-
|
|
176
|
-
await (0,
|
|
172
|
+
utils_js_1.default.warning(`Creating an encrypted file ${this.luksFile} blocks=${blocks}, block size: ${blockSize}, size: ${utils_js_1.default.formatBytes(blocks * blockSize)}`);
|
|
173
|
+
await (0, utils_js_2.exec)(`dd if=/dev/zero of=${this.luksFile} bs=${blockSize} count=${blocks}`, this.echo);
|
|
177
174
|
// find first unused device
|
|
178
|
-
|
|
175
|
+
const findFirstUnusedDevice = await (0, utils_js_2.exec)('losetup -f', { echo: this.verbose, ignore: false, capture: true });
|
|
179
176
|
let firstUnusedDevice = '';
|
|
180
177
|
if (findFirstUnusedDevice.code !== 0) {
|
|
181
|
-
|
|
178
|
+
utils_js_1.default.pressKeyToExit(`Error: ${findFirstUnusedDevice.code} ${findFirstUnusedDevice.data}`);
|
|
182
179
|
}
|
|
183
180
|
else {
|
|
184
181
|
firstUnusedDevice = findFirstUnusedDevice.data.trim();
|
|
185
182
|
}
|
|
186
|
-
await (0,
|
|
183
|
+
await (0, utils_js_2.exec)(`losetup ${firstUnusedDevice} ${this.luksFile}`, this.echo);
|
|
187
184
|
// Utils.warning('Enter a large string of random text below to setup the pre-encryption')
|
|
188
|
-
await (0,
|
|
185
|
+
await (0, utils_js_2.exec)(`cryptsetup -y -v --type luks2 luksFormat ${this.luksFile}`, utils_js_1.default.setEcho(true));
|
|
189
186
|
// Utils.warning(`Enter the desired passphrase for the encrypted ${this.luksName} below`)
|
|
190
|
-
|
|
187
|
+
const crytoSetup = await (0, utils_js_2.exec)(`cryptsetup luksOpen --type luks2 ${this.luksFile} ${this.luksName}`, utils_js_1.default.setEcho(true));
|
|
191
188
|
if (crytoSetup.code !== 0) {
|
|
192
|
-
|
|
189
|
+
utils_js_1.default.pressKeyToExit(`Error: ${crytoSetup.code} ${crytoSetup.data}`);
|
|
193
190
|
}
|
|
194
|
-
|
|
195
|
-
|
|
191
|
+
utils_js_1.default.warning(`Formatting ${this.luksDevice} to ext2`);
|
|
192
|
+
const formatting = await (0, utils_js_2.exec)(`sudo mkfs.ext2 ${this.luksDevice}`, this.echo);
|
|
196
193
|
if (formatting.code !== 0) {
|
|
197
|
-
|
|
194
|
+
utils_js_1.default.pressKeyToExit(`Error: ${formatting.code} ${formatting.data}`);
|
|
198
195
|
}
|
|
199
196
|
// this.luksClose()
|
|
200
197
|
}
|
|
@@ -204,44 +201,44 @@ class Syncto extends core_1.Command {
|
|
|
204
201
|
async luksOpen() {
|
|
205
202
|
if (!fs_1.default.existsSync(this.luksDevice)) {
|
|
206
203
|
// Utils.warning(`LUKS open volume: ${this.luksName}`)
|
|
207
|
-
await (0,
|
|
204
|
+
await (0, utils_js_2.exec)(`cryptsetup luksOpen --type luks2 ${this.luksFile} ${this.luksName}`, utils_js_1.default.setEcho(true));
|
|
208
205
|
}
|
|
209
206
|
else {
|
|
210
|
-
|
|
207
|
+
utils_js_1.default.warning(`LUKS volume: ${this.luksName} already open`);
|
|
211
208
|
}
|
|
212
209
|
if (!fs_1.default.existsSync(this.luksMountpoint)) {
|
|
213
|
-
await (0,
|
|
210
|
+
await (0, utils_js_2.exec)(`mkdir -p ${this.luksMountpoint}`, this.echo);
|
|
214
211
|
}
|
|
215
|
-
if (!
|
|
216
|
-
|
|
217
|
-
await (0,
|
|
212
|
+
if (!utils_js_1.default.isMountpoint(this.luksMountpoint)) {
|
|
213
|
+
utils_js_1.default.warning(`mount volume: ${this.luksDevice} on ${this.luksMountpoint}`);
|
|
214
|
+
await (0, utils_js_2.exec)(`mount ${this.luksDevice} ${this.luksMountpoint}`, this.echo);
|
|
218
215
|
}
|
|
219
216
|
else {
|
|
220
|
-
|
|
217
|
+
utils_js_1.default.warning(`mount volume: ${this.luksDevice} already mounted on ${this.luksMountpoint}`);
|
|
221
218
|
}
|
|
222
219
|
}
|
|
223
220
|
/**
|
|
224
221
|
*
|
|
225
222
|
*/
|
|
226
223
|
async luksClose() {
|
|
227
|
-
if (
|
|
228
|
-
await (0,
|
|
224
|
+
if (utils_js_1.default.isMountpoint(this.luksMountpoint)) {
|
|
225
|
+
await (0, utils_js_2.exec)(`umount ${this.luksMountpoint}`, this.echo);
|
|
229
226
|
}
|
|
230
227
|
if (fs_1.default.existsSync(this.luksDevice)) {
|
|
231
|
-
|
|
232
|
-
await (0,
|
|
228
|
+
utils_js_1.default.warning(`LUKS close volume: ${this.luksName}`);
|
|
229
|
+
await (0, utils_js_2.exec)(`cryptsetup luksClose ${this.luksName}`, this.echo);
|
|
233
230
|
}
|
|
234
231
|
}
|
|
235
232
|
}
|
|
236
233
|
exports.default = Syncto;
|
|
237
234
|
Syncto.flags = {
|
|
238
235
|
delete: core_1.Flags.string({ description: 'rsync --delete delete extraneous files from dest dirs' }),
|
|
239
|
-
file: core_1.Flags.string({ char: 'f', description:
|
|
236
|
+
file: core_1.Flags.string({ char: 'f', description: 'file LUKS volume encrypted' }),
|
|
240
237
|
help: core_1.Flags.help({ char: 'h' }),
|
|
241
|
-
verbose: core_1.Flags.boolean({ char: 'v', description: 'verbose' })
|
|
238
|
+
verbose: core_1.Flags.boolean({ char: 'v', description: 'verbose' }),
|
|
242
239
|
};
|
|
243
|
-
Syncto.description =
|
|
240
|
+
Syncto.description = 'saves users and user data in a LUKS volume inside the iso';
|
|
244
241
|
Syncto.examples = [
|
|
245
|
-
|
|
246
|
-
|
|
242
|
+
'sudo eggs syncto',
|
|
243
|
+
'sudo eggs syncto --file /path/to/fileLUKS',
|
|
247
244
|
];
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
6
|
/**
|
|
5
7
|
* penguins-eggs-v7 based on Debian live
|
|
6
8
|
* author: Piero Proietti
|
|
@@ -8,25 +10,25 @@ const tslib_1 = require("tslib");
|
|
|
8
10
|
* license: MIT
|
|
9
11
|
*/
|
|
10
12
|
const core_1 = require("@oclif/core");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
+
const utils_js_1 = __importDefault(require("../../classes/utils.js"));
|
|
14
|
+
const bleach_js_1 = __importDefault(require("../../classes/bleach.js"));
|
|
13
15
|
class Clean extends core_1.Command {
|
|
14
16
|
async run() {
|
|
15
17
|
const { flags } = await this.parse(Clean);
|
|
16
|
-
|
|
18
|
+
utils_js_1.default.titles(this.id + ' ' + this.argv);
|
|
17
19
|
let verbose = false;
|
|
18
20
|
if (flags.verbose) {
|
|
19
21
|
verbose = true;
|
|
20
22
|
}
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
if (nointeractive || await
|
|
24
|
-
const bleach = new
|
|
23
|
+
const nointeractive = flags.nointeractive;
|
|
24
|
+
if (utils_js_1.default.isRoot()) {
|
|
25
|
+
if (nointeractive || await utils_js_1.default.customConfirm('Select yes to continue...')) {
|
|
26
|
+
const bleach = new bleach_js_1.default();
|
|
25
27
|
bleach.clean(verbose);
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
30
|
else {
|
|
29
|
-
|
|
31
|
+
utils_js_1.default.useRoot(this.id);
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
}
|
|
@@ -34,9 +36,9 @@ exports.default = Clean;
|
|
|
34
36
|
Clean.flags = {
|
|
35
37
|
help: core_1.Flags.help({ char: 'h' }),
|
|
36
38
|
nointeractive: core_1.Flags.boolean({ char: 'n', description: 'no user interaction' }),
|
|
37
|
-
verbose: core_1.Flags.boolean({ char: 'v', description: 'verbose' })
|
|
39
|
+
verbose: core_1.Flags.boolean({ char: 'v', description: 'verbose' }),
|
|
38
40
|
};
|
|
39
41
|
Clean.description = 'clean system log, apt, etc';
|
|
40
42
|
Clean.examples = [
|
|
41
|
-
|
|
43
|
+
'sudo eggs tools clean',
|
|
42
44
|
];
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
6
|
/**
|
|
5
7
|
* penguins-eggs-v7 based on Debian live
|
|
6
8
|
* author: Piero Proietti
|
|
@@ -8,11 +10,11 @@ const tslib_1 = require("tslib");
|
|
|
8
10
|
* license: MIT
|
|
9
11
|
*/
|
|
10
12
|
const core_1 = require("@oclif/core");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const fs_1 =
|
|
15
|
-
const fkey =
|
|
13
|
+
const distro_js_1 = __importDefault(require("../../classes/distro.js"));
|
|
14
|
+
const utils_js_1 = __importDefault(require("../../classes/utils.js"));
|
|
15
|
+
const utils_js_2 = require("../../lib/utils.js");
|
|
16
|
+
const fs_1 = __importDefault(require("fs"));
|
|
17
|
+
const fkey = '/etc/apt/trusted.gpg.d/penguins-eggs-key.gpg';
|
|
16
18
|
const flist = '/etc/apt/sources.list.d/penguins-eggs-ppa.list';
|
|
17
19
|
/**
|
|
18
20
|
*
|
|
@@ -20,24 +22,24 @@ const flist = '/etc/apt/sources.list.d/penguins-eggs-ppa.list';
|
|
|
20
22
|
class Ppa extends core_1.Command {
|
|
21
23
|
async run() {
|
|
22
24
|
const { flags } = await this.parse(Ppa);
|
|
23
|
-
|
|
25
|
+
utils_js_1.default.titles(this.id + ' ' + this.argv);
|
|
24
26
|
let verbose = false;
|
|
25
27
|
if (flags.verbose) {
|
|
26
28
|
verbose = true;
|
|
27
29
|
}
|
|
28
|
-
|
|
29
|
-
const distro = new
|
|
30
|
+
const nointeractive = flags.nointeractive;
|
|
31
|
+
const distro = new distro_js_1.default();
|
|
30
32
|
if (distro.familyId === 'debian') {
|
|
31
|
-
if (
|
|
33
|
+
if (utils_js_1.default.isRoot()) {
|
|
32
34
|
if (flags.remove) {
|
|
33
|
-
|
|
34
|
-
if (nointeractive || await
|
|
35
|
+
utils_js_1.default.warning(`Are you sure to remove ${flist} to your repositories?`);
|
|
36
|
+
if (nointeractive || await utils_js_1.default.customConfirm('Select yes to continue...')) {
|
|
35
37
|
await remove();
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
if (flags.add) {
|
|
39
|
-
|
|
40
|
-
if (nointeractive || await
|
|
41
|
+
utils_js_1.default.warning(`Are you sure to add ${flist} to your repositories?`);
|
|
42
|
+
if (nointeractive || await utils_js_1.default.customConfirm('Select yes to continue...')) {
|
|
41
43
|
await clean();
|
|
42
44
|
await add();
|
|
43
45
|
}
|
|
@@ -45,7 +47,7 @@ class Ppa extends core_1.Command {
|
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
49
|
else {
|
|
48
|
-
|
|
50
|
+
utils_js_1.default.warning('you can use ppa only for debian family');
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
53
|
}
|
|
@@ -55,34 +57,34 @@ Ppa.flags = {
|
|
|
55
57
|
help: core_1.Flags.help({ char: 'h' }),
|
|
56
58
|
nointeractive: core_1.Flags.boolean({ char: 'n', description: 'no user interaction' }),
|
|
57
59
|
remove: core_1.Flags.boolean({ char: 'r', description: 'remove penguins-eggs PPA repository' }),
|
|
58
|
-
verbose: core_1.Flags.boolean({ char: 'v', description: 'verbose' })
|
|
60
|
+
verbose: core_1.Flags.boolean({ char: 'v', description: 'verbose' }),
|
|
59
61
|
};
|
|
60
62
|
Ppa.description = 'add/remove PPA repositories (Debian family)';
|
|
61
63
|
Ppa.examples = [
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
'sudo eggs tools ppa --add',
|
|
65
|
+
'sudo eggs tools ppa --remove',
|
|
64
66
|
];
|
|
65
67
|
/**
|
|
66
68
|
* add ppa
|
|
67
69
|
*/
|
|
68
70
|
async function add() {
|
|
69
|
-
await (0,
|
|
71
|
+
await (0, utils_js_2.exec)(`curl -sS https://pieroproietti.github.io/penguins-eggs-ppa/KEY.gpg| gpg --dearmor | sudo tee ${fkey} > /dev/null`);
|
|
70
72
|
const content = `deb [signed-by=${fkey}] https://pieroproietti.github.io/penguins-eggs-ppa ./\n`;
|
|
71
73
|
fs_1.default.writeFileSync(flist, content);
|
|
72
|
-
await (0,
|
|
74
|
+
await (0, utils_js_2.exec)('apt-get update');
|
|
73
75
|
}
|
|
74
76
|
/**
|
|
75
77
|
* remove ppa
|
|
76
78
|
*/
|
|
77
79
|
async function remove() {
|
|
78
80
|
await clean();
|
|
79
|
-
await (0,
|
|
81
|
+
await (0, utils_js_2.exec)('apt-get update');
|
|
80
82
|
}
|
|
81
83
|
/**
|
|
82
84
|
*
|
|
83
85
|
*/
|
|
84
86
|
async function clean() {
|
|
85
|
-
await (0,
|
|
86
|
-
await (0,
|
|
87
|
-
await (0,
|
|
87
|
+
await (0, utils_js_2.exec)('rm -f /etc/apt/trusted.gpg.d/penguins-eggs*');
|
|
88
|
+
await (0, utils_js_2.exec)('rm -f /etc/apt/sources.list.d/penguins-eggs*');
|
|
89
|
+
await (0, utils_js_2.exec)('rm -f /usr/share/keyrings/penguins-eggs*');
|
|
88
90
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
6
|
/**
|
|
5
7
|
* penguins-eggs-v7 based on Debian live
|
|
6
8
|
* author: Piero Proietti
|
|
@@ -8,32 +10,32 @@ const tslib_1 = require("tslib");
|
|
|
8
10
|
* license: MIT
|
|
9
11
|
*/
|
|
10
12
|
const core_1 = require("@oclif/core");
|
|
11
|
-
const
|
|
12
|
-
const fs_1 =
|
|
13
|
-
const
|
|
13
|
+
const utils_js_1 = __importDefault(require("../../classes/utils.js"));
|
|
14
|
+
const fs_1 = __importDefault(require("fs"));
|
|
15
|
+
const xdg_js_1 = __importDefault(require("../../classes/xdg.js"));
|
|
14
16
|
class Skel extends core_1.Command {
|
|
15
17
|
async run() {
|
|
16
|
-
|
|
18
|
+
utils_js_1.default.titles(this.id + ' ' + this.argv);
|
|
17
19
|
const { flags } = await this.parse(Skel);
|
|
18
20
|
let verbose = false;
|
|
19
21
|
if (flags.verbose) {
|
|
20
22
|
verbose = true;
|
|
21
23
|
}
|
|
22
24
|
let user = '';
|
|
23
|
-
user = flags.user ? flags.user : await
|
|
24
|
-
|
|
25
|
+
user = flags.user ? flags.user : await utils_js_1.default.getPrimaryUser();
|
|
26
|
+
utils_js_1.default.warning(`user: ${user}`);
|
|
25
27
|
const homeSource = `/home/${user}`;
|
|
26
28
|
if (!fs_1.default.existsSync(homeSource)) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
utils_js_1.default.error(`User ${user} not exist or not exist a proper home`);
|
|
30
|
+
utils_js_1.default.warning('terminate');
|
|
29
31
|
process.exit(0);
|
|
30
32
|
}
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
if (utils_js_1.default.isRoot()) {
|
|
34
|
+
utils_js_1.default.titles('skel');
|
|
35
|
+
xdg_js_1.default.skel(user, verbose);
|
|
34
36
|
}
|
|
35
37
|
else {
|
|
36
|
-
|
|
38
|
+
utils_js_1.default.useRoot(this.id);
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
}
|
|
@@ -41,10 +43,10 @@ exports.default = Skel;
|
|
|
41
43
|
Skel.flags = {
|
|
42
44
|
help: core_1.Flags.help({ char: 'h' }),
|
|
43
45
|
user: core_1.Flags.string({ char: 'u', description: 'user to be used' }),
|
|
44
|
-
verbose: core_1.Flags.boolean({ char: 'v' })
|
|
46
|
+
verbose: core_1.Flags.boolean({ char: 'v' }),
|
|
45
47
|
};
|
|
46
48
|
Skel.description = 'update skel from home configuration';
|
|
47
49
|
Skel.examples = [
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
'sudo eggs skel',
|
|
51
|
+
'sudo eggs skel --user user-to-be-copied',
|
|
50
52
|
];
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
6
|
const core_1 = require("@oclif/core");
|
|
5
|
-
const
|
|
6
|
-
const axios_1 =
|
|
7
|
-
const node_https_1 =
|
|
7
|
+
const utils_js_1 = __importDefault(require("../../classes/utils.js"));
|
|
8
|
+
const axios_1 = __importDefault(require("axios"));
|
|
9
|
+
const node_https_1 = __importDefault(require("node:https"));
|
|
8
10
|
const agent = new node_https_1.default.Agent({
|
|
9
|
-
rejectUnauthorized: false
|
|
11
|
+
rejectUnauthorized: false,
|
|
10
12
|
});
|
|
11
13
|
/**
|
|
12
14
|
*
|
|
@@ -17,7 +19,7 @@ class ToolsStat extends core_1.Command {
|
|
|
17
19
|
*/
|
|
18
20
|
async run() {
|
|
19
21
|
const { args, flags } = await this.parse(ToolsStat);
|
|
20
|
-
|
|
22
|
+
utils_js_1.default.titles(this.id + ' ' + this.argv);
|
|
21
23
|
const yesterday = new Date();
|
|
22
24
|
yesterday.setDate(yesterday.getDate() - 1);
|
|
23
25
|
// current date
|
|
@@ -61,11 +63,11 @@ exports.default = ToolsStat;
|
|
|
61
63
|
ToolsStat.flags = {
|
|
62
64
|
help: core_1.Flags.help({ char: 'h' }),
|
|
63
65
|
month: core_1.Flags.boolean({ char: 'm', description: 'current month' }),
|
|
64
|
-
year: core_1.Flags.boolean({ char: 'y', description: 'current year' })
|
|
66
|
+
year: core_1.Flags.boolean({ char: 'y', description: 'current year' }),
|
|
65
67
|
};
|
|
66
68
|
ToolsStat.description = 'get statistics from sourceforge';
|
|
67
69
|
ToolsStat.examples = [
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
'eggs tools stat',
|
|
71
|
+
'eggs tools stat --month',
|
|
72
|
+
'eggs tools stat --year',
|
|
71
73
|
];
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
6
|
/**
|
|
5
7
|
* penguins-eggs-v7 based on Debian live
|
|
6
8
|
* author: Piero Proietti
|
|
@@ -8,10 +10,10 @@ const tslib_1 = require("tslib");
|
|
|
8
10
|
* license: MIT
|
|
9
11
|
*/
|
|
10
12
|
const core_1 = require("@oclif/core");
|
|
11
|
-
const shelljs_1 =
|
|
12
|
-
const node_fs_1 =
|
|
13
|
-
const
|
|
14
|
-
const
|
|
13
|
+
const shelljs_1 = __importDefault(require("shelljs"));
|
|
14
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
15
|
+
const utils_js_1 = __importDefault(require("../../classes/utils.js"));
|
|
16
|
+
const yolk_js_1 = __importDefault(require("../../classes/yolk.js"));
|
|
15
17
|
/**
|
|
16
18
|
*
|
|
17
19
|
*/
|
|
@@ -20,31 +22,31 @@ class DevYolk extends core_1.Command {
|
|
|
20
22
|
*
|
|
21
23
|
*/
|
|
22
24
|
async run() {
|
|
23
|
-
|
|
25
|
+
utils_js_1.default.titles(this.id + ' ' + this.argv);
|
|
24
26
|
const { flags } = await this.parse(DevYolk);
|
|
25
27
|
let verbose = false;
|
|
26
28
|
if (flags.verbose) {
|
|
27
29
|
verbose = true;
|
|
28
30
|
}
|
|
29
|
-
if (
|
|
31
|
+
if (utils_js_1.default.isRoot()) {
|
|
30
32
|
if (node_fs_1.default.existsSync(DevYolk.dir)) {
|
|
31
33
|
shelljs_1.default.exec(`rm ${DevYolk.dir} -rf `);
|
|
32
34
|
}
|
|
33
|
-
const yolk = new
|
|
35
|
+
const yolk = new yolk_js_1.default();
|
|
34
36
|
await yolk.create(verbose);
|
|
35
37
|
}
|
|
36
38
|
else {
|
|
37
|
-
|
|
39
|
+
utils_js_1.default.useRoot(this.id);
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
43
|
exports.default = DevYolk;
|
|
42
44
|
DevYolk.flags = {
|
|
43
45
|
help: core_1.Flags.help({ char: 'h' }),
|
|
44
|
-
verbose: core_1.Flags.boolean({ char: 'v' })
|
|
46
|
+
verbose: core_1.Flags.boolean({ char: 'v' }),
|
|
45
47
|
};
|
|
46
48
|
DevYolk.description = 'configure eggs to install without internet';
|
|
47
49
|
DevYolk.examples = [
|
|
48
|
-
|
|
50
|
+
'sudo eggs yolk',
|
|
49
51
|
];
|
|
50
52
|
DevYolk.dir = '/var/local/yolk';
|