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.
Files changed (60) hide show
  1. package/README.md +81 -47
  2. package/assets/leaves.svg +1 -0
  3. package/assets/live-installer/com.github.pieroproietti.penguins-eggs.policy +25 -0
  4. package/assets/live-installer/filesystem.packages-remove +49 -0
  5. package/assets/penguins-live-installer.desktop +27 -0
  6. package/lib/classes/daddy.js +22 -22
  7. package/lib/classes/distro.d.ts +1 -1
  8. package/lib/classes/distro.js +1 -1
  9. package/lib/classes/family/debian.d.ts +4 -0
  10. package/lib/classes/family/debian.js +7 -0
  11. package/lib/classes/ovary.d.ts +6 -0
  12. package/lib/classes/ovary.js +21 -7
  13. package/lib/classes/settings.js +3 -4
  14. package/lib/classes/sources_list.d.ts +27 -0
  15. package/lib/classes/sources_list.js +103 -0
  16. package/lib/classes/tailor.d.ts +25 -4
  17. package/lib/classes/tailor.js +225 -329
  18. package/lib/classes/utils.d.ts +10 -0
  19. package/lib/classes/utils.js +31 -11
  20. package/lib/classes/xdg.d.ts +2 -1
  21. package/lib/classes/xdg.js +47 -106
  22. package/lib/commands/config.js +4 -2
  23. package/lib/commands/info.js +1 -1
  24. package/lib/commands/update.d.ts +0 -2
  25. package/lib/commands/update.js +3 -52
  26. package/lib/commands/wardrobe/get.d.ts +17 -0
  27. package/lib/commands/wardrobe/get.js +43 -0
  28. package/lib/commands/wardrobe/ironing.d.ts +6 -5
  29. package/lib/commands/wardrobe/ironing.js +80 -78
  30. package/lib/commands/wardrobe/list.d.ts +5 -1
  31. package/lib/commands/wardrobe/list.js +46 -11
  32. package/lib/commands/wardrobe/show.d.ts +5 -1
  33. package/lib/commands/wardrobe/show.js +36 -20
  34. package/lib/commands/wardrobe/wear.d.ts +10 -1
  35. package/lib/commands/wardrobe/wear.js +54 -17
  36. package/lib/components/elements/information.js +23 -19
  37. package/lib/components/elements/title.js +4 -3
  38. package/lib/components/finished.js +1 -0
  39. package/lib/components/network.js +1 -0
  40. package/lib/components/welcome.js +2 -2
  41. package/lib/interfaces/i-costume.d.ts +4 -20
  42. package/lib/interfaces/i-materia.d.ts +32 -0
  43. package/lib/interfaces/i-materia.js +2 -0
  44. package/lib/interfaces/index.d.ts +1 -0
  45. package/oclif.manifest.json +1 -1
  46. package/package.json +17 -19
  47. package/scripts/_eggs +23 -19
  48. package/scripts/eggs.bash +7 -6
  49. package/scripts/mom-cli.sh +66 -0
  50. package/scripts/resy.sh +1 -1
  51. package/assets/penguins-clinstaller.desktop +0 -24
  52. package/assets/penguins-minstall.desktop +0 -95
  53. package/lib/classes/basket.d.ts +0 -22
  54. package/lib/classes/basket.js +0 -114
  55. package/wardrobe.d/external.yml +0 -7
  56. package/wardrobe.d/hen/control.template +0 -10
  57. package/wardrobe.d/hen/index.yml +0 -212
  58. package/wardrobe.d/kde/index.yml +0 -41
  59. package/wardrobe.d/lamp/index.yml +0 -35
  60. 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.titles(this.id + ' ' + this.argv);
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 (fs_1.default.existsSync(`${wardrobe}/${costume}/index.yml`)) {
35
- const orig = js_yaml_1.default.load(fs_1.default.readFileSync(`${wardrobe}/${costume}/index.yml`, 'utf-8'));
36
- let sorted = orig;
37
- sorted.name = orig.name;
38
- sorted.description = orig.description;
39
- sorted.author = orig.author;
40
- sorted.release = orig.release;
41
- sorted.distroId = orig.distroId;
42
- sorted.codenameId = orig.codenameId;
43
- sorted.releaseId = orig.release;
44
- sorted.applyTo = orig.applyTo;
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
- if (orig.sequence.repositories.sourcesList !== undefined) {
49
- sorted.sequence.repositories.sourcesList = orig.sequence.repositories.sourcesList;
50
- }
51
- if (orig.sequence.repositories.sourcesListD !== undefined) {
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[0] !== null) {
73
+ if (Array.isArray(orig.sequence.packages)) {
61
74
  sorted.sequence.packages = orig.sequence.packages.sort();
62
75
  }
63
76
  }
64
- if (orig.sequence.noInstallRecommends !== undefined) {
65
- if (orig.sequence.noInstallRecommends[0] !== null) {
66
- sorted.sequence.noInstallRecommends = orig.sequence.noInstallRecommends.sort();
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.packagesPip !== undefined) {
70
- if (orig.sequence.packagesPip[0] !== null) {
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.firmwares !== undefined) {
75
- if (orig.sequence.firmwares.codecs !== undefined) {
76
- sorted.sequence.firmwares.codecs = orig.sequence.firmwares.codecs.sort();
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
- sorted.sequence.debs = orig.sequence.debs;
101
- sorted.sequence.dirs = orig.sequence.dirs;
102
- sorted.sequence.hostname = orig.sequence.hostname;
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.default = Ironing;
117
- Ironing.description = 'ironing costumes: sorting packages, firmwares and so on';
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
- let wardrobe = `${path_1.default.resolve(__dirname, '../../../wardrobe.d')}`;
24
- let position = "eggs";
25
- if (flags.wardrobe !== undefined) {
26
- position = "external";
27
- wardrobe = flags.wardrobe;
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
- const costumes = fs_1.default.readdirSync(wardrobe);
30
- console.log(chalk_1.default.green(`${position} wardrobe: `) + wardrobe);
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, wear costumes';
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 = `${path_1.default.resolve(__dirname, '../../../wardrobe.d')}`;
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
- console.log(chalk_1.default.green(`${position} wardrobe: `) + wardrobe);
32
- console.log();
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'));
35
- if (json) {
36
- console.log(JSON.stringify(materials, null, ' '));
37
- }
38
- else {
39
- console.log(js_yaml_1.default.dump(materials));
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('costume ' + chalk_1.default.cyan(costume) + ' not found in ' + position + ' wardrobe: ' + chalk_1.default.green(wardrobe));
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 { args, flags } = await this.parse(Wear);
12
- let verbose = false;
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 wardrobe = `${path_1.default.resolve(__dirname, '../../../wardrobe.d')}`;
19
- if (flags.wardrobe != undefined) {
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
- let costume = 'xfce4';
23
- if (flags.costume !== undefined) {
24
- costume = flags.costume;
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 (utils_1.default.isRoot() && (await utils_1.default.customConfirm(`Prepare your costume: ${costume}? Select yes to continue...`))) {
27
- const tailor = new tailor_1.default(wardrobe, costume);
28
- await tailor.prepare(verbose);
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
- (0, ink_1.render)(react_1.default.createElement(Boot, null));
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
- (0, ink_1.render)(react_1.default.createElement(Live, null));
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
- (0, ink_1.render)(react_1.default.createElement(Distro, null));
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 (await pacman_1.default.isInstalledGui()) {
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
- (0, ink_1.render)(react_1.default.createElement(Ok, null));
104
+ // render(<Ok />)
101
105
  const Ko = () => (react_1.default.createElement(ink_1.Text, { backgroundColor: "red", color: "white" }, "KO"));
102
- (0, ink_1.render)(react_1.default.createElement(Ko, null));
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
- (0, ink_1.render)(react_1.default.createElement(CLI, null));
111
+ // render(<CLI />)
108
112
  const GUI = () => (react_1.default.createElement(ink_1.Text, { backgroundColor: "green" }, "GUI"));
109
- (0, ink_1.render)(react_1.default.createElement(GUI, null));
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
- (0, ink_1.render)(react_1.default.createElement(Checks, null));
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, null, "ISO images made with eggs can be installed with either the calamares GUI installer or the krill CLI installer. eggs includes krill installer inside.")),
150
- react_1.default.createElement(ink_1.Box, null,
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, null, "Usage: sudo eggs install will allways run calamares if present, sudo eggs install --cli will force CLI installer.")),
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, "meeting "),
168
- react_1.default.createElement(ink_1.Text, { color: "cyan" }, "https://meet.jit.si/PenguinsEggsMeeting")))))));
169
- (0, ink_1.render)(react_1.default.createElement(Presentation, null));
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
- pjson_1.default.name,
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
- pjson_1.default.version,
26
+ pjson.version,
26
27
  " "))));
27
28
  }
28
29
  exports.default = Title;