package picotool import ( "fmt" "os/exec" "time" ) func Load(uf2Path string, serial string, timeout time.Duration) error { deadline := time.Now().Add(timeout) var out []byte var err error for { cmd := exec.Command("picotool", "load", uf2Path, "-x", "--ser", serial) out, err = cmd.CombinedOutput() if err == nil { return nil } if time.Now().After(deadline) { return fmt.Errorf("picotool load: %w\n%s", err, out) } } } func Reboot(serial string) error { cmd := exec.Command("picotool", "reboot", "--ser", serial) out, err := cmd.CombinedOutput() if err != nil { return fmt.Errorf("picotool reboot: %w\n%s", err, out) } return nil }