75 lines
1.8 KiB
Go
75 lines
1.8 KiB
Go
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)
|
|
}
|
|
}
|