pinebook-tests/get-image/main.go

90 lines
2.0 KiB
Go

package main
import "os"
import "log"
/*
import "fmt"
import "reflect"
*/
import "git.wit.com/jcarr/shell"
func main() {
parseConfig()
if _, err := os.Stat("/home/factory"); os.IsNotExist(err) {
shell.Run("mkdir /home/factory")
}
if _, err := os.Stat("/usr/bin/dialog"); os.IsNotExist(err) {
shell.Run("apt install dialog")
}
if _, err := os.Stat("/dev/mmcblk0p2"); !os.IsNotExist(err) {
log.Println("device /dev/mmcblk0p2 exists")
} else {
log.Println("device /dev/mmcblk0p2 does not exist")
fail()
}
shell.Run("mount /dev/mmcblk0p2 /home/factory")
imagename := "factory-2019-01-20"
fullname := "/home/factory/" + imagename
// if the image does not exist, try to wget it
if _, err := os.Stat(fullname); os.IsNotExist(err) {
log.Println("filename", fullname, "does not exist")
shell.Run("cd /home/factory")
shell.Run("wget -c " + "http://fire.lab.wit.com/factory/" + imagename)
}
if _, err := os.Stat(fullname); !os.IsNotExist(err) {
log.Println("filename", fullname, "exists. dd here")
shell.Run("dd if=" + fullname + " of=/dev/mmcblk2 bs=1M status=progress oflag=sync")
succeeded()
} else {
log.Println("filename", fullname, "does not exist")
fail()
}
}
func fail () {
log.Println("")
log.Println("")
log.Println("")
log.Println("INSTALL FAILED")
log.Println("INSTALL FAILED")
log.Println("INSTALL FAILED")
log.Println("INSTALL FAILED")
log.Println("INSTALL FAILED")
log.Println("INSTALL FAILED")
log.Println("")
log.Println("")
log.Println("")
os.Exit(-1)
}
func succeeded () {
log.Println("")
log.Println("")
log.Println("")
log.Println("INSTALL SUCCEEDED")
log.Println("INSTALL SUCCEEDED")
log.Println("INSTALL SUCCEEDED")
log.Println("INSTALL SUCCEEDED")
log.Println("INSTALL SUCCEEDED")
log.Println("INSTALL SUCCEEDED")
log.Println("")
log.Println("")
log.Println("")
shell.Run("touch /tmp/wit-install-done")
shell.Run("dialog --ascii-lines --msgbox 'Flash_Image_Completed' 10 70")
shell.Run("poweroff")
os.Exit(0)
}