penguins-eggs 10.0.15 → 10.0.19

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.
@@ -662,13 +662,6 @@
662
662
  "allowNo": false,
663
663
  "type": "boolean"
664
664
  },
665
- "udf": {
666
- "char": "U",
667
- "description": "udf, create iso UDF format using genisoimage",
668
- "name": "udf",
669
- "allowNo": false,
670
- "type": "boolean"
671
- },
672
665
  "yolk": {
673
666
  "char": "y",
674
667
  "description": "force yolk renew",
@@ -1468,5 +1461,5 @@
1468
1461
  ]
1469
1462
  }
1470
1463
  },
1471
- "version": "10.0.15"
1464
+ "version": "10.0.19"
1472
1465
  }
package/README.md CHANGED
@@ -32,6 +32,7 @@ penguins-eggs
32
32
  * [Cook eggs in 5 minutes!](https://penguins-eggs.net/docs/Tutorial/eggs5)
33
33
  * [Users guide](https://penguins-eggs.net/docs/Tutorial/eggs-users-guide)
34
34
  * [Wardrobe users' guide](https://penguins-eggs.net/docs/Tutorial/wardrobe-users-guide)
35
+ * [Penguins' eggs book](https://penguins-eggs.gitbook.io/book)
35
36
  * [FAQ](https://penguins-eggs.net/docs/faq)
36
37
  * [Changelog](https://github.com/pieroproietti/penguins-eggs/blob/master/CHANGELOG.md#changelog)
37
38
 
@@ -485,7 +486,7 @@ EXAMPLES
485
486
  $ eggs adapt
486
487
  ```
487
488
 
488
- _See code: [src/commands/adapt.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/adapt.ts)_
489
+ _See code: [src/commands/adapt.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/adapt.ts)_
489
490
 
490
491
  ## `eggs analyze`
491
492
 
@@ -506,7 +507,7 @@ EXAMPLES
506
507
  sudo eggs analyze
507
508
  ```
508
509
 
509
- _See code: [src/commands/analyze.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/analyze.ts)_
510
+ _See code: [src/commands/analyze.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/analyze.ts)_
510
511
 
511
512
  ## `eggs autocomplete [SHELL]`
512
513
 
@@ -537,7 +538,7 @@ EXAMPLES
537
538
  $ eggs autocomplete --refresh-cache
538
539
  ```
539
540
 
540
- _See code: [@oclif/plugin-autocomplete](https://github.com/oclif/plugin-autocomplete/blob/v3.1.4/src/commands/autocomplete/index.ts)_
541
+ _See code: [@oclif/plugin-autocomplete](https://github.com/oclif/plugin-autocomplete/blob/v3.1.7/src/commands/autocomplete/index.ts)_
541
542
 
542
543
  ## `eggs calamares`
543
544
 
@@ -570,7 +571,7 @@ EXAMPLES
570
571
  sudo eggs calamares --remove
571
572
  ```
572
573
 
573
- _See code: [src/commands/calamares.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/calamares.ts)_
574
+ _See code: [src/commands/calamares.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/calamares.ts)_
574
575
 
575
576
  ## `eggs config`
576
577
 
@@ -597,7 +598,7 @@ EXAMPLES
597
598
  sudo eggs config --clean --nointeractive
598
599
  ```
599
600
 
600
- _See code: [src/commands/config.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/config.ts)_
601
+ _See code: [src/commands/config.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/config.ts)_
601
602
 
602
603
  ## `eggs cuckoo`
603
604
 
@@ -617,7 +618,7 @@ EXAMPLES
617
618
  sudo eggs cuckoo
618
619
  ```
619
620
 
620
- _See code: [src/commands/cuckoo.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/cuckoo.ts)_
621
+ _See code: [src/commands/cuckoo.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/cuckoo.ts)_
621
622
 
622
623
  ## `eggs dad`
623
624
 
@@ -645,7 +646,7 @@ EXAMPLES
645
646
  sudo dad --default
646
647
  ```
647
648
 
648
- _See code: [src/commands/dad.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/dad.ts)_
649
+ _See code: [src/commands/dad.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/dad.ts)_
649
650
 
650
651
  ## `eggs export deb`
651
652
 
@@ -672,7 +673,7 @@ EXAMPLES
672
673
  $ eggs export deb --all
673
674
  ```
674
675
 
675
- _See code: [src/commands/export/deb.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/export/deb.ts)_
676
+ _See code: [src/commands/export/deb.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/export/deb.ts)_
676
677
 
677
678
  ## `eggs export iso`
678
679
 
@@ -697,7 +698,7 @@ EXAMPLES
697
698
  $ eggs export iso --clean
698
699
  ```
699
700
 
700
- _See code: [src/commands/export/iso.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/export/iso.ts)_
701
+ _See code: [src/commands/export/iso.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/export/iso.ts)_
701
702
 
702
703
  ## `eggs help [COMMAND]`
703
704
 
@@ -717,7 +718,7 @@ DESCRIPTION
717
718
  Display help for eggs.
718
719
  ```
719
720
 
720
- _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v6.2.3/src/commands/help.ts)_
721
+ _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v6.2.6/src/commands/help.ts)_
721
722
 
722
723
  ## `eggs install`
723
724
 
@@ -758,7 +759,7 @@ EXAMPLES
758
759
  sudo eggs install --chroot
759
760
  ```
760
761
 
761
- _See code: [src/commands/install.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/install.ts)_
762
+ _See code: [src/commands/install.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/install.ts)_
762
763
 
763
764
  ## `eggs kill`
764
765
 
@@ -781,7 +782,7 @@ EXAMPLES
781
782
  sudo eggs kill
782
783
  ```
783
784
 
784
- _See code: [src/commands/kill.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/kill.ts)_
785
+ _See code: [src/commands/kill.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/kill.ts)_
785
786
 
786
787
  ## `eggs krill`
787
788
 
@@ -840,7 +841,7 @@ EXAMPLES
840
841
  $ eggs mom
841
842
  ```
842
843
 
843
- _See code: [src/commands/mom.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/mom.ts)_
844
+ _See code: [src/commands/mom.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/mom.ts)_
844
845
 
845
846
  ## `eggs produce`
846
847
 
@@ -849,13 +850,12 @@ produce a live image from your system whithout your data
849
850
  ```
850
851
  USAGE
851
852
  $ eggs produce [--addons <value>...] [--basename <value>] [-c] [-C] [--excludes <value>...] [-h] [--links
852
- <value>...] [-m] [-N] [-n] [-p] [-P <value>] [--release] [-s] [-f] [--theme <value>] [-u] [-v] [-U] [-y]
853
+ <value>...] [-m] [-N] [-n] [-p] [-P <value>] [--release] [-s] [-f] [--theme <value>] [-u] [-v] [-y]
853
854
 
854
855
  FLAGS
855
856
  -C, --cryptedclone crypted clone
856
857
  -N, --noicon no icon eggs on desktop
857
858
  -P, --prefix=<value> prefix
858
- -U, --udf udf, create iso UDF format using genisoimage
859
859
  -c, --clone clone
860
860
  -f, --standard standard compression: xz -b 1M
861
861
  -h, --help Show CLI help.
@@ -898,7 +898,7 @@ EXAMPLES
898
898
  sudo eggs produce --excludes home # exclude ~/*
899
899
  ```
900
900
 
901
- _See code: [src/commands/produce.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/produce.ts)_
901
+ _See code: [src/commands/produce.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/produce.ts)_
902
902
 
903
903
  ## `eggs status`
904
904
 
@@ -919,7 +919,7 @@ EXAMPLES
919
919
  $ eggs status
920
920
  ```
921
921
 
922
- _See code: [src/commands/status.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/status.ts)_
922
+ _See code: [src/commands/status.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/status.ts)_
923
923
 
924
924
  ## `eggs syncfrom`
925
925
 
@@ -945,7 +945,7 @@ EXAMPLES
945
945
  sudo eggs syncfrom --file /path/to/luks-volume
946
946
  ```
947
947
 
948
- _See code: [src/commands/syncfrom.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/syncfrom.ts)_
948
+ _See code: [src/commands/syncfrom.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/syncfrom.ts)_
949
949
 
950
950
  ## `eggs syncto`
951
951
 
@@ -972,7 +972,7 @@ EXAMPLES
972
972
  sudo eggs syncto --excludes
973
973
  ```
974
974
 
975
- _See code: [src/commands/syncto.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/syncto.ts)_
975
+ _See code: [src/commands/syncto.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/syncto.ts)_
976
976
 
977
977
  ## `eggs tools clean`
978
978
 
@@ -994,7 +994,7 @@ EXAMPLES
994
994
  sudo eggs tools clean
995
995
  ```
996
996
 
997
- _See code: [src/commands/tools/clean.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/tools/clean.ts)_
997
+ _See code: [src/commands/tools/clean.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/tools/clean.ts)_
998
998
 
999
999
  ## `eggs tools ppa`
1000
1000
 
@@ -1020,7 +1020,7 @@ EXAMPLES
1020
1020
  sudo eggs tools ppa --remove
1021
1021
  ```
1022
1022
 
1023
- _See code: [src/commands/tools/ppa.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/tools/ppa.ts)_
1023
+ _See code: [src/commands/tools/ppa.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/tools/ppa.ts)_
1024
1024
 
1025
1025
  ## `eggs tools skel`
1026
1026
 
@@ -1044,7 +1044,7 @@ EXAMPLES
1044
1044
  sudo eggs tools skel --user user-to-be-copied
1045
1045
  ```
1046
1046
 
1047
- _See code: [src/commands/tools/skel.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/tools/skel.ts)_
1047
+ _See code: [src/commands/tools/skel.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/tools/skel.ts)_
1048
1048
 
1049
1049
  ## `eggs tools stat`
1050
1050
 
@@ -1070,7 +1070,7 @@ EXAMPLES
1070
1070
  $ eggs tools stat --year
1071
1071
  ```
1072
1072
 
1073
- _See code: [src/commands/tools/stat.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/tools/stat.ts)_
1073
+ _See code: [src/commands/tools/stat.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/tools/stat.ts)_
1074
1074
 
1075
1075
  ## `eggs tools yolk`
1076
1076
 
@@ -1091,7 +1091,7 @@ EXAMPLES
1091
1091
  sudo eggs tools yolk
1092
1092
  ```
1093
1093
 
1094
- _See code: [src/commands/tools/yolk.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/tools/yolk.ts)_
1094
+ _See code: [src/commands/tools/yolk.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/tools/yolk.ts)_
1095
1095
 
1096
1096
  ## `eggs update`
1097
1097
 
@@ -1112,7 +1112,7 @@ EXAMPLES
1112
1112
  $ eggs update
1113
1113
  ```
1114
1114
 
1115
- _See code: [src/commands/update.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/update.ts)_
1115
+ _See code: [src/commands/update.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/update.ts)_
1116
1116
 
1117
1117
  ## `eggs version`
1118
1118
 
@@ -1132,7 +1132,7 @@ FLAG DESCRIPTIONS
1132
1132
  Additionally shows the architecture, node version, operating system, and versions of plugins that the CLI is using.
1133
1133
  ```
1134
1134
 
1135
- _See code: [@oclif/plugin-version](https://github.com/oclif/plugin-version/blob/v2.2.4/src/commands/version.ts)_
1135
+ _See code: [@oclif/plugin-version](https://github.com/oclif/plugin-version/blob/v2.2.8/src/commands/version.ts)_
1136
1136
 
1137
1137
  ## `eggs wardrobe get [REPO]`
1138
1138
 
@@ -1158,7 +1158,7 @@ EXAMPLES
1158
1158
  $ eggs wardrobe get your-wardrobe
1159
1159
  ```
1160
1160
 
1161
- _See code: [src/commands/wardrobe/get.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/wardrobe/get.ts)_
1161
+ _See code: [src/commands/wardrobe/get.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/wardrobe/get.ts)_
1162
1162
 
1163
1163
  ## `eggs wardrobe list [REPO]`
1164
1164
 
@@ -1187,7 +1187,7 @@ EXAMPLES
1187
1187
  $ eggs wardrobe list --distro arch
1188
1188
  ```
1189
1189
 
1190
- _See code: [src/commands/wardrobe/list.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/wardrobe/list.ts)_
1190
+ _See code: [src/commands/wardrobe/list.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/wardrobe/list.ts)_
1191
1191
 
1192
1192
  ## `eggs wardrobe show [REPO]`
1193
1193
 
@@ -1217,7 +1217,7 @@ EXAMPLES
1217
1217
  $ eggs wardrobe show accessories/
1218
1218
  ```
1219
1219
 
1220
- _See code: [src/commands/wardrobe/show.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/wardrobe/show.ts)_
1220
+ _See code: [src/commands/wardrobe/show.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/wardrobe/show.ts)_
1221
1221
 
1222
1222
  ## `eggs wardrobe wear [REPO]`
1223
1223
 
@@ -1248,7 +1248,7 @@ EXAMPLES
1248
1248
  sudo eggs wardrobe wear wagtail/waydroid
1249
1249
  ```
1250
1250
 
1251
- _See code: [src/commands/wardrobe/wear.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.15/src/commands/wardrobe/wear.ts)_
1251
+ _See code: [src/commands/wardrobe/wear.ts](https://github.com/pieroproietti/penguins-eggs/blob/v10.0.19/src/commands/wardrobe/wear.ts)_
1252
1252
  <!-- commandsstop -->
1253
1253
 
1254
1254
  # penGUI
package/conf/yolk.yaml ADDED
@@ -0,0 +1,52 @@
1
+ packages:
2
+ - cryptsetup
3
+ - grub-efi-amd64
4
+ - grub-pc
5
+ - keyutils
6
+ - shim-signed
7
+ ############################################
8
+ # optional packages: yoi can add or remove
9
+ ############################################
10
+ #- amd64-microcode_3.20230808.1.1~deb12u1_amd64.deb
11
+ #- atmel-firmware_1.3-7_all.deb
12
+ #- b43-fwcutter_019-8_amd64.deb
13
+ #- bluez-firmware_1.2-9_all.deb
14
+ #- cheese_43.0-1_amd64.deb
15
+ #- cheese-common_43.0-1_all.deb
16
+ #- cups_2.4.2-3+deb12u5_amd64.deb
17
+ #- cups-bsd_2.4.2-3+deb12u5_amd64.deb
18
+ #- cups-client_2.4.2-3+deb12u5_amd64.deb
19
+ #- cups-common_2.4.2-3+deb12u5_all.deb
20
+ #- cups-core-drivers_2.4.2-3+deb12u5_amd64.deb
21
+ #- cups-daemon_2.4.2-3+deb12u5_amd64.deb
22
+ #- cups-ipp-utils_2.4.2-3+deb12u5_amd64.deb
23
+ #- cups-ppdc_2.4.2-3+deb12u5_amd64.deb
24
+ #- cups-server-common_2.4.2-3+deb12u5_all.deb
25
+ #- dahdi-firmware-nonfree_2.11.1.0.20170917-2_all.deb
26
+ #- firmware-amd-graphics_20230210-5_all.deb
27
+ #- firmware-ast_20140808-7_all.deb
28
+ #- firmware-b43-installer_019-8_all.deb
29
+ #- firmware-b43legacy-installer_019-8_all.deb
30
+ #- firmware-bnx2_20230210-5_all.deb
31
+ #- firmware-bnx2x_20230210-5_all.deb
32
+ #- firmware-brcm80211_20230210-5_all.deb
33
+ #- firmware-intel-sound_20230210-5_all.deb
34
+ #- firmware-ipw2x00_20230210-5_all.deb
35
+ #- firmware-ivtv_20230210-5_all.deb
36
+ #- firmware-iwlwifi_20230210-5_all.deb
37
+ #- firmware-linux-nonfree_20230210-5_all.deb
38
+ #- firmware-realtek_20230210-5_all.deb
39
+ #- firmware-realtek-rtl8723cs-bt_20181104-2_all.deb
40
+ #- firmware-sof-signed_2.2.4-1_all.deb
41
+ #- firmware-zd1211_1.5-10_all.deb
42
+ #- intel-microcode_3.20231114.1~deb12u1_amd64.deb
43
+ #- libcheese-gtk25_43.0-1_amd64.deb
44
+ #- libcheese8_43.0-1_amd64.deb
45
+ #- libcups2_2.4.2-3+deb12u5_amd64.deb
46
+ #- libcupsimage2_2.4.2-3+deb12u5_amd64.deb
47
+ #- libsane_1.2.1-2_amd64.deb
48
+ #- libsane-common_1.2.1-2_all.deb
49
+ #- libsane1_1.2.1-2_amd64.deb
50
+ #- sane_1.0.14-17_amd64.deb
51
+ #- sane-airscan_0.99.27-1+b1_amd64.deb
52
+ #- sane-utils_1.2.1-2_amd64.deb
@@ -44,8 +44,8 @@ export default class Bleach {
44
44
  }
45
45
  await exec('apt-get clean', echo);
46
46
  await exec('apt-get autoclean', echo);
47
- const dest = '/var/lib/apt/lists/';
48
- rmdir(dest, verbose);
47
+ const lockFile = '/var/lib/apt/lists/lock';
48
+ await exec(`rm ${lockFile} -rf`, echo);
49
49
  }
50
50
  /**
51
51
  * cleanHistory
@@ -203,13 +203,24 @@ class Distro {
203
203
  case 'Spizaetus':
204
204
  case 'n/a':
205
205
  case 'rolling': {
206
- // Arch, ArcoLinux, BlendOS, EndeavourOS, Garuda, RebornOS
207
- this.familyId = 'archlinux';
208
- this.distroLike = 'Arch';
209
- this.codenameId = 'rolling';
210
- this.codenameLikeId = 'rolling';
211
- this.liveMediumPath = '/run/archiso/bootmnt/';
212
- this.squashfs = `arch/x86_64/airootfs.sfs`;
206
+ if (this.distroId === "Alpine") {
207
+ // Alpine
208
+ this.familyId = 'alpine';
209
+ this.distroLike = 'Alpine';
210
+ this.codenameId = 'rolling'; // questo viene rimosso dal nome
211
+ this.codenameLikeId = 'alpine-rolling';
212
+ this.liveMediumPath = '/.modloop/'; // ? è il mount della root su cd di installatione
213
+ this.squashfs = `to/define/filestem.squashfs`;
214
+ }
215
+ else {
216
+ // Arch, ArcoLinux, BlendOS, EndeavourOS, Garuda, RebornOS
217
+ this.familyId = 'archlinux';
218
+ this.distroLike = 'Arch';
219
+ this.codenameId = 'rolling';
220
+ this.codenameLikeId = 'rolling';
221
+ this.liveMediumPath = '/run/archiso/bootmnt/';
222
+ this.squashfs = `arch/x86_64/airootfs.sfs`;
223
+ }
213
224
  break;
214
225
  }
215
226
  default: {
@@ -266,6 +277,14 @@ class Distro {
266
277
  this.isolinuxPath = this.syslinuxPath;
267
278
  break;
268
279
  }
280
+ case 'alpine': {
281
+ this.syslinuxPath = '/usr/share/syslinux/'; //correct
282
+ this.pxelinuxPath = this.syslinuxPath;
283
+ this.usrLibPath = '/usr/lib/';
284
+ this.memdiskPath = this.syslinuxPath;
285
+ this.isolinuxPath = this.syslinuxPath;
286
+ break;
287
+ }
269
288
  // No default
270
289
  } // Fine analisi codenameId
271
290
  /**
@@ -275,6 +294,10 @@ class Distro {
275
294
  if (fs.existsSync(lsbConfig)) {
276
295
  this.distroId = Utils.searchOnFile(lsbConfig, `DISTRIB_ID`);
277
296
  this.codenameId = Utils.searchOnFile(lsbConfig, `DISTRIB_CODENAME`);
297
+ // patch for BigLinux
298
+ if (this.distroId.toLowerCase().includes('biglinux')) {
299
+ this.distroId = 'biglinux';
300
+ }
278
301
  }
279
302
  /**
280
303
  * ManjaroLinux and BigLinux
@@ -0,0 +1,55 @@
1
+ /**
2
+ * ./src/classes/families/alpine.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ /**
9
+ * Alpine
10
+ * @remarks all the utilities
11
+ */
12
+ export default class Alpine {
13
+ static packs4calamares: string[];
14
+ /**
15
+ * Alpine: calamaresInstall
16
+ */
17
+ static calamaresInstall(verbose?: boolean): Promise<void>;
18
+ /**
19
+ * Alpine: calamaresPolicies
20
+ */
21
+ static calamaresPolicies(): Promise<void>;
22
+ /**
23
+ * Alpine: calamaresRemove
24
+ */
25
+ static calamaresRemove(verbose?: boolean): Promise<boolean>;
26
+ /**
27
+ * Alpine: isInstalledWayland
28
+ * @returns true if wayland is installed
29
+ */
30
+ static isInstalledWayland(): boolean;
31
+ /**
32
+ * Alpine: isInstalledXorg
33
+ * @returns true if xorg is installed
34
+ */
35
+ static isInstalledXorg(): boolean;
36
+ /**
37
+ * Alpine: packageInstall
38
+ * Install the package packageName
39
+ * @param packageName {string} Pacchetto Debian da installare
40
+ * @returns {boolean} True if success
41
+ */
42
+ static packageInstall(packageName: string): Promise<boolean>;
43
+ /**
44
+ * Alpine: packageIsInstalled OK
45
+ * restuisce VERO se il pacchetto è installato
46
+ * @param packageName
47
+ */
48
+ static packageIsInstalled(packageName: string): boolean;
49
+ /**
50
+ * Alpine: packagePacmanAvailable
51
+ * restuisce VERO se il pacchetto è installato
52
+ * @param packageName
53
+ */
54
+ static packagePacmanAvailable(packageName: string): Promise<boolean>;
55
+ }
@@ -0,0 +1,108 @@
1
+ /**
2
+ * ./src/classes/families/alpine.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import shx from 'shelljs';
9
+ import { exec } from '../../lib/utils.js';
10
+ import Utils from '../utils.js';
11
+ /**
12
+ * Alpine
13
+ * @remarks all the utilities
14
+ */
15
+ export default class Alpine {
16
+ static packs4calamares = ['calamares'];
17
+ /**
18
+ * Alpine: calamaresInstall
19
+ */
20
+ static async calamaresInstall(verbose = false) {
21
+ const echo = Utils.setEcho(verbose);
22
+ try {
23
+ let cmd = `apk add ${this.packs4calamares}`;
24
+ try {
25
+ await exec(cmd, echo);
26
+ }
27
+ catch {
28
+ Utils.error(`Cannot install ${this.packs4calamares}`); // + e.error)
29
+ }
30
+ }
31
+ catch {
32
+ Utils.error(`Cannot download ${this.packs4calamares}`); // + e.error)
33
+ }
34
+ }
35
+ /**
36
+ * Alpine: calamaresPolicies
37
+ */
38
+ static async calamaresPolicies() {
39
+ const policyFile = '/usr/share/polkit-1/actions/com.github.calamares.calamares.policy';
40
+ await exec(`sed -i 's/auth_admin/yes/' ${policyFile}`);
41
+ }
42
+ /**
43
+ * Alpine: calamaresRemove
44
+ */
45
+ static async calamaresRemove(verbose = true) {
46
+ verbose = true; // serve per pacman
47
+ let removed = true;
48
+ const echo = Utils.setEcho(verbose);
49
+ await exec(`apk del ${this.packs4calamares}`);
50
+ await exec('rm /etc/calamares -rf', echo);
51
+ return removed;
52
+ }
53
+ /**
54
+ * Alpine: isInstalledWayland
55
+ * @returns true if wayland is installed
56
+ */
57
+ static isInstalledWayland() {
58
+ return this.packageIsInstalled('xwayland');
59
+ }
60
+ /**
61
+ * Alpine: isInstalledXorg
62
+ * @returns true if xorg is installed
63
+ */
64
+ static isInstalledXorg() {
65
+ return this.packageIsInstalled('xorg-server-common');
66
+ }
67
+ /**
68
+ * Alpine: packageInstall
69
+ * Install the package packageName
70
+ * @param packageName {string} Pacchetto Debian da installare
71
+ * @returns {boolean} True if success
72
+ */
73
+ static async packageInstall(packageName) {
74
+ let retVal = false;
75
+ if (shx.exec(`/sbin/apk add ${packageName}`, { silent: true }) === '0') {
76
+ retVal = true;
77
+ }
78
+ return retVal;
79
+ }
80
+ /**
81
+ * Alpine: packageIsInstalled OK
82
+ * restuisce VERO se il pacchetto è installato
83
+ * @param packageName
84
+ */
85
+ static packageIsInstalled(packageName) {
86
+ let installed = false;
87
+ const cmd = `/sbin/apk info -e ${packageName}`;
88
+ const stdout = shx.exec(cmd, { silent: true }).stdout.trim();
89
+ if (stdout.includes(packageName)) {
90
+ installed = true;
91
+ }
92
+ return installed;
93
+ }
94
+ /**
95
+ * Alpine: packagePacmanAvailable
96
+ * restuisce VERO se il pacchetto è installato
97
+ * @param packageName
98
+ */
99
+ static async packagePacmanAvailable(packageName) {
100
+ let available = false;
101
+ const cmd = `/sbin/apk search ${packageName} | awk '{ print $1 }'`;
102
+ const stdout = shx.exec(cmd, { silent: true }).stdout.trim();
103
+ if (stdout == packageName) {
104
+ available = true;
105
+ }
106
+ return available;
107
+ }
108
+ }
@@ -24,7 +24,8 @@ export default class Archlinux {
24
24
  // const cal_eggs = 'arco-calamares-3.3.2-02-x86_64.pkg.tar.zst' // 2024-02-10
25
25
  // const cal_eggs = 'arco-calamares-3.3.5-02-x86_64.pkg.tar.zst' // 2024-03-10
26
26
  // const cal_eggs = 'calamares-garuda-3.3.5.r19.g10acebff4-1-x86_64.pkg.tar.zst' // 2024-03-10
27
- const cal_eggs = 'arco-calamares-3.3.6-06-x86_64.pkg.tar.zst'; // 24/04/27
27
+ // const cal_eggs = 'arco-calamares-3.3.6-06-x86_64.pkg.tar.zst' // 24/04/27
28
+ const cal_eggs = 'calamares-eggs-3.3.8.r39.g80ef430-1-x86_64.pkg.tar.zst'; // 12/07/24
28
29
  let cmd = `wget -O /tmp/${cal_eggs} https://sourceforge.net/projects/penguins-eggs/files/PKGBUILD/${cal_eggs}/download`;
29
30
  try {
30
31
  await exec(cmd, echo);
@@ -87,6 +87,11 @@ export default class Ovary {
87
87
  * necessita di echoYes
88
88
  */
89
89
  initrdArch(): Promise<void>;
90
+ /**
91
+ * initrdArch()
92
+ * necessita di echoYes
93
+ */
94
+ initrdAlpine(): Promise<void>;
90
95
  /**
91
96
  * We must upgrade to initrdCreate for Debian/Ubuntu
92
97
  * @returns
@@ -159,7 +164,7 @@ export default class Ovary {
159
164
  * @param unsecure
160
165
  * @param verbose
161
166
  */
162
- produce(clone: boolean | undefined, cryptedclone: boolean | undefined, scriptOnly: boolean | undefined, yolkRenew: boolean | undefined, release: boolean | undefined, myAddons: IAddons, myLinks: string[], excludes: IExcludes, nointeractive?: boolean, noicons?: boolean, unsecure?: boolean, udf?: boolean, verbose?: boolean): Promise<void>;
167
+ produce(clone: boolean | undefined, cryptedclone: boolean | undefined, scriptOnly: boolean | undefined, yolkRenew: boolean | undefined, release: boolean | undefined, myAddons: IAddons, myLinks: string[], excludes: IExcludes, nointeractive?: boolean, noicons?: boolean, unsecure?: boolean, verbose?: boolean): Promise<void>;
163
168
  /**
164
169
  * syslinux
165
170
  */
@@ -191,7 +196,7 @@ export default class Ovary {
191
196
  * @param cryptedclone
192
197
  * @returns cmd 4 mkiso
193
198
  */
194
- xorrisoCommand(clone?: boolean, cryptedclone?: boolean, udf?: boolean): Promise<string>;
199
+ xorrisoCommand(clone?: boolean, cryptedclone?: boolean): Promise<string>;
195
200
  /**
196
201
  * Creazione link desktop per lxde
197
202
  * @param name
@@ -93,7 +93,7 @@ export default class Ovary {
93
93
  */
94
94
  const dirs = fs.readdirSync('/');
95
95
  const startLine = '#############################################################';
96
- const titleLine = '# -----------------------------------------------------------';
96
+ const titleLine = '# ---------------------------------------------------------';
97
97
  const endLine = '# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n';
98
98
  let lnkDest = '';
99
99
  let cmd = '';
@@ -198,9 +198,14 @@ export default class Ovary {
198
198
  ignore: false
199
199
  });
200
200
  const users = result.data.split('\n');
201
+ let cmdUserDel = `userdel`;
202
+ if (this.familyId === 'alpine') {
203
+ // On Alpine we have just deluser
204
+ cmdUserDel = "deluser";
205
+ }
201
206
  for (let i = 0; i < users.length - 1; i++) {
202
207
  // cmds.push(await rexec(`chroot ${this.settings.work_dir.merged} deluser ${users[i]}`, verbose))
203
- cmds.push(await rexec(`chroot ${this.settings.work_dir.merged} userdel ${users[i]}`, this.verbose));
208
+ cmds.push(await rexec(`chroot ${this.settings.work_dir.merged} ${cmdUserDel} ${users[i]}`, this.verbose));
204
209
  }
205
210
  }
206
211
  /**
@@ -215,14 +220,21 @@ export default class Ovary {
215
220
  const cmds = [];
216
221
  cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' rm /home/' + this.settings.config.user_opt + ' -rf', this.verbose));
217
222
  cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' mkdir /home/' + this.settings.config.user_opt, this.verbose));
218
- cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' useradd ' + this.settings.config.user_opt + ' --home-dir /home/' + this.settings.config.user_opt + ' --shell /bin/bash ', this.verbose));
223
+ if (this.familyId === 'alpine') {
224
+ // Create user using adduser
225
+ cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' adduser -D -h /home/' + this.settings.config.user_opt + ' -s /bin/bash ' + this.settings.config.user_opt, this.verbose));
226
+ }
227
+ else {
228
+ // Create user using useradd
229
+ cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' useradd ' + this.settings.config.user_opt + ' --home-dir /home/' + this.settings.config.user_opt + ' --shell /bin/bash ', this.verbose));
230
+ }
231
+ // live password
232
+ cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' echo ' + this.settings.config.user_opt + ':' + this.settings.config.user_opt_passwd + ' | chroot ' + this.settings.work_dir.merged + ' chpasswd', this.verbose));
233
+ // root password
234
+ cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' echo root:' + this.settings.config.root_passwd + ' | chroot ' + this.settings.work_dir.merged + ' chpasswd', this.verbose));
219
235
  cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' cp /etc/skel/. /home/' + this.settings.config.user_opt + ' -R', this.verbose));
220
236
  // da problemi con il mount sshfs
221
237
  cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' chown ' + this.settings.config.user_opt + ':users' + ' /home/' + this.settings.config.user_opt + ' -R', this.verbose));
222
- // live password
223
- cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' echo ' + this.settings.config.user_opt + ':' + this.settings.config.user_opt_passwd + '| chroot ' + this.settings.work_dir.merged + ' chpasswd', this.verbose));
224
- // root password
225
- cmds.push(await rexec('chroot ' + this.settings.work_dir.merged + ' echo root:' + this.settings.config.root_passwd + '| chroot ' + this.settings.work_dir.merged + ' chpasswd', this.verbose));
226
238
  if (this.familyId === 'debian') {
227
239
  cmds.push(await rexec(`chroot ${this.settings.work_dir.merged} usermod -aG sudo ${this.settings.config.user_opt}`, this.verbose));
228
240
  }
@@ -711,6 +723,21 @@ export default class Ovary {
711
723
  const pathConf = path.resolve(__dirname, `../../mkinitcpio/${fileConf}/live.conf`);
712
724
  await exec(`mkinitcpio -c ${pathConf} -g ${this.settings.iso_work}live/${initrdImg}`, Utils.setEcho(true));
713
725
  }
726
+ /**
727
+ * initrdArch()
728
+ * necessita di echoYes
729
+ */
730
+ async initrdAlpine() {
731
+ Utils.warning(`creating ${path.basename(this.settings.initrdImg)} on ISO/live`);
732
+ let initrdImg = Utils.initrdImg();
733
+ //initrdImg = initrdImg.slice(Math.max(0, initrdImg.lastIndexOf('/') + 1))
734
+ Utils.warning(`Creating ${initrdImg} in ${this.settings.iso_work}live/`);
735
+ const { distroId } = this.settings.distro;
736
+ // da cambiare ...
737
+ let fileConf = 'arch';
738
+ const pathConf = path.resolve(__dirname, `../../mkinitcpio/${fileConf}/live.conf`);
739
+ await exec(`mkinitcpio -c ${pathConf} -g ${this.settings.iso_work}live/${initrdImg}`, Utils.setEcho(true));
740
+ }
714
741
  /**
715
742
  * We must upgrade to initrdCreate for Debian/Ubuntu
716
743
  * @returns
@@ -1275,7 +1302,7 @@ export default class Ovary {
1275
1302
  * @param unsecure
1276
1303
  * @param verbose
1277
1304
  */
1278
- async produce(clone = false, cryptedclone = false, scriptOnly = false, yolkRenew = false, release = false, myAddons, myLinks, excludes, nointeractive = false, noicons = false, unsecure = false, udf = false, verbose = false) {
1305
+ async produce(clone = false, cryptedclone = false, scriptOnly = false, yolkRenew = false, release = false, myAddons, myLinks, excludes, nointeractive = false, noicons = false, unsecure = false, verbose = false) {
1279
1306
  this.verbose = verbose;
1280
1307
  this.echo = Utils.setEcho(verbose);
1281
1308
  if (this.verbose) {
@@ -1467,7 +1494,7 @@ export default class Ovary {
1467
1494
  Utils.warning(`moving ${luksFile} in ${this.nest}iso/live`);
1468
1495
  await exec(`mv ${luksFile} ${this.nest}iso/live`, this.echo);
1469
1496
  }
1470
- const mkIsofsCmd = (await this.xorrisoCommand(clone, cryptedclone, udf)).replaceAll(/\s\s+/g, ' ');
1497
+ const mkIsofsCmd = (await this.xorrisoCommand(clone, cryptedclone)).replaceAll(/\s\s+/g, ' ');
1471
1498
  this.makeDotDisk(this.volid, mksquashfsCmd, mkIsofsCmd);
1472
1499
  /**
1473
1500
  * AntiX/MX LINUX
@@ -1648,7 +1675,7 @@ export default class Ovary {
1648
1675
  * @param cryptedclone
1649
1676
  * @returns cmd 4 mkiso
1650
1677
  */
1651
- async xorrisoCommand(clone = false, cryptedclone = false, udf = false) {
1678
+ async xorrisoCommand(clone = false, cryptedclone = false) {
1652
1679
  if (this.verbose) {
1653
1680
  console.log('Ovary: xorrisoCommand');
1654
1681
  }
@@ -1695,28 +1722,26 @@ export default class Ovary {
1695
1722
  uefi_isohybridGptBasdat = '-isohybrid-gpt-basdat';
1696
1723
  uefi_noEmulBoot = '-no-emul-boot';
1697
1724
  }
1698
- if (udf) {
1699
- if (Pacman.packageIsInstalled('genisoimage')) {
1700
- this.genisoimage = true;
1701
- command = `genisoimage \
1702
- -iso-level 3 \
1703
- -allow-limited-size \
1704
- -joliet-long \
1705
- -r \
1706
- -V "V3.0" \
1707
- -cache-inodes \
1708
- -J \
1709
- -l \
1710
- -b isolinux/isolinux.bin \
1711
- -c isolinux/boot.cat \
1712
- -no-emul-boot \
1713
- -boot-load-size 4 \
1714
- -boot-info-table \
1715
- -eltorito-alt-boot \
1716
- -e boot/grub/efiboot.img \
1717
- -o ${output} ${this.settings.iso_work}`;
1718
- return command;
1719
- }
1725
+ if (Pacman.packageIsInstalled('genisoimage')) {
1726
+ this.genisoimage = true;
1727
+ command = `genisoimage \
1728
+ -iso-level 3 \
1729
+ -allow-limited-size \
1730
+ -joliet-long \
1731
+ -r \
1732
+ -V ${this.volid} \
1733
+ -cache-inodes \
1734
+ -J \
1735
+ -l \
1736
+ -b isolinux/isolinux.bin \
1737
+ -c isolinux/boot.cat \
1738
+ -no-emul-boot \
1739
+ -boot-load-size 4 \
1740
+ -boot-info-table \
1741
+ -eltorito-alt-boot \
1742
+ -e boot/grub/efiboot.img \
1743
+ -o ${output} ${this.settings.iso_work}`;
1744
+ return command;
1720
1745
  }
1721
1746
  // xorriso
1722
1747
  command = `xorriso -as mkisofs \
@@ -15,7 +15,7 @@ import Distro from './distro.js';
15
15
  import Archlinux from './families/archlinux.js';
16
16
  import Debian from './families/debian.js';
17
17
  import Fedora from './families/fedora.js';
18
- import Suse from './families/suse.js';
18
+ import Alpine from './families/alpine.js';
19
19
  import Settings from './settings.js';
20
20
  import Utils from './utils.js';
21
21
  const __dirname = path.dirname(new URL(import.meta.url).pathname);
@@ -79,8 +79,8 @@ export default class Pacman {
79
79
  await Archlinux.calamaresInstall(verbose);
80
80
  }
81
81
  }
82
- else if (this.distro().familyId === 'suse') {
83
- await Suse.calamaresInstall(verbose);
82
+ else if (this.distro().familyId === 'alpine') {
83
+ await Alpine.calamaresInstall(verbose);
84
84
  }
85
85
  // remove others calamares links
86
86
  await exec('rm -f /usr/share/applications/calamares-eggs-debugging.desktop');
@@ -101,8 +101,8 @@ export default class Pacman {
101
101
  else if (this.distro().familyId === 'archlinux') {
102
102
  await Archlinux.calamaresPolicies();
103
103
  }
104
- else if (this.distro().familyId === 'suse') {
105
- await Suse.calamaresPolicies();
104
+ else if (this.distro().familyId === 'alpine') {
105
+ await Alpine.calamaresPolicies();
106
106
  }
107
107
  }
108
108
  /**
@@ -119,8 +119,8 @@ export default class Pacman {
119
119
  else if (this.distro().familyId === 'archlinux') {
120
120
  retVal = await Archlinux.calamaresRemove(verbose);
121
121
  }
122
- else if (this.distro().familyId === 'suse') {
123
- retVal = await Suse.calamaresRemove(verbose);
122
+ else if (this.distro().familyId === 'alpine') {
123
+ retVal = await Alpine.calamaresRemove(verbose);
124
124
  }
125
125
  return retVal;
126
126
  }
@@ -222,6 +222,7 @@ export default class Pacman {
222
222
  shx.cp(path.resolve(__dirname, '../../conf/tools.yaml'), config_tools);
223
223
  shx.cp(path.resolve(__dirname, '../../conf/krill.yaml'), confRoot);
224
224
  shx.cp(path.resolve(__dirname, '../../conf/derivatives.yaml'), confRoot);
225
+ shx.cp(path.resolve(__dirname, '../../conf/yolk.yaml'), confRoot);
225
226
  // init
226
227
  shx.cp(path.resolve(__dirname, '../../conf/init/unattended.sh'), '/etc/penguins-eggs.d/init');
227
228
  shx.chmod('+x', '/etc/penguins-eggs.d/init/unattended.sh');
@@ -453,16 +454,13 @@ export default class Pacman {
453
454
  const rolling = `${rootPen}/conf/distros/rolling/*`;
454
455
  await exec(`cp -r ${rolling} ${dest}`, echo);
455
456
  /***********************************************************************************
456
- * openSuse
457
+ * Alpine
457
458
  **********************************************************************************/
458
- /**
459
- * openSUSE tumbleweed: eredita da tumbleweed
460
- */
461
459
  }
462
- else if (this.distro().codenameLikeId === 'tumbleweed') {
463
- const dest = '/etc/penguins-eggs.d/distros/tumbleweed/';
464
- const tumbleweed = `${rootPen}/conf/distros/tumbleweed/*`;
465
- await exec(`cp -r ${tumbleweed} ${dest}`, echo);
460
+ else if (this.distro().codenameLikeId === 'alpine-rolling') {
461
+ const dest = '/etc/penguins-eggs.d/distros/alpine-rolling/';
462
+ const alpine = `${rootPen}/conf/distros/alpine-rolling/*`;
463
+ await exec(`cp -r ${alpine} ${dest}`, echo);
466
464
  }
467
465
  }
468
466
  /**
@@ -504,7 +502,7 @@ export default class Pacman {
504
502
  installed = true;
505
503
  }
506
504
  }
507
- else if (this.distro().familyId === 'suse' && Suse.packageIsInstalled('xwayland*')) {
505
+ else if (this.distro().familyId === 'alpine' && Alpine.packageIsInstalled('xwayland*')) {
508
506
  installed = true;
509
507
  }
510
508
  return installed;
@@ -530,7 +528,7 @@ export default class Pacman {
530
528
  installed = true;
531
529
  }
532
530
  }
533
- else if (this.distro().familyId === 'suse' && Suse.packageIsInstalled('xorg-x11-server')) {
531
+ else if (this.distro().familyId === 'alpine' && Alpine.packageIsInstalled('xorg-x11-server')) {
534
532
  installed = true;
535
533
  }
536
534
  return installed;
@@ -576,7 +574,7 @@ export default class Pacman {
576
574
  else if (Pacman.distro().familyId === 'archlinux') {
577
575
  isUefi = true;
578
576
  }
579
- else if (Pacman.distro().familyId === 'suse') {
577
+ else if (Pacman.distro().familyId === 'alpine') {
580
578
  isUefi = true;
581
579
  }
582
580
  return isUefi;
@@ -640,6 +638,9 @@ export default class Pacman {
640
638
  else if (this.distro().familyId === 'fedora') {
641
639
  retVal = await Fedora.packageInstall(packageName);
642
640
  }
641
+ else if (this.distro().familyId === 'alpine') {
642
+ retVal = await Alpine.packageInstall(packageName);
643
+ }
643
644
  return retVal;
644
645
  }
645
646
  /**
@@ -657,8 +658,8 @@ export default class Pacman {
657
658
  else if (this.distro().familyId === 'archlinux') {
658
659
  installed = Archlinux.packageIsInstalled(packageName);
659
660
  }
660
- else if (this.distro().familyId === 'suse') {
661
- installed = Suse.packageIsInstalled(packageName);
661
+ else if (this.distro().familyId === 'alpine') {
662
+ installed = Alpine.packageIsInstalled(packageName);
662
663
  }
663
664
  return installed;
664
665
  }
@@ -686,7 +687,7 @@ export default class Pacman {
686
687
  grubInstalled = 'grub';
687
688
  }
688
689
  }
689
- else if (this.distro().familyId === 'suse' && this.packageIsInstalled('grub2')) {
690
+ else if (this.distro().familyId === 'alpine') {
690
691
  grubInstalled = 'grub2';
691
692
  }
692
693
  return grubInstalled;
@@ -172,6 +172,7 @@ export default class Utils {
172
172
  * ricava path per initrdImg
173
173
  */
174
174
  static initrdImg() {
175
+ let separator = "-";
175
176
  const vmlinuz = Utils.vmlinuz();
176
177
  const path = vmlinuz.substring(0, vmlinuz.lastIndexOf('/')) + '/';
177
178
  let initrd = 'initrd.img';
@@ -185,10 +186,16 @@ export default class Utils {
185
186
  initrd = 'initramfs';
186
187
  suffix = '.img';
187
188
  }
189
+ else if (distro.familyId === 'alpine') {
190
+ initrd = 'initramfs';
191
+ separator = '-';
192
+ version = 'lts';
193
+ suffix = '';
194
+ }
188
195
  if (distro.distroId === 'Manjaro') {
189
196
  version = vmlinuz.substring(vmlinuz.indexOf('-') + 1);
190
197
  }
191
- initrd = path + initrd + '-' + version + suffix;
198
+ initrd = path + initrd + separator + version + suffix;
192
199
  return initrd;
193
200
  }
194
201
  /**
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import fs from 'node:fs';
9
9
  import shx from 'shelljs';
10
+ import yaml from 'js-yaml';
10
11
  import { exec } from '../lib/utils.js';
11
12
  import Bleach from './bleach.js';
12
13
  import Pacman from './pacman.js';
@@ -51,11 +52,11 @@ export default class Yolk {
51
52
  await exec(`mkdir ${this.yolkDir} -p`, this.echo);
52
53
  await exec(`chown _apt:root ${this.yolkDir} -R`, this.echo);
53
54
  }
54
- // packages we need
55
- const pkgs = ['cryptsetup', 'grub-efi-amd64', 'grub-pc', 'keyutils', 'shim-signed'];
55
+ const yolk_yaml = '/etc/penguins-eggs.d/yolk.yaml';
56
+ const yolk = yaml.load(fs.readFileSync(yolk_yaml, 'utf8'));
56
57
  process.chdir(this.yolkDir);
57
58
  Utils.warning(`Downloading packages and its dependencies`);
58
- for (const pkg of pkgs) {
59
+ for (const pkg of yolk.packages) {
59
60
  Utils.warning(`- ${pkg}`);
60
61
  cmd = `apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances ${pkg} | grep "^\\w" | sort -u`;
61
62
  let depends = pkg + '\n';
@@ -28,7 +28,6 @@ export default class Produce extends Command {
28
28
  theme: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
29
29
  unsecure: import("@oclif/core/interfaces").BooleanFlag<boolean>;
30
30
  verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
31
- udf: import("@oclif/core/interfaces").BooleanFlag<boolean>;
32
31
  yolk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
33
32
  };
34
33
  run(): Promise<void>;
@@ -48,7 +48,6 @@ export default class Produce extends Command {
48
48
  theme: Flags.string({ description: 'theme for livecd, calamares branding and partitions' }),
49
49
  unsecure: Flags.boolean({ char: 'u', description: '/root contents are included on live' }),
50
50
  verbose: Flags.boolean({ char: 'v', description: 'verbose' }),
51
- udf: Flags.boolean({ char: 'U', description: 'udf, create iso UDF format using genisoimage' }),
52
51
  yolk: Flags.boolean({ char: 'y', description: 'force yolk renew' }),
53
52
  };
54
53
  async run() {
@@ -143,7 +142,6 @@ export default class Produce extends Command {
143
142
  const yolkRenew = flags.yolk;
144
143
  const { nointeractive } = flags;
145
144
  const { noicon } = flags;
146
- const { udf } = flags;
147
145
  // if clone or cryptedclone unsecure = true
148
146
  const unsecure = flags.unsecure || clone || cryptedclone;
149
147
  /**
@@ -190,7 +188,7 @@ export default class Produce extends Command {
190
188
  const ovary = new Ovary();
191
189
  Utils.warning('Produce an egg...');
192
190
  if (await ovary.fertilization(prefix, basename, theme, compression, !nointeractive)) {
193
- await ovary.produce(clone, cryptedclone, scriptOnly, yolkRenew, release, myAddons, myLinks, excludes, nointeractive, noicon, unsecure, udf, verbose);
191
+ await ovary.produce(clone, cryptedclone, scriptOnly, yolkRenew, release, myAddons, myLinks, excludes, nointeractive, noicon, unsecure, verbose);
194
192
  ovary.finished(scriptOnly);
195
193
  }
196
194
  }
Binary file
@@ -6,10 +6,10 @@
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.15</h1>
9
+ <h1>eggs(1) -- the reproductive system of penguins: eggs v10.0.19</h1>
10
10
  <h1>SYNOPSIS</h1>
11
11
  <p>Install Debian families (debian/devuan/ubuntu)</p>
12
- <pre><code>$ sudo dpkg -i penguins-eggs_10.0.15-bionic-1_amd64.deb
12
+ <pre><code>$ sudo dpkg -i penguins-eggs_10.0.19-bionic-1_amd64.deb
13
13
  </code></pre>
14
14
  <p>Install Arch families (Arch, manjaro Linux)</p>
15
15
  <p>Arch from AUR</p>
@@ -30,7 +30,7 @@ $ makepkg -si
30
30
  <h1>USAGE</h1>
31
31
  <pre><code>$ eggs (-v|--version|version)
32
32
 
33
- penguins-eggs/10.0.15
33
+ penguins-eggs/10.0.19
34
34
  $ eggs --help [COMMAND]
35
35
 
36
36
  USAGE
@@ -382,13 +382,12 @@ EXAMPLES
382
382
  <p>produce a live image from your system whithout your data</p>
383
383
  <pre><code>USAGE
384
384
  $ eggs produce [--addons &#x3C;value>...] [--basename &#x3C;value>] [-c] [-C] [--excludes &#x3C;value>...] [-h] [--links
385
- &#x3C;value>...] [-m] [-N] [-n] [-p] [-P &#x3C;value>] [--release] [-s] [-f] [--theme &#x3C;value>] [-u] [-v] [-U] [-y]
385
+ &#x3C;value>...] [-m] [-N] [-n] [-p] [-P &#x3C;value>] [--release] [-s] [-f] [--theme &#x3C;value>] [-u] [-v] [-y]
386
386
 
387
387
  FLAGS
388
388
  -C, --cryptedclone crypted clone
389
389
  -N, --noicon no icon eggs on desktop
390
390
  -P, --prefix=&#x3C;value> prefix
391
- -U, --udf udf, create iso UDF format using genisoimage
392
391
  -c, --clone clone
393
392
  -f, --standard standard compression: xz -b 1M
394
393
  -h, --help Show CLI help.
package/package.json CHANGED
@@ -2,17 +2,17 @@
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.15",
5
+ "version": "10.0.19",
6
6
  "author": "Piero Proietti",
7
7
  "bin": {
8
8
  "eggs": "./bin/run.js"
9
9
  },
10
10
  "bugs": "https://github.com/pieroproietti/penguins-eggs/issues",
11
11
  "dependencies": {
12
- "@oclif/core": "^4.0.6",
13
- "@oclif/plugin-autocomplete": "^3.1.4",
14
- "@oclif/plugin-help": "^6.2.3",
15
- "@oclif/plugin-version": "^2.2.4",
12
+ "@oclif/core": "^4.0.12",
13
+ "@oclif/plugin-autocomplete": "^3.1.7",
14
+ "@oclif/plugin-help": "^6.2.6",
15
+ "@oclif/plugin-version": "^2.2.8",
16
16
  "axios": "^1.7.2",
17
17
  "chalk": "^5.3.0",
18
18
  "cli-cursor": "^4.0.0",
@@ -37,7 +37,7 @@
37
37
  "@types/mocha": "^10.0.6",
38
38
  "@types/mustache": "^4.2.5",
39
39
  "@types/netmask": "^2.0.5",
40
- "@types/node": "^20.14.7",
40
+ "@types/node": "^20.14.11",
41
41
  "@types/node-static": "^0.7.11",
42
42
  "@types/react": "^18.3.3",
43
43
  "@types/shelljs": "^0.8.15",
@@ -46,13 +46,13 @@
46
46
  "eslint-config-oclif": "^5.2.0",
47
47
  "eslint-config-oclif-typescript": "^3.1.8",
48
48
  "eslint-config-prettier": "^9.1.0",
49
- "mocha": "^10.4.0",
50
- "oclif": "^4.13.8",
51
- "perrisbrewery": "^10",
52
- "prettier": "^3.3.2",
49
+ "mocha": "^10.6.0",
50
+ "oclif": "^4.14.6",
51
+ "perrisbrewery": "^10.0.1",
52
+ "prettier": "^3.3.3",
53
53
  "shx": "^0.3.4",
54
54
  "ts-node": "^10.9.2",
55
- "typescript": "^5.5.2"
55
+ "typescript": "^5.5.3"
56
56
  },
57
57
  "engines": {
58
58
  "node": ">=16.0.0"
package/scripts/_eggs CHANGED
@@ -190,9 +190,9 @@ _eggs() {
190
190
  "syncfrom[restore users and user data from a LUKS volumes]" \
191
191
  "syncto[Save users and users' data ENCRYPTED]" \
192
192
  "update[update the Penguins' eggs tool]" \
193
- "version[]" \
194
- "help[Display help for eggs.]" \
195
193
  "autocomplete[Display autocomplete installation instructions.]" \
194
+ "help[Display help for eggs.]" \
195
+ "version[]" \
196
196
 
197
197
  ;;
198
198
  args)
@@ -323,6 +323,7 @@ _arguments -S \
323
323
  --theme"[theme for livecd, calamares branding and partitions]:file:_files" \
324
324
  "(-u --unsecure)"{-u,--unsecure}"[/root contents are included on live]" \
325
325
  "(-v --verbose)"{-v,--verbose}"[verbose]" \
326
+ "(-U --udf)"{-U,--udf}"[use UDF format on ISO with genisoimage breacking 4.7 G limit]" \
326
327
  "(-y --yolk)"{-y,--yolk}"[force yolk renew]" \
327
328
  --help"[Show help for command]" \
328
329
  "*: :_files" ;;
@@ -355,10 +356,9 @@ _arguments -S \
355
356
  "(-v --verbose)"{-v,--verbose}"[verbose]" \
356
357
  --help"[Show help for command]" \
357
358
  "*: :_files" ;;
358
- version)
359
+ autocomplete)
359
360
  _arguments -S \
360
- --json"[Format output as json.]" \
361
- --verbose"[Show additional information about the CLI.]" \
361
+ "(-r --refresh-cache)"{-r,--refresh-cache}"[Refresh cache (ignores displaying instructions)]" \
362
362
  --help"[Show help for command]" \
363
363
  "*: :_files" ;;
364
364
  help)
@@ -366,9 +366,10 @@ _arguments -S \
366
366
  "(-n --nested-commands)"{-n,--nested-commands}"[Include all nested commands in the output.]" \
367
367
  --help"[Show help for command]" \
368
368
  "*: :_files" ;;
369
- autocomplete)
369
+ version)
370
370
  _arguments -S \
371
- "(-r --refresh-cache)"{-r,--refresh-cache}"[Refresh cache (ignores displaying instructions)]" \
371
+ --json"[Format output as json.]" \
372
+ --verbose"[Show additional information about the CLI.]" \
372
373
  --help"[Show help for command]" \
373
374
  "*: :_files" ;;
374
375
  esac
package/scripts/eggs.bash CHANGED
@@ -23,7 +23,7 @@ install --btrfs --chroot --crypted --domain --halt --help --ip --nointeractive -
23
23
  krill --btrfs --chroot --crypted --domain --halt --help --ip --nointeractive --none --pve --random --small --suspend --unattended --verbose
24
24
  kill --help --isos --nointeractive --verbose
25
25
  mom --help
26
- produce --addons --basename --clone --cryptedclone --excludes --help --links --max --noicon --nointeractive --pendrive --prefix --release --script --standard --theme --unsecure --verbose --yolk
26
+ produce --addons --basename --clone --cryptedclone --excludes --help --links --max --noicon --nointeractive --pendrive --prefix --release --script --standard --theme --unsecure --verbose --udf --yolk
27
27
  status --help --verbose
28
28
  syncfrom --delete --file --help --rootdir --verbose
29
29
  syncto --excludes --file --help --verbose
@@ -37,9 +37,9 @@ wardrobe:get --help --verbose
37
37
  wardrobe:list --distro --help --verbose
38
38
  wardrobe:show --help --json --verbose --wardrobe
39
39
  wardrobe:wear --help --no_accessories --no_firmwares --verbose --wardrobe
40
- version --json --verbose
41
- help --nested-commands
42
40
  autocomplete --refresh-cache
41
+ help --nested-commands
42
+ version --json --verbose
43
43
  "
44
44
 
45
45
  function __trim_colon_commands()