@@ -2,48 +2,57 @@ package boot
22
33import "errors"
44
5- type Mode int
5+ type Mode struct {
6+ name string
7+ validate func () error
8+ }
69
710var (
8- BiosSyslinuxMbr Mode = 0
9- BiosSyslinuxElTorito Mode = 1
10- UefiIa32SystemdBootEsp Mode = 2
11- UefiX64SystemdBootEsp Mode = 3
12- UefiIa32SystemdBootElTorito Mode = 4
13- UefiX64SystemdBootElTorito Mode = 5
14- UefiX64GrubEsp Mode = 6
15- UefiIa32GrubEsp Mode = 7
16- UefiX64GrubElTorito Mode = 8
17- UefiIa32GrubElTorito Mode = 9
11+ BiosSyslinuxMbr Mode = Mode {"bios.syslinux.mbr" , nil }
12+ BiosSyslinuxElTorito Mode = Mode {"bios.syslinux.eltorito" , nil }
13+ UefiIa32SystemdBootEsp Mode = Mode {"uefi-ia32.systemd-boot.esp" , nil }
14+ UefiX64SystemdBootEsp Mode = Mode {"uefi-x64.systemd-boot.esp" , nil }
15+ UefiIa32SystemdBootElTorito Mode = Mode {"uefi-ia32.systemd-boot.eltorito" , nil }
16+ UefiX64SystemdBootElTorito Mode = Mode {"uefi-x64.systemd-boot.eltorito" , nil }
17+ UefiX64GrubEsp Mode = Mode {"uefi-x64.grub.esp" , nil }
18+ UefiIa32GrubEsp Mode = Mode {"uefi-ia32.grub.esp" , nil }
19+ UefiX64GrubElTorito Mode = Mode {"uefi-x64.grub.eltorito" , nil }
20+ UefiIa32GrubElTorito Mode = Mode {"uefi-ia32.grub.eltorito" , nil }
21+
22+ Modes = []Mode {
23+ BiosSyslinuxMbr ,
24+ BiosSyslinuxElTorito ,
25+ UefiIa32SystemdBootEsp ,
26+ UefiX64SystemdBootEsp ,
27+ UefiIa32SystemdBootElTorito ,
28+ UefiX64SystemdBootElTorito ,
29+ UefiX64GrubEsp ,
30+ UefiIa32GrubEsp ,
31+ UefiX64GrubElTorito ,
32+ UefiIa32GrubElTorito ,
33+ }
1834)
1935
36+ func (m * Mode ) String () string {
37+ return m .name
38+ }
39+
40+ func (m * Mode ) Validate () error {
41+ if m .validate != nil {
42+ return m .validate ()
43+ }
44+ return nil
45+ }
46+
2047var ErrInvalidMode = errors .New ("invalid boot mode" )
2148
2249func getModeFromStr (mode string ) (Mode , error ) {
23- switch mode {
24- case "bios.syslinux.mbr" :
25- return BiosSyslinuxMbr , nil
26- case "bios.syslinux.eltorito" :
27- return BiosSyslinuxElTorito , nil
28- case "uefi-ia32.systemd-boot.esp" :
29- return UefiIa32SystemdBootEsp , nil
30- case "uefi-x64.systemd-boot.esp" :
31- return UefiX64SystemdBootEsp , nil
32- case "uefi-ia32.systemd-boot.eltorito" :
33- return UefiIa32SystemdBootElTorito , nil
34- case "uefi-x64.systemd-boot.eltorito" :
35- return UefiX64SystemdBootElTorito , nil
36- case "uefi-x64.grub.esp" :
37- return UefiX64GrubEsp , nil
38- case "uefi-ia32.grub.esp" :
39- return UefiIa32GrubEsp , nil
40- case "uefi-x64.grub.eltorito" :
41- return UefiX64GrubElTorito , nil
42- case "uefi-ia32.grub.eltorito" :
43- return UefiIa32GrubElTorito , nil
44-
50+ for _ , m := range Modes {
51+ if m .name == mode {
52+ return m , nil
53+ }
4554 }
46- return 0 , ErrInvalidMode
55+ return Mode {} , ErrInvalidMode
4756}
4857
4958func GetModes (modes ... string ) ([]Mode , error ) {
0 commit comments