|
@@ -2,6 +2,7 @@ package main
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
+ "log"
|
|
|
"net/http"
|
|
|
"os"
|
|
|
"os/exec"
|
|
@@ -17,11 +18,12 @@ import (
|
|
|
*/
|
|
|
|
|
|
const (
|
|
|
- launcherVersion = "1.0"
|
|
|
+ launcherVersion = "1.0"
|
|
|
+ restoreRetryCount = 3 //The number of retry before restore old version, if not working after restoreRetryCount + 1 launcher will exit
|
|
|
)
|
|
|
|
|
|
var (
|
|
|
- arozosRunning bool = false
|
|
|
+ norestart bool = false
|
|
|
)
|
|
|
|
|
|
func main() {
|
|
@@ -33,6 +35,17 @@ func main() {
|
|
|
//Check if updates exists. If yes, overwrite it
|
|
|
updateIfExists(binaryName)
|
|
|
|
|
|
+ //Check launch paramter for norestart
|
|
|
+ for _, arg := range os.Args[1:] {
|
|
|
+ if arg == "-h" || arg == "-help" {
|
|
|
+ //help argument, do not restart
|
|
|
+ norestart = true
|
|
|
+ } else if arg == "-version" || arg == "-v" {
|
|
|
+ //version argument, no restart
|
|
|
+ norestart = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//Register the binary start path
|
|
|
cmd := exec.Command(binaryName, os.Args[1:]...)
|
|
|
cmd.Stdout = os.Stdout
|
|
@@ -54,20 +67,28 @@ func main() {
|
|
|
startTime := time.Now().Unix()
|
|
|
cmd.Run()
|
|
|
endTime := time.Now().Unix()
|
|
|
+
|
|
|
+ if norestart {
|
|
|
+ return
|
|
|
+ }
|
|
|
if endTime-startTime < 3 {
|
|
|
//Less than 3 seconds, shd be crashed. Add to retry counter
|
|
|
fmt.Println("[LAUNCHER] ArozOS Crashed. Restarting in 3 seconds... ")
|
|
|
retryCounter++
|
|
|
} else {
|
|
|
fmt.Println("[LAUNCHER] ArozOS Exited. Restarting in 3 seconds... ")
|
|
|
+ retryCounter = 0
|
|
|
}
|
|
|
|
|
|
time.Sleep(3 * time.Second)
|
|
|
|
|
|
- if retryCounter > 3 {
|
|
|
+ if retryCounter > restoreRetryCount+1 {
|
|
|
+ //Fail to start. Exit program
|
|
|
+ log.Fatal("Unable to start ArozOS. Exiting to OS")
|
|
|
+ return
|
|
|
+ } else if retryCounter > restoreRetryCount {
|
|
|
//Restore from old version of the binary
|
|
|
restoreOldArozOS()
|
|
|
- retryCounter = 0
|
|
|
} else {
|
|
|
updateIfExists(binaryName)
|
|
|
}
|