penguins-eggs 9.0.48 → 9.1.10
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 +81 -47
- package/assets/leaves.svg +1 -0
- package/assets/live-installer/com.github.pieroproietti.penguins-eggs.policy +25 -0
- package/assets/live-installer/filesystem.packages-remove +49 -0
- package/assets/penguins-live-installer.desktop +27 -0
- package/lib/classes/daddy.js +22 -22
- package/lib/classes/distro.d.ts +1 -1
- package/lib/classes/distro.js +1 -1
- package/lib/classes/family/debian.d.ts +4 -0
- package/lib/classes/family/debian.js +7 -0
- package/lib/classes/ovary.d.ts +6 -0
- package/lib/classes/ovary.js +21 -7
- package/lib/classes/settings.js +3 -4
- package/lib/classes/sources_list.d.ts +27 -0
- package/lib/classes/sources_list.js +103 -0
- package/lib/classes/tailor.d.ts +25 -4
- package/lib/classes/tailor.js +225 -329
- package/lib/classes/utils.d.ts +10 -0
- package/lib/classes/utils.js +31 -11
- package/lib/classes/xdg.d.ts +2 -1
- package/lib/classes/xdg.js +47 -106
- package/lib/commands/config.js +4 -2
- package/lib/commands/info.js +1 -1
- package/lib/commands/update.d.ts +0 -2
- package/lib/commands/update.js +3 -52
- package/lib/commands/wardrobe/get.d.ts +17 -0
- package/lib/commands/wardrobe/get.js +43 -0
- package/lib/commands/wardrobe/ironing.d.ts +6 -5
- package/lib/commands/wardrobe/ironing.js +80 -78
- package/lib/commands/wardrobe/list.d.ts +5 -1
- package/lib/commands/wardrobe/list.js +46 -11
- package/lib/commands/wardrobe/show.d.ts +5 -1
- package/lib/commands/wardrobe/show.js +36 -20
- package/lib/commands/wardrobe/wear.d.ts +10 -1
- package/lib/commands/wardrobe/wear.js +54 -17
- package/lib/components/elements/information.js +23 -19
- package/lib/components/elements/title.js +4 -3
- package/lib/components/finished.js +1 -0
- package/lib/components/network.js +1 -0
- package/lib/components/welcome.js +2 -2
- package/lib/interfaces/i-costume.d.ts +4 -20
- package/lib/interfaces/i-materia.d.ts +32 -0
- package/lib/interfaces/i-materia.js +2 -0
- package/lib/interfaces/index.d.ts +1 -0
- package/oclif.manifest.json +1 -1
- package/package.json +17 -19
- package/scripts/_eggs +23 -19
- package/scripts/eggs.bash +7 -6
- package/scripts/mom-cli.sh +66 -0
- package/scripts/resy.sh +1 -1
- package/assets/penguins-clinstaller.desktop +0 -24
- package/assets/penguins-minstall.desktop +0 -95
- package/lib/classes/basket.d.ts +0 -22
- package/lib/classes/basket.js +0 -114
- package/wardrobe.d/external.yml +0 -7
- package/wardrobe.d/hen/control.template +0 -10
- package/wardrobe.d/hen/index.yml +0 -212
- package/wardrobe.d/kde/index.yml +0 -41
- package/wardrobe.d/lamp/index.yml +0 -35
- package/wardrobe.d/xfce4/index.yml +0 -53
|
@@ -1,122 +1,124 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Ironing = void 0;
|
|
3
4
|
const tslib_1 = require("tslib");
|
|
4
5
|
const core_1 = require("@oclif/core");
|
|
5
6
|
const utils_1 = tslib_1.__importDefault(require("../../classes/utils"));
|
|
6
7
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
7
8
|
const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
|
|
8
9
|
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
*/
|
|
12
10
|
class Ironing extends core_1.Command {
|
|
13
11
|
async run() {
|
|
14
12
|
const { args, flags } = await this.parse(Ironing);
|
|
13
|
+
utils_1.default.titles(this.id + ' ' + this.argv);
|
|
15
14
|
let verbose = false;
|
|
16
15
|
if (flags.verbose) {
|
|
17
16
|
verbose = true;
|
|
18
17
|
}
|
|
19
18
|
const echo = utils_1.default.setEcho(verbose);
|
|
20
|
-
utils_1.default.
|
|
21
|
-
// Well be usefull to have scrolling
|
|
22
|
-
// Limit scrolling from line 0 to line 10.
|
|
23
|
-
// await exec(`printf '\e[5;24r'`)
|
|
24
|
-
let costume = "xfce4";
|
|
25
|
-
if (flags.costume !== undefined) {
|
|
26
|
-
costume = flags.costume;
|
|
27
|
-
}
|
|
28
|
-
let wardrobe = `${path_1.default.resolve(__dirname, '../../../wardrobe.d')}`;
|
|
29
|
-
let position = "eggs";
|
|
19
|
+
let wardrobe = await utils_1.default.wardrobe();
|
|
30
20
|
if (flags.wardrobe !== undefined) {
|
|
31
|
-
position = "external";
|
|
32
21
|
wardrobe = flags.wardrobe;
|
|
33
22
|
}
|
|
34
|
-
if (
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
23
|
+
if (!wardrobe.endsWith('/')) {
|
|
24
|
+
wardrobe += '/';
|
|
25
|
+
}
|
|
26
|
+
wardrobe = `${path_1.default.resolve(process.cwd(), wardrobe)}/`;
|
|
27
|
+
if (!fs_1.default.existsSync(wardrobe)) {
|
|
28
|
+
utils_1.default.warning(`wardrobe: ${wardrobe} not found!`);
|
|
29
|
+
process.exit();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* costume
|
|
33
|
+
*/
|
|
34
|
+
let costume = 'costumes/colibri';
|
|
35
|
+
if (this.argv['0'] !== undefined) {
|
|
36
|
+
costume = this.argv['0'];
|
|
37
|
+
if (costume.substring(0, 8) !== 'costumes' && costume.substring(0, 11) !== 'accessories' && costume.substring(0, 7) !== 'servers') {
|
|
38
|
+
costume = `costumes/${costume}`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
costume = wardrobe + costume;
|
|
42
|
+
/**
|
|
43
|
+
* tailorList
|
|
44
|
+
*/
|
|
45
|
+
let tailorList = `${costume}/index.yml`;
|
|
46
|
+
if (!fs_1.default.existsSync(tailorList)) {
|
|
47
|
+
utils_1.default.warning(`index.yml not found in : ${costume}!`);
|
|
48
|
+
process.exit();
|
|
49
|
+
}
|
|
50
|
+
const orig = js_yaml_1.default.load(fs_1.default.readFileSync(tailorList, 'utf-8'));
|
|
51
|
+
let sorted = orig;
|
|
52
|
+
sorted.name = orig.name;
|
|
53
|
+
sorted.description = orig.description;
|
|
54
|
+
sorted.author = orig.author;
|
|
55
|
+
sorted.release = orig.release;
|
|
56
|
+
sorted.distributions = orig.distributions.sort();
|
|
57
|
+
if (orig.sequence !== undefined) {
|
|
45
58
|
if (orig.sequence.repositories !== undefined) {
|
|
46
59
|
sorted.sequence.repositories = orig.sequence.repositories;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
sorted.sequence.repositories.sourcesList = orig.sequence.repositories.sourcesList;
|
|
53
|
-
}
|
|
54
|
-
if (orig.sequence.dependencies !== undefined) {
|
|
55
|
-
if (orig.sequence.dependencies[0] !== null) {
|
|
56
|
-
sorted.sequence.dependencies = orig.sequence.dependencies.sort();
|
|
60
|
+
if (orig.sequence.repositories.sources_list !== undefined) {
|
|
61
|
+
sorted.sequence.repositories.sources_list = orig.sequence.repositories.sources_list;
|
|
62
|
+
}
|
|
63
|
+
if (orig.sequence.repositories.sources_list_d !== undefined) {
|
|
64
|
+
sorted.sequence.repositories.sources_list_d = orig.sequence.repositories.sources_list_d;
|
|
57
65
|
}
|
|
66
|
+
sorted.sequence.repositories.update = orig.sequence.repositories.update;
|
|
67
|
+
sorted.sequence.repositories.upgrade = orig.sequence.repositories.upgrade;
|
|
68
|
+
}
|
|
69
|
+
if (orig.sequence.preinst !== undefined) {
|
|
70
|
+
sorted.sequence.preinst = orig.sequence.preinst;
|
|
58
71
|
}
|
|
59
72
|
if (orig.sequence.packages !== undefined) {
|
|
60
|
-
if (orig.sequence.packages
|
|
73
|
+
if (Array.isArray(orig.sequence.packages)) {
|
|
61
74
|
sorted.sequence.packages = orig.sequence.packages.sort();
|
|
62
75
|
}
|
|
63
76
|
}
|
|
64
|
-
if (orig.sequence.
|
|
65
|
-
if (orig.sequence.
|
|
66
|
-
sorted.sequence.
|
|
77
|
+
if (orig.sequence.packages_no_install_recommends !== undefined) {
|
|
78
|
+
if (Array.isArray(orig.sequence.packages_no_install_recommends)) {
|
|
79
|
+
sorted.sequence.packages_no_install_recommends = orig.sequence.packages_no_install_recommends.sort();
|
|
67
80
|
}
|
|
68
81
|
}
|
|
69
|
-
if (orig.sequence.
|
|
70
|
-
|
|
71
|
-
sorted.sequence.packagesPip = orig.sequence.packagesPip.sort();
|
|
72
|
-
}
|
|
82
|
+
if (orig.sequence.debs !== undefined) {
|
|
83
|
+
sorted.sequence.debs = orig.sequence.debs;
|
|
73
84
|
}
|
|
74
|
-
if (orig.sequence.
|
|
75
|
-
if (orig.sequence.
|
|
76
|
-
sorted.sequence.
|
|
77
|
-
}
|
|
78
|
-
if (orig.sequence.firmwares.drivers_graphics_tablet !== undefined) {
|
|
79
|
-
sorted.sequence.firmwares.drivers_graphics_tablet = orig.sequence.firmwares.drivers_graphics_tablet.sort();
|
|
80
|
-
}
|
|
81
|
-
if (orig.sequence.firmwares.drivers_network !== undefined) {
|
|
82
|
-
sorted.sequence.firmwares.drivers_network = orig.sequence.firmwares.drivers_network.sort();
|
|
83
|
-
}
|
|
84
|
-
if (orig.sequence.firmwares.drivers_various !== undefined) {
|
|
85
|
-
sorted.sequence.firmwares.drivers_various = orig.sequence.firmwares.drivers_various.sort();
|
|
86
|
-
}
|
|
87
|
-
if (orig.sequence.firmwares.drivers_video_amd !== undefined) {
|
|
88
|
-
sorted.sequence.firmwares.drivers_video_amd = orig.sequence.firmwares.drivers_video_amd.sort();
|
|
89
|
-
}
|
|
90
|
-
if (orig.sequence.firmwares.drivers_video_nvidia !== undefined) {
|
|
91
|
-
sorted.sequence.firmwares.drivers_video_nvidia = orig.sequence.firmwares.drivers_video_nvidia.sort();
|
|
92
|
-
}
|
|
93
|
-
if (orig.sequence.firmwares.drivers_wifi !== undefined) {
|
|
94
|
-
sorted.sequence.firmwares.drivers_wifi = orig.sequence.firmwares.drivers_wifi.sort();
|
|
95
|
-
}
|
|
96
|
-
if (orig.sequence.firmwares.drivers_printer !== undefined) {
|
|
97
|
-
sorted.sequence.firmwares.drivers_printer = orig.sequence.firmwares.drivers_printer.sort();
|
|
85
|
+
if (orig.sequence.packages_python !== undefined) {
|
|
86
|
+
if (Array.isArray(orig.sequence.packages_python)) {
|
|
87
|
+
sorted.sequence.packages_python = orig.sequence.packages_python.sort();
|
|
98
88
|
}
|
|
99
89
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (orig.sequence.customizations !== undefined) {
|
|
104
|
-
if (orig.sequence.customizations.scripts[0] !== null) {
|
|
90
|
+
if (orig.sequence.accessories !== undefined) {
|
|
91
|
+
if (Array.isArray(orig.sequence.accessories)) {
|
|
92
|
+
sorted.sequence.accessories = orig.sequence.accessories.sort();
|
|
105
93
|
}
|
|
106
94
|
}
|
|
107
|
-
sorted.sequence.reboot = sorted.sequence.reboot;
|
|
108
|
-
const ironed = `# ${sorted.name}\n___\n` + js_yaml_1.default.dump(sorted);
|
|
109
|
-
console.log(ironed);
|
|
110
95
|
}
|
|
96
|
+
if (orig.customize !== undefined) {
|
|
97
|
+
sorted.customize = orig.customize;
|
|
98
|
+
if (orig.customize.dirs !== undefined) {
|
|
99
|
+
sorted.customize.dirs = orig.customize.dirs;
|
|
100
|
+
}
|
|
101
|
+
if (orig.customize.hostname !== undefined) {
|
|
102
|
+
sorted.customize.hostname = orig.customize.hostname;
|
|
103
|
+
}
|
|
104
|
+
if (orig.customize.scripts !== undefined) {
|
|
105
|
+
orig.customize.scripts = orig.customize.scripts;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (orig.reboot !== undefined) {
|
|
109
|
+
sorted.reboot = orig.reboot;
|
|
110
|
+
}
|
|
111
|
+
const ironed = `# costume: ${costume}\n---\n` + js_yaml_1.default.dump(sorted);
|
|
112
|
+
console.log(ironed);
|
|
111
113
|
// Well be usefull to have scrolling
|
|
112
114
|
// Set scrolling margins back to default.
|
|
113
115
|
// await exec(`printf '\e[;r'`)
|
|
114
116
|
}
|
|
115
117
|
}
|
|
116
|
-
exports.
|
|
117
|
-
Ironing.description = '
|
|
118
|
+
exports.Ironing = Ironing;
|
|
119
|
+
Ironing.description = 'ordered show of costumes or accessories in wardrobe';
|
|
120
|
+
Ironing.args = [{ name: 'costume', description: 'costume', required: false }];
|
|
118
121
|
Ironing.flags = {
|
|
119
|
-
costume: core_1.Flags.string({ char: 'c', description: 'costume' }),
|
|
120
122
|
wardrobe: core_1.Flags.string({ char: 'w', description: 'wardrobe' }),
|
|
121
123
|
verbose: core_1.Flags.boolean({ char: 'v' }),
|
|
122
124
|
help: core_1.Flags.help({ char: 'h' })
|
|
@@ -4,8 +4,12 @@ import { Command } from '@oclif/core';
|
|
|
4
4
|
*/
|
|
5
5
|
export default class List extends Command {
|
|
6
6
|
static description: string;
|
|
7
|
+
static args: {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
required: boolean;
|
|
11
|
+
}[];
|
|
7
12
|
static flags: {
|
|
8
|
-
wardrobe: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
9
13
|
verbose: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
10
14
|
help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
|
|
11
15
|
};
|
|
@@ -20,27 +20,62 @@ class List extends core_1.Command {
|
|
|
20
20
|
}
|
|
21
21
|
const echo = utils_1.default.setEcho(verbose);
|
|
22
22
|
utils_1.default.titles(this.id + ' ' + this.argv);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
/**
|
|
24
|
+
* wardobe
|
|
25
|
+
*/
|
|
26
|
+
let wardrobe = await utils_1.default.wardrobe();
|
|
27
|
+
if (this.argv['0'] !== undefined) {
|
|
28
|
+
wardrobe = this.argv['0'];
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
wardrobe = `${path_1.default.resolve(process.cwd(), wardrobe)}/`;
|
|
31
|
+
if (!fs_1.default.existsSync(wardrobe)) {
|
|
32
|
+
utils_1.default.warning(`wardrobe: ${wardrobe} not found!`);
|
|
33
|
+
process.exit();
|
|
34
|
+
}
|
|
35
|
+
console.log(chalk_1.default.green(`wardrobe: `) + wardrobe);
|
|
31
36
|
console.log();
|
|
37
|
+
/**
|
|
38
|
+
* costumes
|
|
39
|
+
*/
|
|
40
|
+
const costumes = fs_1.default.readdirSync(`${wardrobe}costumes/`);
|
|
41
|
+
console.log(chalk_1.default.green(`costumes: `));
|
|
32
42
|
costumes.forEach(costume => {
|
|
33
|
-
if (fs_1.default.existsSync(`${wardrobe}/${costume}/index.yml`)) {
|
|
34
|
-
const materials = js_yaml_1.default.load(fs_1.default.readFileSync(`${wardrobe}/${costume}/index.yml`, 'utf-8'));
|
|
43
|
+
if (fs_1.default.existsSync(`${wardrobe}costumes/${costume}/index.yml`)) {
|
|
44
|
+
const materials = js_yaml_1.default.load(fs_1.default.readFileSync(`${wardrobe}costumes/${costume}/index.yml`, 'utf-8'));
|
|
35
45
|
console.log(chalk_1.default.cyan(costume) + ': ' + materials.description);
|
|
36
46
|
}
|
|
37
47
|
});
|
|
48
|
+
console.log();
|
|
49
|
+
/**
|
|
50
|
+
* accessories
|
|
51
|
+
*/
|
|
52
|
+
const accessories = fs_1.default.readdirSync(`${wardrobe}/accessories/`);
|
|
53
|
+
console.log(chalk_1.default.green(`accessories: `));
|
|
54
|
+
accessories.forEach(accessory => {
|
|
55
|
+
if (fs_1.default.existsSync(`${wardrobe}/accessories/${accessory}/index.yml`)) {
|
|
56
|
+
const materials = js_yaml_1.default.load(fs_1.default.readFileSync(`${wardrobe}/accessories/${accessory}/index.yml`, 'utf-8'));
|
|
57
|
+
console.log(chalk_1.default.cyan(accessory) + ': ' + materials.description);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
console.log();
|
|
61
|
+
/**
|
|
62
|
+
* servers
|
|
63
|
+
*/
|
|
64
|
+
const servers = fs_1.default.readdirSync(`${wardrobe}/servers/`);
|
|
65
|
+
console.log(chalk_1.default.green(`servers: `));
|
|
66
|
+
servers.forEach(server => {
|
|
67
|
+
if (fs_1.default.existsSync(`${wardrobe}/servers/${server}/index.yml`)) {
|
|
68
|
+
const materials = js_yaml_1.default.load(fs_1.default.readFileSync(`${wardrobe}/servers/${server}/index.yml`, 'utf-8'));
|
|
69
|
+
console.log(chalk_1.default.cyan(server) + ': ' + materials.description);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
console.log();
|
|
38
73
|
}
|
|
39
74
|
}
|
|
40
75
|
exports.default = List;
|
|
41
|
-
List.description = 'list
|
|
76
|
+
List.description = 'list costumes and accessoires in wardrobe';
|
|
77
|
+
List.args = [{ name: 'wardrobe', description: 'wardrobe', required: false }];
|
|
42
78
|
List.flags = {
|
|
43
|
-
wardrobe: core_1.Flags.string({ char: 'w', description: 'wardrobe' }),
|
|
44
79
|
verbose: core_1.Flags.boolean({ char: 'v' }),
|
|
45
80
|
help: core_1.Flags.help({ char: 'h' })
|
|
46
81
|
};
|
|
@@ -4,9 +4,13 @@ import { Command } from '@oclif/core';
|
|
|
4
4
|
*/
|
|
5
5
|
export default class Show extends Command {
|
|
6
6
|
static description: string;
|
|
7
|
+
static args: {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
required: boolean;
|
|
11
|
+
}[];
|
|
7
12
|
static flags: {
|
|
8
13
|
wardrobe: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
9
|
-
costume: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
10
14
|
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
15
|
verbose: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
16
|
help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const core_1 = require("@oclif/core");
|
|
5
5
|
const utils_1 = tslib_1.__importDefault(require("../../classes/utils"));
|
|
6
|
-
const path_1 = tslib_1.__importDefault(require("path"));
|
|
7
6
|
const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
|
|
8
7
|
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
8
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
9
9
|
// libraries
|
|
10
10
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
11
11
|
/**
|
|
@@ -14,41 +14,57 @@ const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
|
14
14
|
class Show extends core_1.Command {
|
|
15
15
|
async run() {
|
|
16
16
|
const { args, flags } = await this.parse(Show);
|
|
17
|
-
let costume = "xfce4";
|
|
18
|
-
if (flags.costume !== undefined) {
|
|
19
|
-
costume = flags.costume;
|
|
20
|
-
}
|
|
21
17
|
let verbose = flags.verbose;
|
|
22
18
|
let json = flags.json;
|
|
23
19
|
const echo = utils_1.default.setEcho(verbose);
|
|
24
20
|
utils_1.default.titles(this.id + ' ' + this.argv);
|
|
25
|
-
let wardrobe =
|
|
26
|
-
let position = "eggs";
|
|
21
|
+
let wardrobe = await utils_1.default.wardrobe();
|
|
27
22
|
if (flags.wardrobe !== undefined) {
|
|
28
|
-
position = "external";
|
|
29
23
|
wardrobe = flags.wardrobe;
|
|
30
24
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
25
|
+
wardrobe = `${path_1.default.resolve(process.cwd(), wardrobe)}/`;
|
|
26
|
+
if (!fs_1.default.existsSync(wardrobe)) {
|
|
27
|
+
utils_1.default.warning(`wardrobe: ${wardrobe} not found!`);
|
|
28
|
+
process.exit();
|
|
29
|
+
}
|
|
30
|
+
console.log(chalk_1.default.green(`wardrobe: `) + wardrobe);
|
|
31
|
+
/**
|
|
32
|
+
* costume
|
|
33
|
+
*/
|
|
34
|
+
let costume = 'costumes/colibri';
|
|
35
|
+
if (this.argv['0'] !== undefined) {
|
|
36
|
+
costume = this.argv['0'];
|
|
37
|
+
if (costume.substring(0, 8) !== 'costumes' && costume.substring(0, 11) !== 'accessories' && costume.substring(0, 7) !== 'servers') {
|
|
38
|
+
costume = `costumes/${costume}`;
|
|
40
39
|
}
|
|
41
40
|
}
|
|
41
|
+
costume = wardrobe + costume;
|
|
42
|
+
if (!fs_1.default.existsSync(costume)) {
|
|
43
|
+
console.log(`costume: ${chalk_1.default.green(path_1.default.basename(costume))} not found in wardrobe: ${chalk_1.default.green(wardrobe)}`);
|
|
44
|
+
process.exit();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* tailorList
|
|
48
|
+
*/
|
|
49
|
+
let tailorList = `${costume}/index.yml`;
|
|
50
|
+
if (!fs_1.default.existsSync(tailorList)) {
|
|
51
|
+
utils_1.default.warning(`index.yml not found in : ${costume}!`);
|
|
52
|
+
process.exit();
|
|
53
|
+
}
|
|
54
|
+
const materials = js_yaml_1.default.load(fs_1.default.readFileSync(tailorList, 'utf-8'));
|
|
55
|
+
if (json) {
|
|
56
|
+
console.log(JSON.stringify(materials, null, ' '));
|
|
57
|
+
}
|
|
42
58
|
else {
|
|
43
|
-
console.log(
|
|
59
|
+
console.log(js_yaml_1.default.dump(materials));
|
|
44
60
|
}
|
|
45
61
|
}
|
|
46
62
|
}
|
|
47
63
|
exports.default = Show;
|
|
48
|
-
Show.description = 'show costumes';
|
|
64
|
+
Show.description = 'show costumes/accessories in wardrobe';
|
|
65
|
+
Show.args = [{ name: 'costume', description: 'costume', required: false }];
|
|
49
66
|
Show.flags = {
|
|
50
67
|
wardrobe: core_1.Flags.string({ char: 'w', description: 'wardrobe' }),
|
|
51
|
-
costume: core_1.Flags.string({ char: 'c', description: 'costume' }),
|
|
52
68
|
json: core_1.Flags.boolean({ char: 'j', description: 'output JSON' }),
|
|
53
69
|
verbose: core_1.Flags.boolean({ char: 'v' }),
|
|
54
70
|
help: core_1.Flags.help({ char: 'h' })
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
*/
|
|
2
5
|
export default class Wear extends Command {
|
|
3
6
|
static description: string;
|
|
7
|
+
static args: {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
required: boolean;
|
|
11
|
+
}[];
|
|
4
12
|
static flags: {
|
|
5
|
-
costume: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
6
13
|
wardrobe: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
|
|
14
|
+
no_accessories: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
silent: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
7
16
|
verbose: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
8
17
|
help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
|
|
9
18
|
};
|
|
@@ -5,27 +5,62 @@ const core_1 = require("@oclif/core");
|
|
|
5
5
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
6
|
const utils_1 = tslib_1.__importDefault(require("../../classes/utils"));
|
|
7
7
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
8
|
+
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
8
9
|
const tailor_1 = tslib_1.__importDefault(require("../../classes/tailor"));
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
9
13
|
class Wear extends core_1.Command {
|
|
10
14
|
async run() {
|
|
11
|
-
const {
|
|
12
|
-
let verbose =
|
|
13
|
-
if (flags.verbose) {
|
|
14
|
-
verbose = true;
|
|
15
|
-
}
|
|
16
|
-
const echo = utils_1.default.setEcho(verbose);
|
|
15
|
+
const { argv, flags } = await this.parse(Wear);
|
|
16
|
+
let verbose = flags.verbose;
|
|
17
17
|
utils_1.default.titles(this.id + ' ' + this.argv);
|
|
18
|
-
let
|
|
19
|
-
if (flags.
|
|
18
|
+
let no_accessories = false;
|
|
19
|
+
if (flags.no_accessories) {
|
|
20
|
+
no_accessories = true;
|
|
21
|
+
}
|
|
22
|
+
let wardrobe = await utils_1.default.wardrobe();
|
|
23
|
+
if (flags.wardrobe !== undefined) {
|
|
20
24
|
wardrobe = flags.wardrobe;
|
|
21
25
|
}
|
|
22
|
-
|
|
23
|
-
if (
|
|
24
|
-
|
|
26
|
+
wardrobe = `${path_1.default.resolve(process.cwd(), wardrobe)}/`;
|
|
27
|
+
if (!fs_1.default.existsSync(wardrobe)) {
|
|
28
|
+
utils_1.default.warning(`wardrobe: ${wardrobe} not found!`);
|
|
29
|
+
process.exit();
|
|
30
|
+
}
|
|
31
|
+
console.log(chalk_1.default.green(`wardrobe: `) + wardrobe);
|
|
32
|
+
/**
|
|
33
|
+
* costume
|
|
34
|
+
*/
|
|
35
|
+
let costume = 'costumes/colibri';
|
|
36
|
+
if (this.argv['0'] !== undefined) {
|
|
37
|
+
costume = this.argv['0']; //12345678 12345678901 1234567
|
|
38
|
+
if (costume.substring(0, 8) !== 'costumes' && costume.substring(0, 11) !== 'accessories' && costume.substring(0, 7) !== 'servers') {
|
|
39
|
+
costume = `costumes/${costume}`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
costume = wardrobe + costume;
|
|
43
|
+
console.log(costume);
|
|
44
|
+
if (!fs_1.default.existsSync(costume)) {
|
|
45
|
+
console.log(`costume: ${chalk_1.default.green(path_1.default.basename(costume))} not found in wardrobe: ${chalk_1.default.green(wardrobe)}`);
|
|
46
|
+
process.exit();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* tailorList
|
|
50
|
+
*/
|
|
51
|
+
let tailorList = `${costume}/index.yml`;
|
|
52
|
+
if (!fs_1.default.existsSync(tailorList)) {
|
|
53
|
+
utils_1.default.warning(`index.yml not found in : ${costume}!`);
|
|
54
|
+
process.exit();
|
|
25
55
|
}
|
|
26
|
-
if (
|
|
27
|
-
|
|
28
|
-
|
|
56
|
+
if (await utils_1.default.customConfirm(`Prepare your costume: ${costume}? Select yes to continue...`)) {
|
|
57
|
+
if (utils_1.default.isRoot()) {
|
|
58
|
+
const tailor = new tailor_1.default(costume);
|
|
59
|
+
await tailor.prepare(verbose, no_accessories);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
utils_1.default.useRoot(this.id);
|
|
63
|
+
}
|
|
29
64
|
}
|
|
30
65
|
else {
|
|
31
66
|
console.log('costume ' + chalk_1.default.cyan(costume) + ' not found in wardrobe: ' + chalk_1.default.green(wardrobe));
|
|
@@ -33,10 +68,12 @@ class Wear extends core_1.Command {
|
|
|
33
68
|
}
|
|
34
69
|
}
|
|
35
70
|
exports.default = Wear;
|
|
36
|
-
Wear.description = 'wear costume';
|
|
71
|
+
Wear.description = 'wear costume/accessories from wardrobe';
|
|
72
|
+
Wear.args = [{ name: 'costume', description: 'costume', required: false }];
|
|
37
73
|
Wear.flags = {
|
|
38
|
-
costume: core_1.Flags.string({ char: 'c', description: 'Costume' }),
|
|
39
74
|
wardrobe: core_1.Flags.string({ char: 'w', description: 'wardrobe' }),
|
|
75
|
+
no_accessories: core_1.Flags.boolean({ char: 'n', description: 'not install accessories' }),
|
|
76
|
+
silent: core_1.Flags.boolean({ char: 's' }),
|
|
40
77
|
verbose: core_1.Flags.boolean({ char: 'v' }),
|
|
41
|
-
help: core_1.Flags.help({ char: 'h' })
|
|
78
|
+
help: core_1.Flags.help({ char: 'h' })
|
|
42
79
|
};
|
|
@@ -16,6 +16,10 @@ async function information(verbose = false) {
|
|
|
16
16
|
console.clear();
|
|
17
17
|
const settings = new settings_1.default();
|
|
18
18
|
settings.load();
|
|
19
|
+
const Wait = () => (react_1.default.createElement(ink_1.Box, { marginRight: 2 },
|
|
20
|
+
react_1.default.createElement(ink_1.Box, { marginRight: 2 },
|
|
21
|
+
react_1.default.createElement(ink_1.Text, null, " E G G S: the reproductive system of penguins"))));
|
|
22
|
+
(0, ink_1.render)(react_1.default.createElement(Wait, null));
|
|
19
23
|
/**
|
|
20
24
|
* nest
|
|
21
25
|
*/
|
|
@@ -34,7 +38,7 @@ async function information(verbose = false) {
|
|
|
34
38
|
react_1.default.createElement(ink_1.Text, null,
|
|
35
39
|
"ovarium: ",
|
|
36
40
|
react_1.default.createElement(ink_1.Text, { color: "cyan" }, settings.work_dir.path)))));
|
|
37
|
-
//render(<Nest />)
|
|
41
|
+
// render(<Nest />)
|
|
38
42
|
/**
|
|
39
43
|
* Boot
|
|
40
44
|
* @returns
|
|
@@ -48,7 +52,7 @@ async function information(verbose = false) {
|
|
|
48
52
|
react_1.default.createElement(ink_1.Text, null,
|
|
49
53
|
"initrd.img: ",
|
|
50
54
|
react_1.default.createElement(ink_1.Text, { color: "cyan" }, settings.initrd_image)))));
|
|
51
|
-
|
|
55
|
+
// render(<Boot />)
|
|
52
56
|
/**
|
|
53
57
|
* Live
|
|
54
58
|
*/
|
|
@@ -64,7 +68,7 @@ async function information(verbose = false) {
|
|
|
64
68
|
react_1.default.createElement(ink_1.Text, null,
|
|
65
69
|
"root passwd: ",
|
|
66
70
|
react_1.default.createElement(ink_1.Text, { color: "cyan" }, settings.config.root_passwd)))));
|
|
67
|
-
|
|
71
|
+
// render(<Live />)
|
|
68
72
|
const distroId = shelljs_1.default.exec('lsb_release -is', { silent: true }).stdout.trim();
|
|
69
73
|
const releaseId = shelljs_1.default.exec('lsb_release -rs', { silent: true }).stdout.trim();
|
|
70
74
|
const codenameId = shelljs_1.default.exec('lsb_release -cs', { silent: true }).stdout.trim();
|
|
@@ -84,29 +88,29 @@ async function information(verbose = false) {
|
|
|
84
88
|
"compatible: ",
|
|
85
89
|
react_1.default.createElement(ink_1.Text, { color: "cyan" },
|
|
86
90
|
settings.distro.distroLike,
|
|
87
|
-
"
|
|
91
|
+
" ",
|
|
88
92
|
settings.distro.releaseLike,
|
|
89
|
-
"
|
|
93
|
+
" ",
|
|
90
94
|
settings.distro.codenameLikeId))))));
|
|
91
|
-
|
|
95
|
+
// render(<Distro />)
|
|
92
96
|
const dependencies = await pacman_1.default.prerequisitesCheck();
|
|
93
97
|
const configurations = pacman_1.default.configurationCheck();
|
|
94
98
|
let uefi = pacman_1.default.isUefi();
|
|
95
99
|
let installer = false;
|
|
96
|
-
if (
|
|
100
|
+
if (pacman_1.default.isInstalledGui()) {
|
|
97
101
|
installer = await pacman_1.default.calamaresCheck();
|
|
98
102
|
}
|
|
99
103
|
const Ok = () => (react_1.default.createElement(ink_1.Text, { backgroundColor: "green" }, "OK"));
|
|
100
|
-
|
|
104
|
+
// render(<Ok />)
|
|
101
105
|
const Ko = () => (react_1.default.createElement(ink_1.Text, { backgroundColor: "red", color: "white" }, "KO"));
|
|
102
|
-
|
|
106
|
+
// render(<Ko />)
|
|
103
107
|
/**
|
|
104
108
|
* CLI va verde se naked, altrimenti giallo
|
|
105
109
|
*/
|
|
106
110
|
const CLI = () => (react_1.default.createElement(ink_1.Text, { backgroundColor: "green" }, "CLI"));
|
|
107
|
-
|
|
111
|
+
// render(<CLI />)
|
|
108
112
|
const GUI = () => (react_1.default.createElement(ink_1.Text, { backgroundColor: "green" }, "GUI"));
|
|
109
|
-
|
|
113
|
+
// render(<GUI />)
|
|
110
114
|
let initType = '';
|
|
111
115
|
if (utils_1.default.isSysvinit()) {
|
|
112
116
|
initType = 'sysvinit';
|
|
@@ -140,17 +144,17 @@ async function information(verbose = false) {
|
|
|
140
144
|
react_1.default.createElement(ink_1.Text, null,
|
|
141
145
|
"init: ",
|
|
142
146
|
react_1.default.createElement(ink_1.Text, { color: "cyan" }, initType)))));
|
|
143
|
-
|
|
147
|
+
// render(<Checks />)
|
|
144
148
|
const Presentation = () => (react_1.default.createElement(react_1.default.Fragment, null,
|
|
145
149
|
react_1.default.createElement(ink_1.Box, null,
|
|
146
150
|
react_1.default.createElement(ink_1.Text, null, " ")),
|
|
147
151
|
react_1.default.createElement(ink_1.Box, { borderStyle: "round", marginRight: 2, flexDirection: "column" },
|
|
148
152
|
react_1.default.createElement(ink_1.Box, null,
|
|
149
|
-
react_1.default.createElement(ink_1.Text,
|
|
150
|
-
|
|
151
|
-
react_1.default.createElement(ink_1.Text, null, "krill installer is an opportunity if you are low on RAM, working on old distros or on architectures not yet supported by calamares.")),
|
|
153
|
+
react_1.default.createElement(ink_1.Text, { color: "cyan" }, "eggs install"),
|
|
154
|
+
react_1.default.createElement(ink_1.Text, null, " install your CLI iso with TUI installer krill, on GUI prefere calamares")),
|
|
152
155
|
react_1.default.createElement(ink_1.Box, null,
|
|
153
|
-
react_1.default.createElement(ink_1.Text,
|
|
156
|
+
react_1.default.createElement(ink_1.Text, { color: "cyan" }, "eggs wardrobe"),
|
|
157
|
+
react_1.default.createElement(ink_1.Text, null, " build your personal system starting from cli")),
|
|
154
158
|
react_1.default.createElement(ink_1.Box, null,
|
|
155
159
|
react_1.default.createElement(ink_1.Text, null, " ")),
|
|
156
160
|
react_1.default.createElement(ink_1.Box, { flexDirection: "row" },
|
|
@@ -164,9 +168,9 @@ async function information(verbose = false) {
|
|
|
164
168
|
react_1.default.createElement(ink_1.Text, null, "sources "),
|
|
165
169
|
react_1.default.createElement(ink_1.Text, { color: "cyan" }, "https://github.com/pieroproietti/penguins-eggs")),
|
|
166
170
|
react_1.default.createElement(ink_1.Box, { marginRight: 2 },
|
|
167
|
-
react_1.default.createElement(ink_1.Text, null, "
|
|
168
|
-
react_1.default.createElement(ink_1.Text, { color: "cyan" }, "https://
|
|
169
|
-
|
|
171
|
+
react_1.default.createElement(ink_1.Text, null, "wardrobe "),
|
|
172
|
+
react_1.default.createElement(ink_1.Text, { color: "cyan" }, "https://github.com/pieroproietti/penguins-wardrobe")))))));
|
|
173
|
+
// render(<Presentation />)
|
|
170
174
|
/**
|
|
171
175
|
*
|
|
172
176
|
*/
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
const pjson_1 = tslib_1.__importDefault(require("pjson"));
|
|
5
4
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
5
|
const ink_1 = require("ink");
|
|
6
|
+
// import package.json
|
|
7
|
+
const pjson = require('../../../package.json');
|
|
7
8
|
function Title({ title = "krill" }) {
|
|
8
9
|
return (
|
|
9
10
|
// font="slick"
|
|
@@ -17,12 +18,12 @@ function Title({ title = "krill" }) {
|
|
|
17
18
|
react_1.default.createElement(ink_1.Box, { flexDirection: "row" },
|
|
18
19
|
react_1.default.createElement(ink_1.Text, { backgroundColor: "green" },
|
|
19
20
|
" ",
|
|
20
|
-
|
|
21
|
+
pjson.name,
|
|
21
22
|
" "),
|
|
22
23
|
react_1.default.createElement(ink_1.Text, { backgroundColor: "white", color: "blue" }, " Perri's brewery edition "),
|
|
23
24
|
react_1.default.createElement(ink_1.Text, { backgroundColor: "red" },
|
|
24
25
|
" ver. ",
|
|
25
|
-
|
|
26
|
+
pjson.version,
|
|
26
27
|
" "))));
|
|
27
28
|
}
|
|
28
29
|
exports.default = Title;
|