diff --git a/server/ghostrunner-server b/server/ghostrunner-server index 53c2120..8d09835 100755 Binary files a/server/ghostrunner-server and b/server/ghostrunner-server differ diff --git a/server/src/main.go b/server/src/main.go index 5c36a78..bae8bf4 100644 --- a/server/src/main.go +++ b/server/src/main.go @@ -31,7 +31,15 @@ func main() { log.Println(utilities.InfoTag, "Letting TimeKeeper take over...") log.Println(utilities.InfoTag, fmt.Sprintf("Interval set at: %d seconds.", cfg.Interval)) - wrapper.PyListOnline(cfg.PyVenvName) + onDevices, err := wrapper.PyListOnline(cfg.PyVenvName) + if err != nil { + log.Println(utilities.ErrTag, err) + } + + for index, device := range onDevices.OnlineDevices { + log.Println(index, device) + } + log.Println(len(onDevices.OnlineDevices)) timekeeper.KeepTime(cfg.Interval) } diff --git a/server/src/modules/wrapper/python.go b/server/src/modules/wrapper/python.go index 9839b61..dc84f05 100644 --- a/server/src/modules/wrapper/python.go +++ b/server/src/modules/wrapper/python.go @@ -4,28 +4,28 @@ import ( "encoding/json" "fmt" "ghostrunner-server/modules/utilities" - "log" "os" "os/exec" ) -func PyListOnline(venvName string) { - pythonBin := fmt.Sprintf("./../runner/%s/bin/python", venvName) - cmd := exec.Command(pythonBin, "./../runner/runner.py", "-lo") +const ( + pyFile = "./../runner/runner.py" +) - data, err := cmd.CombinedOutput() +func PyListOnline(venvName string) (utilities.PyOnlineDevices, error) { + pyBin := fmt.Sprintf("./../runner/%s/bin/python", venvName) + cmd := exec.Command(pyBin, pyFile, "-lo") + + rawData, err := cmd.CombinedOutput() if err != nil { - log.Println(utilities.ErrTag, err, data) cwd, _ := os.Getwd() - log.Println("Working directory:", cwd) - return + return utilities.PyOnlineDevices{}, fmt.Errorf("python execution failed, working directory: %s", cwd) } - var status utilities.PyOnlineDevices - if err := json.Unmarshal(data, &status); err != nil { - fmt.Println("Error unmarshaling:", err) - return + var data utilities.PyOnlineDevices + if err := json.Unmarshal(rawData, &data); err != nil { + return utilities.PyOnlineDevices{}, fmt.Errorf("error unmarshaling: %v", err) } - fmt.Printf("Parsed Struct: %+v\n", status) + return data, nil }