Skip to content

Commit d065057

Browse files
committed
fix updater logic
1 parent 9f1fa26 commit d065057

1 file changed

Lines changed: 101 additions & 94 deletions

File tree

backend/cmd/main.go

Lines changed: 101 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -86,21 +86,7 @@ var playbackFile = flag.String("playback", "", "")
8686
var currentVersion string
8787

8888
func main() {
89-
90-
versionFile := "VERSION.txt"
91-
versionData, err := os.ReadFile(versionFile)
92-
if err != nil {
93-
fmt.Fprintf(os.Stderr, "Error reading version file (%s): %v\n", versionFile, err)
94-
95-
}
96-
currentVersion = strings.TrimSpace(string(versionData))
97-
98-
versionFlag := flag.Bool("version", false, "Show the backend version")
99-
flag.Parse()
100-
if *versionFlag {
101-
fmt.Println("Hyperloop UPV Backend Version:", currentVersion)
102-
os.Exit(0)
103-
}
89+
update()
10490

10591
traceFile := initTrace(*traceLevel, *traceFile)
10692
defer traceFile.Close()
@@ -123,85 +109,6 @@ func main() {
123109

124110
config := getConfig("./config.toml")
125111

126-
execPath, err := os.Executable()
127-
if err != nil {
128-
fmt.Fprintf(os.Stderr, "Error getting executable path: %v\n", err)
129-
os.Exit(1)
130-
}
131-
execDir := filepath.Dir(execPath)
132-
133-
latestVersionStr, latestErr := getLatestVersionFromGitHub()
134-
backendPath := filepath.Join(execDir, "..", "..", "backend")
135-
_, statErr := os.Stat(backendPath)
136-
backendExists := statErr == nil
137-
138-
if backendExists {
139-
fmt.Println("Backend folder detected.")
140-
fmt.Print("Do you want to update? (y/n): ")
141-
var response string
142-
fmt.Scanln(&response)
143-
if strings.ToLower(response) == "y" {
144-
fmt.Println("Launching updater to update the backend...")
145-
updaterPath := filepath.Join(execDir, "..", "..", "updater")
146-
cmd := exec.Command("go", "build", "-o", filepath.Join(updaterPath, "updater.exe"), updaterPath)
147-
cmd.Stdout = os.Stdout
148-
cmd.Stderr = os.Stderr
149-
if err := cmd.Run(); err != nil {
150-
fmt.Fprintf(os.Stderr, "Error building updater: %v\n", err)
151-
os.Exit(1)
152-
}
153-
updaterExe := filepath.Join(updaterPath, "updater.exe")
154-
cmd = exec.Command(updaterExe)
155-
cmd.Dir = updaterPath
156-
cmd.Stdout = os.Stdout
157-
cmd.Stderr = os.Stderr
158-
if err := cmd.Run(); err != nil {
159-
fmt.Fprintf(os.Stderr, "Error launching updater: %v\n", err)
160-
os.Exit(1)
161-
}
162-
os.Exit(0)
163-
} else {
164-
fmt.Println("Skipping update. Proceeding with the current version.")
165-
}
166-
} else {
167-
// Solo updatear si se tienen ambas versiones y latest > current
168-
current, currErr := version.NewVersion(currentVersion)
169-
latest, lastErr := version.NewVersion(latestVersionStr)
170-
if currErr != nil || lastErr != nil || latestErr != nil {
171-
fmt.Println("Warning: Could not determine versions. Skipping update. Proceeding with the current version:", currentVersion)
172-
} else if latest.GreaterThan(current) {
173-
fmt.Printf("There is a new version available: %s (current version: %s)\n", latest, current)
174-
fmt.Print("Do you want to update? (y/n): ")
175-
var response string
176-
fmt.Scanln(&response)
177-
if strings.ToLower(response) == "y" {
178-
fmt.Println("Launching updater to update the backend...")
179-
updaterExe := filepath.Join(execDir, "updater")
180-
if runtime.GOOS == "windows" {
181-
updaterExe += ".exe"
182-
}
183-
if _, err := os.Stat(updaterExe); err == nil {
184-
cmd := exec.Command(updaterExe)
185-
cmd.Dir = execDir
186-
cmd.Stdout = os.Stdout
187-
cmd.Stderr = os.Stderr
188-
if err := cmd.Run(); err != nil {
189-
fmt.Fprintf(os.Stderr, "Error launching updater: %v\n", err)
190-
os.Exit(1)
191-
}
192-
os.Exit(0)
193-
} else {
194-
fmt.Fprintf(os.Stderr, "Updater not found: %s\n", updaterExe)
195-
fmt.Println("Skipping update. Proceeding with the current version.")
196-
}
197-
} else {
198-
fmt.Println("Skipping update. Proceeding with the current version.")
199-
}
200-
} else {
201-
fmt.Printf("You are using the latest version: %s\n", current)
202-
}
203-
}
204-
205112
// <--- ADJ --->
206113

207114
adj, err := adj_module.NewADJ(config.Adj.Branch, config.Adj.Test)
@@ -714,3 +621,103 @@ func getLatestVersionFromGitHub() (string, error) {
714621
version := strings.TrimPrefix(release.TagName, "v")
715622
return version, nil
716623
}
624+
625+
func update() {
626+
versionFile := "VERSION.txt"
627+
versionData, err := os.ReadFile(versionFile)
628+
if err == nil {
629+
currentVersion = strings.TrimSpace(string(versionData))
630+
631+
versionFlag := flag.Bool("version", false, "Show the backend version")
632+
flag.Parse()
633+
if *versionFlag {
634+
fmt.Println("Hyperloop UPV Backend Version:", currentVersion)
635+
os.Exit(0)
636+
}
637+
} else {
638+
fmt.Fprintf(os.Stderr, "Error reading version file (%s): %v\n", versionFile, err)
639+
return
640+
}
641+
642+
execPath, err := os.Executable()
643+
if err != nil {
644+
fmt.Fprintf(os.Stderr, "Error getting executable path: %v\n", err)
645+
os.Exit(1)
646+
}
647+
648+
execDir := filepath.Dir(execPath)
649+
650+
latestVersionStr, latestErr := getLatestVersionFromGitHub()
651+
backendPath := filepath.Join(execDir, "..", "..", "backend")
652+
_, statErr := os.Stat(backendPath)
653+
backendExists := statErr == nil
654+
655+
if backendExists {
656+
fmt.Println("Backend folder detected.")
657+
fmt.Print("Do you want to update? (y/n): ")
658+
var response string
659+
fmt.Scanln(&response)
660+
if strings.ToLower(response) == "y" {
661+
fmt.Println("Launching updater to update the backend...")
662+
updaterPath := filepath.Join(execDir, "..", "..", "updater")
663+
cmd := exec.Command("go", "build", "-o", filepath.Join(updaterPath, "updater.exe"), updaterPath)
664+
cmd.Stdout = os.Stdout
665+
cmd.Stderr = os.Stderr
666+
if err := cmd.Run(); err != nil {
667+
fmt.Fprintf(os.Stderr, "Error building updater: %v\n", err)
668+
os.Exit(1)
669+
}
670+
updaterExe := filepath.Join(updaterPath, "updater.exe")
671+
cmd = exec.Command(updaterExe)
672+
cmd.Dir = updaterPath
673+
cmd.Stdout = os.Stdout
674+
cmd.Stderr = os.Stderr
675+
if err := cmd.Run(); err != nil {
676+
fmt.Fprintf(os.Stderr, "Error launching updater: %v\n", err)
677+
os.Exit(1)
678+
}
679+
os.Exit(0)
680+
} else {
681+
fmt.Println("Skipping update. Proceeding with the current version.")
682+
}
683+
} else {
684+
// Solo updatear si se tienen ambas versiones y latest > current
685+
current, currErr := version.NewVersion(currentVersion)
686+
latest, lastErr := version.NewVersion(latestVersionStr)
687+
if currErr != nil || lastErr != nil || latestErr != nil {
688+
fmt.Println("Warning: Could not determine versions. Skipping update. Proceeding with the current version:", currentVersion)
689+
} else if latest.GreaterThan(current) {
690+
fmt.Printf("There is a new version available: %s (current version: %s)\n", latest, current)
691+
fmt.Print("Do you want to update? (y/n): ")
692+
var response string
693+
fmt.Scanln(&response)
694+
if strings.ToLower(response) == "y" {
695+
fmt.Println("Launching updater to update the backend...")
696+
updaterExe := filepath.Join(execDir, "updater")
697+
if runtime.GOOS == "windows" {
698+
updaterExe += ".exe"
699+
}
700+
if _, err := os.Stat(updaterExe); err == nil {
701+
cmd := exec.Command(updaterExe)
702+
cmd.Dir = execDir
703+
cmd.Stdout = os.Stdout
704+
cmd.Stderr = os.Stderr
705+
if err := cmd.Run(); err != nil {
706+
fmt.Fprintf(os.Stderr, "Error launching updater: %v\n", err)
707+
os.Exit(1)
708+
}
709+
os.Exit(0)
710+
} else {
711+
fmt.Fprintf(os.Stderr, "Updater not found: %s\n", updaterExe)
712+
fmt.Println("Skipping update. Proceeding with the current version.")
713+
}
714+
} else {
715+
fmt.Println("Skipping update. Proceeding with the current version.")
716+
}
717+
} else {
718+
fmt.Printf("You are using the latest version: %s\n", current)
719+
}
720+
}
721+
722+
return
723+
}

0 commit comments

Comments
 (0)