package main import ( "fmt" "os" "strings" "time" ) const outputSuccess = `installing 0% Installing 0% Determining slot states 20% Determining slot states done. 20% Checking bundle 20% Verifying signature 40% Verifying signature done. 40% Checking bundle done. 40% Checking manifest contents 60% Checking manifest contents done. 60% Determining target install group 80% Determining target install group done. 80% Updating slots 80% Checking slot rootfs.0 90% Checking slot rootfs.0 done. 90% Copying image to rootfs.0 100% Copying image to rootfs.0 done. 100% Updating slots done. 100% Installing done. idle Installing ` + "`/app/tsgrain-update-raspberrypi3.raucb` succeeded" const outputFailure = `installing 0% Installing 0% Determining slot states 20% Determining slot states done. 20% Checking bundle 40% Checking bundle failed. 100% Installing failed. LastError: Failed to check bundle identifier: Invalid identifier. ` + `Did you pass a valid RAUC bundle? idle Installing ` + "/app/demo` failed" const statusJson = `{"compatible":"TSGRain","variant":"dev","booted":"A",` + `"boot_primary":"rootfs.0","slots":[{"rootfs.1":{"class":"rootfs",` + `"device":"/dev/mmcblk0p3","type":"ext4","bootname":"B","state":"inactive",` + `"parent":null,"mountpoint":null,"boot_status":"good"}},{"rootfs.0":` + `{"class":"rootfs","device":"/dev/mmcblk0p2","type":"ext4","bootname":"A",` + `"state":"booted","parent":null,"mountpoint":"/","boot_status":"good"}}]}` func printLinesWithDelay(lines string) { for _, line := range strings.Split(lines, "\n") { fmt.Println(line) time.Sleep(500 * time.Millisecond) } } func main() { arg := "" if len(os.Args) > 1 { arg = os.Args[1] } switch arg { case "fail": printLinesWithDelay(outputFailure) case "install": printLinesWithDelay(outputSuccess) case "status": fmt.Println(statusJson) default: os.Exit(1) } }