From 0842cc68ad0fd64eead4f87b9e36af2fc7713060 Mon Sep 17 00:00:00 2001 From: pauljako Date: Thu, 27 Feb 2025 17:31:30 +0100 Subject: [PATCH] feat(list.go): added list packages --- client.go | 6 ++++++ list.go | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 list.go diff --git a/client.go b/client.go index 6b3284e..026d12c 100644 --- a/client.go +++ b/client.go @@ -31,6 +31,12 @@ func client(conn net.Conn, instance string) error { log.Println(err) return err } + case "list": + err = list(conn, instance) + if err != nil { + log.Println(err) + return err + } default: err = errors.New("Unknown Command: " + val) log.Println(err) diff --git a/list.go b/list.go new file mode 100644 index 0000000..508bc3b --- /dev/null +++ b/list.go @@ -0,0 +1,62 @@ +package main + +import ( + "encoding/json" + "log" + "net" + "os" + "path/filepath" +) + +func list(conn net.Conn, instance string) error { + + package_list := make(map[string]string) + + packages_path, err := filepath.Abs(filepath.Join(instance, "apps")) + if err != nil { + return err + } + + packages, err := os.ReadDir(packages_path) + if err != nil { + return err + } + + for _, program := range packages { + if program.Type().IsDir() { + info_path, err := filepath.Abs(filepath.Join(packages_path, program.Name(), "boundaries.json")) + if err != nil { + log.Println(err) + continue + } + if exists, err := exists(info_path); exists && err == nil { + infofile_content, err := os.ReadFile(info_path) + if err != nil { + log.Println(err) + continue + } + var info map[string]interface{} + err = json.Unmarshal(infofile_content, &info) + if err != nil { + log.Println(err) + continue + } + + version, has := info["version"] + if !has { + version = "1.0" + } + package_list[program.Name()] = version.(string) + } + } + } + + data, err := json.Marshal(package_list) + if err != nil { + return err + } + + conn.Write(data) + + return nil +}