SEBRAUC/src/fixtures/rauc_mock/main.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)
}
}