Writes bootcmd
This commit is contained in:
60
clitools/pkg/node/uboot/bootenvconfig.go
Normal file
60
clitools/pkg/node/uboot/bootenvconfig.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package uboot
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func (c BootEnvConfig) Validate() error {
|
||||
switch c.BootSource {
|
||||
case "usb", "emmc":
|
||||
default:
|
||||
return fmt.Errorf("invalid boot source %q", c.BootSource)
|
||||
}
|
||||
|
||||
switch c.BootPart {
|
||||
case "A", "B":
|
||||
default:
|
||||
return fmt.Errorf("invalid boot part %q", c.BootPart)
|
||||
}
|
||||
|
||||
if c.BootDisk < 0 {
|
||||
return fmt.Errorf("invalid boot disk %d", c.BootDisk)
|
||||
}
|
||||
if c.RootfsAPartNum <= 0 {
|
||||
return fmt.Errorf("invalid rootfs A part %d", c.RootfsAPartNum)
|
||||
}
|
||||
if c.RootfsBPartNum <= 0 {
|
||||
return fmt.Errorf("invalid rootfs B part %d", c.RootfsBPartNum)
|
||||
}
|
||||
if c.DataPartNum <= 0 {
|
||||
return fmt.Errorf("invalid data part %d", c.DataPartNum)
|
||||
}
|
||||
if strings.TrimSpace(c.LinuxRootPrefix) == "" {
|
||||
return fmt.Errorf("linux root prefix is required")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c BootEnvConfig) bootCmdOrDefault() string {
|
||||
if s := strings.TrimSpace(c.BootCmd); s != "" {
|
||||
return s
|
||||
}
|
||||
return compactUBootScript(defaultBootCmdTemplate)
|
||||
}
|
||||
|
||||
func compactUBootScript(s string) string {
|
||||
lines := strings.Split(s, "\n")
|
||||
out := make([]string, 0, len(lines))
|
||||
|
||||
for _, line := range lines {
|
||||
line = strings.TrimSpace(line)
|
||||
if line == "" || strings.HasPrefix(line, "#") {
|
||||
continue
|
||||
}
|
||||
out = append(out, line)
|
||||
}
|
||||
|
||||
return strings.Join(out, " ")
|
||||
}
|
||||
Reference in New Issue
Block a user