penguins-eggs 10.0.36 → 10.0.37

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.
@@ -1498,5 +1498,5 @@
1498
1498
  ]
1499
1499
  }
1500
1500
  },
1501
- "version": "10.0.36"
1501
+ "version": "10.0.37"
1502
1502
  }
package/README.md CHANGED
@@ -491,7 +491,7 @@ EXAMPLES
491
491
  $ eggs adapt
492
492
  ```
493
493
 
494
- _See code: [src/commands/adapt.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/adapt.ts)_
494
+ _See code: [src/commands/adapt.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/adapt.ts)_
495
495
 
496
496
  ## `eggs analyze`
497
497
 
@@ -512,7 +512,7 @@ EXAMPLES
512
512
  sudo eggs analyze
513
513
  ```
514
514
 
515
- _See code: [src/commands/analyze.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/analyze.ts)_
515
+ _See code: [src/commands/analyze.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/analyze.ts)_
516
516
 
517
517
  ## `eggs autocomplete [SHELL]`
518
518
 
@@ -576,7 +576,7 @@ EXAMPLES
576
576
  sudo eggs calamares --remove
577
577
  ```
578
578
 
579
- _See code: [src/commands/calamares.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/calamares.ts)_
579
+ _See code: [src/commands/calamares.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/calamares.ts)_
580
580
 
581
581
  ## `eggs config`
582
582
 
@@ -603,7 +603,7 @@ EXAMPLES
603
603
  sudo eggs config --clean --nointeractive
604
604
  ```
605
605
 
606
- _See code: [src/commands/config.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/config.ts)_
606
+ _See code: [src/commands/config.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/config.ts)_
607
607
 
608
608
  ## `eggs cuckoo`
609
609
 
@@ -623,7 +623,7 @@ EXAMPLES
623
623
  sudo eggs cuckoo
624
624
  ```
625
625
 
626
- _See code: [src/commands/cuckoo.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/cuckoo.ts)_
626
+ _See code: [src/commands/cuckoo.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/cuckoo.ts)_
627
627
 
628
628
  ## `eggs dad`
629
629
 
@@ -651,7 +651,7 @@ EXAMPLES
651
651
  sudo dad --default
652
652
  ```
653
653
 
654
- _See code: [src/commands/dad.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/dad.ts)_
654
+ _See code: [src/commands/dad.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/dad.ts)_
655
655
 
656
656
  ## `eggs export deb`
657
657
 
@@ -678,7 +678,7 @@ EXAMPLES
678
678
  $ eggs export deb --all
679
679
  ```
680
680
 
681
- _See code: [src/commands/export/deb.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/export/deb.ts)_
681
+ _See code: [src/commands/export/deb.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/export/deb.ts)_
682
682
 
683
683
  ## `eggs export iso`
684
684
 
@@ -703,7 +703,7 @@ EXAMPLES
703
703
  $ eggs export iso --clean
704
704
  ```
705
705
 
706
- _See code: [src/commands/export/iso.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/export/iso.ts)_
706
+ _See code: [src/commands/export/iso.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/export/iso.ts)_
707
707
 
708
708
  ## `eggs help [COMMAND]`
709
709
 
@@ -764,7 +764,7 @@ EXAMPLES
764
764
  sudo eggs install --chroot
765
765
  ```
766
766
 
767
- _See code: [src/commands/install.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/install.ts)_
767
+ _See code: [src/commands/install.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/install.ts)_
768
768
 
769
769
  ## `eggs kill`
770
770
 
@@ -787,7 +787,7 @@ EXAMPLES
787
787
  sudo eggs kill
788
788
  ```
789
789
 
790
- _See code: [src/commands/kill.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/kill.ts)_
790
+ _See code: [src/commands/kill.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/kill.ts)_
791
791
 
792
792
  ## `eggs krill`
793
793
 
@@ -847,7 +847,7 @@ EXAMPLES
847
847
  $ eggs auto
848
848
  ```
849
849
 
850
- _See code: [src/commands/love.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/love.ts)_
850
+ _See code: [src/commands/love.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/love.ts)_
851
851
 
852
852
  ## `eggs mom`
853
853
 
@@ -867,7 +867,7 @@ EXAMPLES
867
867
  $ eggs mom
868
868
  ```
869
869
 
870
- _See code: [src/commands/mom.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/mom.ts)_
870
+ _See code: [src/commands/mom.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/mom.ts)_
871
871
 
872
872
  ## `eggs produce`
873
873
 
@@ -924,7 +924,7 @@ EXAMPLES
924
924
  sudo eggs produce --excludes home # exclude ~/*
925
925
  ```
926
926
 
927
- _See code: [src/commands/produce.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/produce.ts)_
927
+ _See code: [src/commands/produce.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/produce.ts)_
928
928
 
929
929
  ## `eggs status`
930
930
 
@@ -945,7 +945,7 @@ EXAMPLES
945
945
  $ eggs status
946
946
  ```
947
947
 
948
- _See code: [src/commands/status.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/status.ts)_
948
+ _See code: [src/commands/status.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/status.ts)_
949
949
 
950
950
  ## `eggs syncfrom`
951
951
 
@@ -971,7 +971,7 @@ EXAMPLES
971
971
  sudo eggs syncfrom --file /path/to/luks-volume
972
972
  ```
973
973
 
974
- _See code: [src/commands/syncfrom.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/syncfrom.ts)_
974
+ _See code: [src/commands/syncfrom.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/syncfrom.ts)_
975
975
 
976
976
  ## `eggs syncto`
977
977
 
@@ -998,7 +998,7 @@ EXAMPLES
998
998
  sudo eggs syncto --excludes
999
999
  ```
1000
1000
 
1001
- _See code: [src/commands/syncto.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/syncto.ts)_
1001
+ _See code: [src/commands/syncto.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/syncto.ts)_
1002
1002
 
1003
1003
  ## `eggs tools clean`
1004
1004
 
@@ -1020,7 +1020,7 @@ EXAMPLES
1020
1020
  sudo eggs tools clean
1021
1021
  ```
1022
1022
 
1023
- _See code: [src/commands/tools/clean.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/tools/clean.ts)_
1023
+ _See code: [src/commands/tools/clean.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/tools/clean.ts)_
1024
1024
 
1025
1025
  ## `eggs tools ppa`
1026
1026
 
@@ -1046,7 +1046,7 @@ EXAMPLES
1046
1046
  sudo eggs tools ppa --remove
1047
1047
  ```
1048
1048
 
1049
- _See code: [src/commands/tools/ppa.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/tools/ppa.ts)_
1049
+ _See code: [src/commands/tools/ppa.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/tools/ppa.ts)_
1050
1050
 
1051
1051
  ## `eggs tools skel`
1052
1052
 
@@ -1070,7 +1070,7 @@ EXAMPLES
1070
1070
  sudo eggs tools skel --user user-to-be-copied
1071
1071
  ```
1072
1072
 
1073
- _See code: [src/commands/tools/skel.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/tools/skel.ts)_
1073
+ _See code: [src/commands/tools/skel.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/tools/skel.ts)_
1074
1074
 
1075
1075
  ## `eggs tools stat`
1076
1076
 
@@ -1096,7 +1096,7 @@ EXAMPLES
1096
1096
  $ eggs tools stat --year
1097
1097
  ```
1098
1098
 
1099
- _See code: [src/commands/tools/stat.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/tools/stat.ts)_
1099
+ _See code: [src/commands/tools/stat.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/tools/stat.ts)_
1100
1100
 
1101
1101
  ## `eggs tools yolk`
1102
1102
 
@@ -1117,7 +1117,7 @@ EXAMPLES
1117
1117
  sudo eggs tools yolk
1118
1118
  ```
1119
1119
 
1120
- _See code: [src/commands/tools/yolk.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/tools/yolk.ts)_
1120
+ _See code: [src/commands/tools/yolk.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/tools/yolk.ts)_
1121
1121
 
1122
1122
  ## `eggs update`
1123
1123
 
@@ -1138,7 +1138,7 @@ EXAMPLES
1138
1138
  $ eggs update
1139
1139
  ```
1140
1140
 
1141
- _See code: [src/commands/update.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/update.ts)_
1141
+ _See code: [src/commands/update.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/update.ts)_
1142
1142
 
1143
1143
  ## `eggs version`
1144
1144
 
@@ -1184,7 +1184,7 @@ EXAMPLES
1184
1184
  $ eggs wardrobe get your-wardrobe
1185
1185
  ```
1186
1186
 
1187
- _See code: [src/commands/wardrobe/get.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/wardrobe/get.ts)_
1187
+ _See code: [src/commands/wardrobe/get.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/wardrobe/get.ts)_
1188
1188
 
1189
1189
  ## `eggs wardrobe list [REPO]`
1190
1190
 
@@ -1213,7 +1213,7 @@ EXAMPLES
1213
1213
  $ eggs wardrobe list --distro arch
1214
1214
  ```
1215
1215
 
1216
- _See code: [src/commands/wardrobe/list.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/wardrobe/list.ts)_
1216
+ _See code: [src/commands/wardrobe/list.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/wardrobe/list.ts)_
1217
1217
 
1218
1218
  ## `eggs wardrobe show [REPO]`
1219
1219
 
@@ -1243,7 +1243,7 @@ EXAMPLES
1243
1243
  $ eggs wardrobe show accessories/
1244
1244
  ```
1245
1245
 
1246
- _See code: [src/commands/wardrobe/show.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/wardrobe/show.ts)_
1246
+ _See code: [src/commands/wardrobe/show.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/wardrobe/show.ts)_
1247
1247
 
1248
1248
  ## `eggs wardrobe wear [REPO]`
1249
1249
 
@@ -1274,7 +1274,7 @@ EXAMPLES
1274
1274
  sudo eggs wardrobe wear wagtail/waydroid
1275
1275
  ```
1276
1276
 
1277
- _See code: [src/commands/wardrobe/wear.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.36/src/commands/wardrobe/wear.ts)_
1277
+ _See code: [src/commands/wardrobe/wear.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.37/src/commands/wardrobe/wear.ts)_
1278
1278
  <!-- commandsstop -->
1279
1279
 
1280
1280
  # penGUI
@@ -11,7 +11,7 @@ LABEL TEST
11
11
  MENU LABEL {{{fullname}}}
12
12
  SAY "Booting {{{fullname}}} GNU/Linux (kernel {{{kernel}}})"
13
13
  LINUX {{{vmlinuz}}}
14
- append initrd={{{initrdImg}}} {{{kernel_parameters}}}
14
+ append initrd={{{initrdImg}}} {{{kernel_parameters}}}
15
15
 
16
16
  label local
17
17
  menu label Boot from local disk
@@ -105,58 +105,34 @@ class Distro {
105
105
  * Analize distroId
106
106
  */
107
107
  switch (this.distroId) {
108
+ /**
109
+ * Alpine compatible
110
+ */
108
111
  case 'Alpine': {
109
112
  this.familyId = 'alpine';
110
- this.distroLike = 'Alpine';
111
- this.codenameId = 'rolling'; // questo viene rimosso dal nome
112
- this.codenameLikeId = 'alpine'; // prende alpine come codenaneLikeId
113
- this.liveMediumPath = '/mnt/'; // Qua è deciso da noi
114
- this.syslinuxPath = '/usr/share/syslinux/'; // correct
115
- this.pxelinuxPath = this.syslinuxPath;
116
- this.usrLibPath = '/usr/lib/';
117
- this.memdiskPath = this.syslinuxPath;
118
- this.isolinuxPath = this.syslinuxPath;
119
- // At the moment
120
- this.isCalamaresAvailable = true;
121
113
  break;
122
114
  }
115
+ /**
116
+ * Fedora compatible
117
+ */
118
+ case 'NobaraLinux':
123
119
  case 'Fedora': {
124
120
  this.familyId = 'fedora';
125
- this.distroLike = 'Fedora';
126
- this.codenameId = 'rolling'; // questo viene rimosso dal nome
127
- this.codenameLikeId = 'fedora';
128
- this.liveMediumPath = '/run/initramfs/live/';
129
- this.syslinuxPath = '/usr/share/syslinux/';
130
- this.pxelinuxPath = this.syslinuxPath;
131
- this.usrLibPath = '/usr/lib/';
132
- this.memdiskPath = this.syslinuxPath;
133
- this.isolinuxPath = this.syslinuxPath;
134
- // At the moment
135
- this.isCalamaresAvailable = true;
136
121
  break;
137
122
  }
123
+ /**
124
+ * opensuse compatible
125
+ */
138
126
  case 'openSUSE': {
139
127
  this.familyId = 'suse';
140
- this.distroLike = 'openSUSE';
141
- this.codenameId = 'rolling';
142
- this.codenameLikeId = 'Tumbleweed';
143
- this.liveMediumPath = '/run/install/repo/'; // ? è il mount della root su cd di installatione
144
- this.syslinuxPath = '/usr/share/syslinux/';
145
- this.pxelinuxPath = this.syslinuxPath;
146
- this.usrLibPath = '/usr/lib/';
147
- this.memdiskPath = this.syslinuxPath;
148
- this.isolinuxPath = this.syslinuxPath;
149
- // At the moment
150
- this.isCalamaresAvailable = false;
151
128
  break;
152
129
  }
130
+ /**
131
+ * Arch/Debian/Devuan/Manjaro and Ubuntu
132
+ */
153
133
  default: {
154
- /**
155
- * Arch/Debian/Devuan/Manjaro and Ubuntu
156
- */
157
134
  switch (this.codenameId) {
158
135
  case 'jessie': {
159
- // Debian 8 jessie
160
136
  this.distroLike = 'Debian';
161
137
  this.codenameLikeId = 'jessie';
162
138
  this.liveMediumPath = '/lib/live/mount/medium/';
@@ -164,7 +140,6 @@ class Distro {
164
140
  break;
165
141
  }
166
142
  case 'stretch': {
167
- // Debian 9 stretch
168
143
  this.distroLike = 'Debian';
169
144
  this.codenameLikeId = 'stretch';
170
145
  this.liveMediumPath = '/lib/live/mount/medium/';
@@ -172,43 +147,39 @@ class Distro {
172
147
  break;
173
148
  }
174
149
  case 'buster': {
175
- // Debian 10 buster
176
150
  this.distroLike = 'Debian';
177
151
  this.codenameLikeId = 'buster';
178
152
  break;
179
153
  }
180
154
  case 'bullseye': {
181
- // Debian 11 bullseye
182
155
  this.distroLike = 'Debian';
183
156
  this.codenameLikeId = 'bullseye';
184
157
  break;
185
158
  }
186
159
  case 'bookworm': {
187
- // Debian 12 bookworm
188
160
  this.distroLike = 'Debian';
189
161
  this.codenameLikeId = 'bookworm';
190
162
  break;
191
163
  }
192
164
  case 'trixie': {
193
- // Debian 13 trixie
194
165
  this.distroLike = 'Debian';
195
166
  this.codenameLikeId = 'trixie';
196
167
  break;
197
168
  }
169
+ /**
170
+ * Devuan
171
+ */
198
172
  case 'beowulf': {
199
- // Devuab 3 beowulf
200
173
  this.distroLike = 'Devuan';
201
174
  this.codenameLikeId = 'beowulf';
202
175
  break;
203
176
  }
204
177
  case 'chimaera': {
205
- // Devuab 4 chimaera
206
178
  this.distroLike = 'Devuan';
207
179
  this.codenameLikeId = 'chimaera';
208
180
  break;
209
181
  }
210
182
  case 'daedalus': {
211
- // Devuan 5 daedalus
212
183
  this.distroLike = 'Devuan';
213
184
  this.codenameLikeId = 'daedalus';
214
185
  break;
@@ -217,38 +188,36 @@ class Distro {
217
188
  * Ubuntu LTS + actual
218
189
  */
219
190
  case 'bionic': {
220
- // Ubuntu 18.04 bionic LTS eol aprile 2023
221
191
  this.distroLike = 'Ubuntu';
222
192
  this.codenameLikeId = 'bionic';
223
193
  this.liveMediumPath = '/lib/live/mount/medium/';
224
194
  break;
225
195
  }
226
196
  case 'focal': {
227
- // Ubuntu 20.04 focal LTS
228
197
  this.distroLike = 'Ubuntu';
229
198
  this.codenameLikeId = 'focal';
230
199
  break;
231
200
  }
232
201
  case 'jammy': {
233
- // Ubuntu 22.04 jammy LTS
234
202
  this.distroLike = 'Ubuntu';
235
203
  this.codenameLikeId = 'jammy';
236
204
  break;
237
205
  }
238
206
  case 'noble': {
239
- // Ubuntu 24.04 noble LTS
240
207
  this.distroLike = 'Ubuntu';
241
208
  this.codenameLikeId = 'noble';
242
209
  break;
243
210
  }
211
+ /**
212
+ * Rhino
213
+ */
244
214
  case 'devel': {
245
- // Ubuntu rhino
246
215
  this.distroLike = 'Ubuntu';
247
216
  this.codenameLikeId = 'devel';
248
217
  break;
249
218
  }
250
219
  /**
251
- * Arch Linux/Garuda
220
+ * Arch
252
221
  */
253
222
  case 'Spizaetus':
254
223
  case 'n/a':
@@ -261,6 +230,9 @@ class Distro {
261
230
  this.squashfs = `arch/x86_64/airootfs.sfs`;
262
231
  break;
263
232
  }
233
+ /**
234
+ * find in derivatives
235
+ */
264
236
  default: {
265
237
  /**
266
238
  * patch per Roy VERIFICARE
@@ -315,9 +287,55 @@ class Distro {
315
287
  this.isolinuxPath = this.syslinuxPath;
316
288
  break;
317
289
  }
318
- // No default
319
290
  } // Fine analisi codenameId
320
291
  }
292
+ } // Fine analisi distroId
293
+ /**
294
+ * familyId
295
+ */
296
+ switch (this.familyId) {
297
+ case 'alpine': {
298
+ this.distroLike = 'Alpine';
299
+ this.codenameId = 'rolling'; // questo viene rimosso dal nome
300
+ this.codenameLikeId = 'alpine'; // prende alpine come codenaneLikeId
301
+ this.liveMediumPath = '/mnt/'; // Qua è deciso da noi
302
+ this.syslinuxPath = '/usr/share/syslinux/'; // correct
303
+ this.pxelinuxPath = this.syslinuxPath;
304
+ this.usrLibPath = '/usr/lib/';
305
+ this.memdiskPath = this.syslinuxPath;
306
+ this.isolinuxPath = this.syslinuxPath;
307
+ // At the moment
308
+ this.isCalamaresAvailable = true;
309
+ break;
310
+ }
311
+ case 'fedora': {
312
+ this.distroLike = 'Fedora';
313
+ this.codenameId = 'rolling'; // questo viene rimosso dal nome
314
+ this.codenameLikeId = 'fedora';
315
+ this.liveMediumPath = '/run/initramfs/live/';
316
+ this.syslinuxPath = '/usr/share/syslinux/';
317
+ this.pxelinuxPath = this.syslinuxPath;
318
+ this.usrLibPath = '/usr/lib/';
319
+ this.memdiskPath = this.syslinuxPath;
320
+ this.isolinuxPath = this.syslinuxPath;
321
+ // At the moment
322
+ this.isCalamaresAvailable = true;
323
+ break;
324
+ }
325
+ case 'suse': {
326
+ this.distroLike = 'openSUSE';
327
+ this.codenameId = 'rolling';
328
+ this.codenameLikeId = 'Tumbleweed';
329
+ this.liveMediumPath = '/run/install/repo/'; // ? è il mount della root su cd di installatione
330
+ this.syslinuxPath = '/usr/share/syslinux/';
331
+ this.pxelinuxPath = this.syslinuxPath;
332
+ this.usrLibPath = '/usr/lib/';
333
+ this.memdiskPath = this.syslinuxPath;
334
+ this.isolinuxPath = this.syslinuxPath;
335
+ // At the moment
336
+ this.isCalamaresAvailable = false;
337
+ break;
338
+ }
321
339
  }
322
340
  /**
323
341
  * if lsb-release exists
@@ -19,9 +19,10 @@ export default class Opensuse {
19
19
  *
20
20
  */
21
21
  static async calamaresInstall(verbose = true) {
22
- const echo = Utils.setEcho(verbose);
22
+ const echo = Utils.setEcho(true);
23
+ console.log("installazione calamares SuSE");
23
24
  try {
24
- await exec(`zypper install ${this.packs4calamares.join(' ')}`, echo);
25
+ await exec(`zypper install calamares`, echo);
25
26
  }
26
27
  catch {
27
28
  Utils.error(`Opensuse.calamaresInstall()`);
@@ -84,7 +85,6 @@ export default class Opensuse {
84
85
  */
85
86
  static packageIsInstalled(packageName) {
86
87
  let installed = false;
87
- // rpm -qa | grep -i nano
88
88
  const cmd = `/usr/bin/zypper search --installed-only ${packageName}`;
89
89
  const stdout = shx.exec(cmd, { silent: true }).stdout.trim();
90
90
  if (stdout.includes(packageName)) {
@@ -11,11 +11,11 @@ export default class Locales {
11
11
  */
12
12
  getDefault(): Promise<string>;
13
13
  /**
14
- *
14
+ * getSupported
15
15
  */
16
- getEnabled(): Promise<string[]>;
16
+ getSupported(): Promise<string[]>;
17
17
  /**
18
- *
18
+ * getEnabled
19
19
  */
20
- getSupported(): Promise<string[]>;
20
+ getEnabled(): Promise<string[]>;
21
21
  }
@@ -8,50 +8,22 @@
8
8
  import fs from 'node:fs';
9
9
  import { exec } from '../lib/utils.js';
10
10
  import Distro from './distro.js';
11
+ import Utils from './utils.js';
11
12
  export default class Locales {
12
13
  /**
13
14
  *
14
15
  */
15
16
  async getDefault() {
16
- const file = '/etc/default/locale';
17
- const cmd = `grep LANG < ${file}|cut -f2 -d=`;
17
+ const cmd = `locale|grep LANG|cut -f2 -d=`;
18
18
  let defaultLanguage = 'en_US.UTF-8';
19
- if (fs.existsSync(file)) {
20
- const result = await exec(cmd, { capture: true, echo: false, ignore: false });
21
- if (result.code === 0) {
22
- defaultLanguage = result.data.replaceAll('"', '').replaceAll("'", '').trim();
23
- }
24
- }
25
- return defaultLanguage;
26
- }
27
- /**
28
- *
29
- */
30
- async getEnabled() {
31
- const distro = new Distro();
32
- let cmd = 'localectl list-locales';
33
- if (distro.familyId === 'alpine') {
34
- cmd = 'locale -a';
35
- }
36
- // Restituisce i locales abilitati in Debian, per manjaro quelli presenti
37
- // in /etc/locale.gen anche se #disabilitati
38
- const enabledLocales = [];
39
19
  const result = await exec(cmd, { capture: true, echo: false, ignore: false });
40
20
  if (result.code === 0) {
41
- const lines = result.data.split('\n');
42
- for (const line of lines) {
43
- if (distro.familyId === 'alpine') {
44
- enabledLocales.push(line.replaceAll('"', '').replaceAll("'", '').trim() + '.UTF-8');
45
- }
46
- else {
47
- enabledLocales.push(line.replaceAll('"', '').replaceAll("'", '').trim());
48
- }
49
- }
21
+ defaultLanguage = result.data.trim();
50
22
  }
51
- return enabledLocales;
23
+ return defaultLanguage;
52
24
  }
53
25
  /**
54
- *
26
+ * getSupported
55
27
  */
56
28
  async getSupported() {
57
29
  const distro = new Distro();
@@ -61,15 +33,22 @@ export default class Locales {
61
33
  supporteds = await this.getEnabled();
62
34
  break;
63
35
  }
36
+ case 'archlinux': {
37
+ supporteds = await this.getEnabled();
38
+ break;
39
+ }
64
40
  case 'debian': {
65
41
  supporteds = fs.readFileSync('/usr/share/i18n/SUPPORTED', 'utf8').split('\n');
66
42
  break;
67
43
  }
68
- case 'archlinux': {
69
- supporteds = (await exec('localectl list-locales', { capture: true, echo: false, ignore: false })).data.split('\n');
44
+ case 'fedora': {
45
+ supporteds = await this.getEnabled();
46
+ break;
47
+ }
48
+ case 'suse': {
49
+ supporteds = await this.getEnabled();
70
50
  break;
71
51
  }
72
- // No default
73
52
  }
74
53
  const elements = [];
75
54
  for (const elem of supporteds) {
@@ -77,4 +56,22 @@ export default class Locales {
77
56
  }
78
57
  return elements;
79
58
  }
59
+ /**
60
+ * getEnabled
61
+ */
62
+ async getEnabled() {
63
+ let cmd = "locale -a";
64
+ if (Utils.isSystemd()) {
65
+ cmd = "localectl list-locales";
66
+ }
67
+ const enabledLocales = [];
68
+ const result = await exec(cmd, { capture: true, echo: false, ignore: false });
69
+ if (result.code === 0) {
70
+ const lines = result.data.split('\n');
71
+ for (const line of lines) {
72
+ enabledLocales.push(line.trim());
73
+ }
74
+ }
75
+ return enabledLocales;
76
+ }
80
77
  }
@@ -126,6 +126,9 @@ export default class Ovary {
126
126
  * makeDotDisk
127
127
  */
128
128
  makeDotDisk(info?: string, mksquashfs?: string, mkisofs?: string): void;
129
+ /**
130
+ * makeEFI
131
+ */
129
132
  makeEfi(theme?: string): Promise<void>;
130
133
  /**
131
134
  * makeIso
@@ -177,9 +180,6 @@ export default class Ovary {
177
180
  * syslinux
178
181
  */
179
182
  syslinux(): Promise<void>;
180
- /**
181
- * makeEfi
182
- */
183
183
  /**
184
184
  *
185
185
  * @param cmd
@@ -199,7 +199,7 @@ export default class Ovary {
199
199
  });
200
200
  const users = result.data.split('\n');
201
201
  let deluser = 'deluser';
202
- if (this.familyId === 'archlinux' || this.familyId === 'fedora') {
202
+ if (this.familyId === 'archlinux' || this.familyId === 'fedora' || this.familyId === 'suse') {
203
203
  deluser = 'userdel';
204
204
  }
205
205
  for (let i = 0; i < users.length - 1; i++) {
@@ -710,7 +710,6 @@ export default class Ovary {
710
710
  * initrdAlpine()
711
711
  */
712
712
  async initrdAlpine() {
713
- Utils.warning(`creating ${path.basename(this.settings.initrdImg)} Alpine on ISO/live`);
714
713
  Utils.warning(`creating ${path.basename(this.settings.initrdImg)} Alpine on ISO/live`);
715
714
  const sidecar = path.resolve(__dirname, `../../mkinitfs/initramfs-init.in`);
716
715
  Utils.warning(`Adding ${sidecar} to /usr/share/mkinitfs/initramfs-init`);
@@ -719,6 +718,12 @@ export default class Ovary {
719
718
  initrdImg = initrdImg.slice(Math.max(0, initrdImg.lastIndexOf('/') + 1));
720
719
  const pathConf = path.resolve(__dirname, `../../mkinitfs/live.conf`);
721
720
  await exec(`mkinitfs -c ${pathConf} -o ${this.settings.iso_work}live/${initrdImg}`, Utils.setEcho(true));
721
+ /** tempt for dracut
722
+ const kernelVersion = shx.exec('uname -r', { silent: true }).stdout.trim()
723
+ const conf = path.resolve(__dirname, `../../dracut/dracut.conf`)
724
+ const confdir = path.resolve(__dirname, `../../dracut/dracut.conf.d`)
725
+ await exec(`dracut --confdir ${confdir} ${this.settings.iso_work}live/${this.settings.initrdImg}`, Utils.setEcho(true))
726
+ */
722
727
  }
723
728
  /**
724
729
  * initrdArch()
@@ -764,7 +769,7 @@ export default class Ovary {
764
769
  const kernelVersion = shx.exec('uname -r', { silent: true }).stdout.trim();
765
770
  const conf = path.resolve(__dirname, `../../dracut/dracut.conf`);
766
771
  const confdir = path.resolve(__dirname, `../../dracut/dracut.conf.d`);
767
- await exec(`dracut --conf ${conf} --confdir ${confdir} ${this.settings.iso_work}live/${this.settings.initrdImg}`, Utils.setEcho(true));
772
+ await exec(`dracut --confdir ${confdir} ${this.settings.iso_work}live/${this.settings.initrdImg}`, Utils.setEcho(true));
768
773
  }
769
774
  /**
770
775
  * initrdSuse()
@@ -774,15 +779,12 @@ export default class Ovary {
774
779
  const kernelVersion = shx.exec('uname -r', { silent: true }).stdout.trim();
775
780
  const conf = path.resolve(__dirname, `../../dracut/dracut.conf`);
776
781
  const confdir = path.resolve(__dirname, `../../dracut/dracut.conf.d`);
777
- await exec(`dracut --verbose --conf ${conf} --confdir ${confdir} ${this.settings.iso_work}live/${this.settings.initrdImg}`, Utils.setEcho(true));
782
+ await exec(`dracut --confdir ${confdir} ${this.settings.iso_work}live/${this.settings.initrdImg}`, Utils.setEcho(true));
778
783
  }
779
784
  /**
780
785
  * async isolinux
781
786
  */
782
787
  async isolinux(theme = 'eggs') {
783
- if (this.verbose) {
784
- console.log('Ovary: isolinux');
785
- }
786
788
  /**
787
789
  * isolinux.bin
788
790
  */
@@ -862,26 +864,29 @@ export default class Ovary {
862
864
  * @returns kernelParameters
863
865
  */
864
866
  kernelParameters() {
865
- if (this.verbose) {
866
- console.log('Ovary: kernelParameters');
867
- }
868
867
  // GRUB_CMDLINE_LINUX='ipv6.disable=1'
869
868
  const { distroId } = this.settings.distro;
870
869
  let kp = "";
871
- if (this.familyId === 'debian') {
872
- kp += `boot=live components locales=${process.env.LANG}`;
870
+ if (this.familyId === 'alpine') {
871
+ kp += `alpinelivelabel=${this.volid} alpinelivesquashfs=/mnt/live/filesystem.squashfs`;
872
+ /**
873
+ * tempt for dracut
874
+ * kp += `root=live:CDLABEL=${this.volid} rd.live.image rd.live.dir=/live rd.live.squashimg=filesystem.squashfs`
875
+ */
873
876
  }
874
877
  else if (this.familyId === 'archlinux') {
875
878
  kp += `boot=live components locales=${process.env.LANG}`;
876
879
  kp += isMiso(distroId) ? ` misobasedir=manjaro misolabel=${this.volid}` : ` archisobasedir=arch archisolabel=${this.volid}`;
877
880
  }
881
+ else if (this.familyId === 'debian') {
882
+ kp += `boot=live components locales=${process.env.LANG} cow_spacesize=2G`;
883
+ }
878
884
  else if (this.familyId === 'fedora') {
879
885
  kp += `root=live:CDLABEL=${this.volid} rd.live.image rd.live.dir=/live rd.live.squashimg=filesystem.squashfs selinux=0`; // rd.shell rd.debug log_buf_len=1M
880
886
  }
881
- else if (this.familyId === 'alpine') {
882
- kp += `alpinelivelabel=${this.volid} alpinelivesquashfs=/mnt/live/filesystem.squashfs`;
887
+ else if (this.familyId === 'suse') {
888
+ kp += `root=live:CDLABEL=${this.volid} rd.live.image rd.live.dir=/live rd.live.squashimg=filesystem.squashfs`;
883
889
  }
884
- kp += ` cow_spacesize=2G`;
885
890
  return kp;
886
891
  }
887
892
  /**
@@ -963,7 +968,9 @@ export default class Ovary {
963
968
  // .disk/mkisofs
964
969
  fs.writeFileSync(dotDisk + '/mkisofs', text + mkisofs, 'utf-8');
965
970
  }
966
- // #######################################################################################
971
+ /**
972
+ * makeEFI
973
+ */
967
974
  async makeEfi(theme = 'eggs') {
968
975
  if (this.verbose) {
969
976
  console.log('Ovary: makeEfi');
@@ -1148,8 +1155,6 @@ export default class Ovary {
1148
1155
  * loopback.cfg
1149
1156
  */
1150
1157
  fs.writeFileSync(`${isoDir}/boot/grub/loopback.cfg`, 'source /boot/grub/grub.cfg\n');
1151
- // console.log('end makeEfi')
1152
- // process.exit()
1153
1158
  }
1154
1159
  /**
1155
1160
  * makeIso
@@ -1592,26 +1597,15 @@ export default class Ovary {
1592
1597
  * syslinux
1593
1598
  */
1594
1599
  async syslinux() {
1595
- if (this.verbose) {
1596
- console.log('Ovary: syslinux');
1597
- }
1598
1600
  await exec(`cp ${this.settings.distro.syslinuxPath}/vesamenu.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
1599
1601
  await exec(`cp ${this.settings.distro.syslinuxPath}/chain.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
1600
1602
  /**
1601
- * per openSuse non sono riusciuto a determinare
1602
- * quale pacchetto installi:
1603
- * ldllinux.c43, libcom32 e libutil.c32
1603
+ * OpenSuSE: ldllinux.c32, libcom32 e libutil.c32 not exists!
1604
1604
  */
1605
- if (this.familyId !== 'suse') {
1606
- await exec(`cp ${this.settings.distro.syslinuxPath}/ldlinux.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
1607
- await exec(`cp ${this.settings.distro.syslinuxPath}/libcom32.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
1608
- await exec(`cp ${this.settings.distro.syslinuxPath}/libutil.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
1609
- }
1605
+ await exec(`cp ${this.settings.distro.syslinuxPath}/ldlinux.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
1606
+ await exec(`cp ${this.settings.distro.syslinuxPath}/libcom32.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
1607
+ await exec(`cp ${this.settings.distro.syslinuxPath}/libutil.c32 ${this.settings.iso_work}/isolinux/`, this.echo);
1610
1608
  }
1611
- // #######################################################################################
1612
- /**
1613
- * makeEfi
1614
- */
1615
1609
  /**
1616
1610
  *
1617
1611
  * @param cmd
@@ -1628,7 +1622,6 @@ export default class Ovary {
1628
1622
  await Utils.pressKeyToExit(cmd);
1629
1623
  }
1630
1624
  }
1631
- // #######################################################################################
1632
1625
  /**
1633
1626
  * ubind del fs live
1634
1627
  * @param verbose
@@ -1876,9 +1869,7 @@ function isMiso(distro) {
1876
1869
  return found;
1877
1870
  }
1878
1871
  /**
1879
- * se non zuppa, pan bagnato
1880
- * @param distro
1881
- * @returns
1872
+ * isArchiso: se non zuppa, pan bagnato
1882
1873
  */
1883
1874
  function isArchiso(distro) {
1884
1875
  return !isMiso(distro);
@@ -16,6 +16,7 @@ import Alpine from './families/alpine.js';
16
16
  import Archlinux from './families/archlinux.js';
17
17
  import Debian from './families/debian.js';
18
18
  import Fedora from './families/fedora.js';
19
+ import Opensuse from './families/opensuse.js';
19
20
  import Settings from './settings.js';
20
21
  import Utils from './utils.js';
21
22
  const __dirname = path.dirname(new URL(import.meta.url).pathname);
@@ -82,6 +83,9 @@ export default class Pacman {
82
83
  else if (this.distro().familyId === 'alpine') {
83
84
  await Alpine.calamaresInstall(verbose);
84
85
  }
86
+ else if (this.distro().familyId === 'suse') {
87
+ await Opensuse.calamaresInstall(verbose);
88
+ }
85
89
  // remove others calamares links
86
90
  await exec('rm -f /usr/share/applications/calamares-eggs-debugging.desktop');
87
91
  await exec('rm -f /usr/share/applications/calamares-eggs.desktop');
@@ -113,6 +117,9 @@ export default class Pacman {
113
117
  else if (this.distro().familyId === 'alpine') {
114
118
  retVal = await Alpine.calamaresRemove(verbose);
115
119
  }
120
+ else if (this.distro().familyId === 'suse') {
121
+ retVal = await Opensuse.calamaresRemove(verbose);
122
+ }
116
123
  return retVal;
117
124
  }
118
125
  /**
@@ -457,6 +464,14 @@ export default class Pacman {
457
464
  const dest = '/etc/penguins-eggs.d/distros/alpine/';
458
465
  const alpine = `${rootPen}/conf/distros/alpine/`;
459
466
  await exec(`cp -r ${alpine}/calamares ${dest}/calamares`, echo);
467
+ /***********************************************************************************
468
+ * opensuse
469
+ **********************************************************************************/
470
+ }
471
+ else if (this.distro().codenameLikeId === 'suse') {
472
+ const dest = '/etc/penguins-eggs.d/distros/suse/';
473
+ const suse = `${rootPen}/conf/distros/suse/*`;
474
+ await exec(`cp -r ${suse} ${dest}`, echo);
460
475
  }
461
476
  }
462
477
  /**
@@ -503,6 +518,11 @@ export default class Pacman {
503
518
  installed = true;
504
519
  }
505
520
  }
521
+ else if (this.distro().familyId === 'suse') {
522
+ if (Opensuse.packageIsInstalled('wayland')) {
523
+ installed = true;
524
+ }
525
+ }
506
526
  return installed;
507
527
  }
508
528
  /**
@@ -531,6 +551,11 @@ export default class Pacman {
531
551
  installed = true;
532
552
  }
533
553
  }
554
+ else if (this.distro().familyId === 'suse') {
555
+ if (Opensuse.packageIsInstalled('xorg-x11-server')) {
556
+ installed = true;
557
+ }
558
+ }
534
559
  return installed;
535
560
  }
536
561
  /**
@@ -577,6 +602,9 @@ export default class Pacman {
577
602
  else if (Pacman.distro().familyId === 'alpine') {
578
603
  isUefi = true;
579
604
  }
605
+ else if (Pacman.distro().familyId === 'suse') {
606
+ isUefi = true;
607
+ }
580
608
  return isUefi;
581
609
  }
582
610
  /**
@@ -641,6 +669,9 @@ export default class Pacman {
641
669
  else if (this.distro().familyId === 'alpine') {
642
670
  retVal = await Alpine.packageInstall(packageName);
643
671
  }
672
+ else if (this.distro().familyId === 'suse') {
673
+ retVal = await Opensuse.packageInstall(packageName);
674
+ }
644
675
  return retVal;
645
676
  }
646
677
  /**
@@ -661,6 +692,9 @@ export default class Pacman {
661
692
  else if (this.distro().familyId === 'alpine') {
662
693
  installed = Alpine.packageIsInstalled(packageName);
663
694
  }
695
+ else if (this.distro().familyId === 'suse') {
696
+ installed = Opensuse.packageIsInstalled(packageName);
697
+ }
664
698
  return installed;
665
699
  }
666
700
  static async packageNpmLast(packageNpm = 'penguins-eggs') {
@@ -690,6 +724,9 @@ export default class Pacman {
690
724
  else if (this.distro().familyId === 'alpine') {
691
725
  grubInstalled = 'grub';
692
726
  }
727
+ else if (this.distro().familyId === 'suse') {
728
+ grubInstalled = 'grub'; //controllare
729
+ }
693
730
  return grubInstalled;
694
731
  }
695
732
  }
@@ -188,32 +188,41 @@ export default class Utils {
188
188
  * ricava path per initrdImg
189
189
  */
190
190
  static initrdImg() {
191
- let separator = "-";
192
191
  const vmlinuz = Utils.vmlinuz();
193
192
  const path = vmlinuz.substring(0, vmlinuz.lastIndexOf('/')) + '/';
194
- let initrd = 'initrd.img';
195
- let version = 'linux';
193
+ let initrd = '';
194
+ let separator = '';
195
+ let version = '';
196
196
  let suffix = '';
197
197
  let distro = new Distro();
198
- if (distro.familyId === 'debian') {
199
- version = vmlinuz.substring(vmlinuz.indexOf('-') + 1);
198
+ if (distro.familyId === 'alpine') {
199
+ initrd = 'initramfs';
200
+ separator = '-';
201
+ version = 'lts';
200
202
  }
201
203
  else if (distro.familyId === 'archlinux') {
202
204
  initrd = 'initramfs';
205
+ separator = '-';
206
+ version = 'linux';
203
207
  suffix = '.img';
204
208
  }
209
+ else if (distro.familyId === 'debian') {
210
+ initrd = 'initrd.img';
211
+ separator = "-";
212
+ version = vmlinuz.substring(vmlinuz.indexOf('-') + 1);
213
+ }
205
214
  else if (distro.familyId === 'fedora') {
206
215
  initrd = 'initramfs';
207
216
  separator = '-';
208
217
  version = vmlinuz.substring(vmlinuz.indexOf('-') + 1);
209
218
  suffix = '.img';
210
219
  }
211
- else if (distro.familyId === 'alpine') {
212
- initrd = 'initramfs';
220
+ else if (distro.familyId === 'suse') {
221
+ initrd = 'initrd';
213
222
  separator = '-';
214
- version = 'lts';
215
- suffix = '';
223
+ version = vmlinuz.substring(vmlinuz.indexOf('-') + 1);
216
224
  }
225
+ // manjaro eredita da arch
217
226
  if (distro.distroId === 'Manjaro') {
218
227
  version = vmlinuz.substring(vmlinuz.indexOf('-') + 1);
219
228
  }
@@ -19,7 +19,7 @@ export default async function mKeyboard() {
19
19
  * - /etc/X11/xorg.conf.d/00-keyboard.conf
20
20
  * - /ext/vconsole.conf (non systemd)
21
21
  */
22
- if (this.distro.familyId === 'archlinux' || this.distro.familyId === 'debian') {
22
+ if (this.distro.familyId === 'archlinux' || this.distro.familyId === 'debian' || this.distro.familyId === 'fedora') {
23
23
  let cmd = '';
24
24
  let content = '';
25
25
  if (Utils.isSystemd()) {
package/dracut/README.md CHANGED
@@ -2,9 +2,17 @@
2
2
 
3
3
  ## Install
4
4
 
5
+ ### fedora
5
6
  ```
6
7
  sudo dnf -y install \
7
8
  dracut \
8
9
  dracut-live
9
10
  ```
10
11
 
12
+ ### suse
13
+ ```
14
+ sudo dnf -y install \
15
+ dracut \
16
+ dracut-tools
17
+ ```
18
+
Binary file
@@ -6,7 +6,7 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1">
7
7
  </head>
8
8
  <body>
9
- <h1>eggs(1) -- the reproductive system of penguins: eggs v10.0.36</h1>
9
+ <h1>eggs(1) -- the reproductive system of penguins: eggs v10.0.37</h1>
10
10
  <h1>SYNOPSIS</h1>
11
11
  <p>eggs is a console utility, in active development, who let you to remaster your system and redistribuite it as live ISO image.</p>
12
12
  <h1>INSTALL</h1>
@@ -15,11 +15,11 @@
15
15
  </code></pre>
16
16
  <p>Arch</p>
17
17
  <pre><code>$ sudo pacman -S penguins-eggs
18
- $ sudo pacman -U penguins-eggs_10.0.36-1_amd64-1-x86_64.pkg.tar.zst
18
+ $ sudo pacman -U penguins-eggs_10.0.37-1_amd64-1-x86_64.pkg.tar.zst
19
19
  </code></pre>
20
20
  <p>Debian/Devuan/Ubuntu</p>
21
21
  <pre><code>$ sudo apt install penguins-eggs
22
- $ sudo dpkg -i penguins-eggs_10.0.36-1_amd64.deb
22
+ $ sudo dpkg -i penguins-eggs_10.0.37-1_amd64.deb
23
23
  </code></pre>
24
24
  <p>Manjaro</p>
25
25
  <pre><code>$ sudo pamac install penguins-eggs
@@ -27,7 +27,7 @@ $ sudo dpkg -i penguins-eggs_10.0.36-1_amd64.deb
27
27
  <h1>USAGE</h1>
28
28
  <pre><code>$ eggs (-v|--version|version)
29
29
 
30
- penguins-eggs/10.0.36
30
+ penguins-eggs/10.0.37
31
31
  $ eggs --help [COMMAND]
32
32
 
33
33
  USAGE
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "penguins-eggs",
3
3
  "shortName": "eggs",
4
4
  "description": "A remaster system tool, compatible with Arch, Debian, Devuan, Ubuntu and others",
5
- "version": "10.0.36",
5
+ "version": "10.0.37",
6
6
  "author": "Piero Proietti",
7
7
  "bin": {
8
8
  "eggs": "./bin/run.js"