feat(remove.go): added removing packages

This commit is contained in:
Paul Fey 2025-02-27 18:44:53 +01:00
parent 022eb8edba
commit 0431866e7c
2 changed files with 53 additions and 2 deletions

View file

@ -16,7 +16,7 @@ func client(conn net.Conn, instance string) error {
log.Fatal(err) log.Fatal(err)
} }
log.Println("Message Received:", message) log.Println("Message Received:", message)
var objmap map[string]string var objmap map[string]interface{}
err = json.Unmarshal([]byte(message), &objmap) err = json.Unmarshal([]byte(message), &objmap)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
@ -31,6 +31,12 @@ func client(conn net.Conn, instance string) error {
log.Println(err) log.Println(err)
return err return err
} }
case "remove":
err = removeMap(conn, instance, objmap)
if err != nil {
log.Println(err)
return err
}
case "list": case "list":
err = list(conn, instance) err = list(conn, instance)
if err != nil { if err != nil {
@ -38,7 +44,7 @@ func client(conn net.Conn, instance string) error {
return err return err
} }
default: default:
err = errors.New("Unknown Command: " + val) err = errors.New("Unknown Command: " + val.(string))
log.Println(err) log.Println(err)
return err return err
} }

45
remove.go Normal file
View file

@ -0,0 +1,45 @@
package main
import (
"errors"
"net"
"os"
"path/filepath"
)
func removeMap(conn net.Conn, instance string, objmap map[string]interface{}) error {
program, has := objmap["package"]
if !has {
return errors.New("a package is required")
}
keep_data, has := objmap["keep_data"]
if !has {
keep_data = false
}
return remove(conn, instance, program.(string), keep_data.(bool))
}
func remove(conn net.Conn, instance string, program string, keep_data bool) error {
package_path, err := filepath.Abs(filepath.Join(instance, "apps", program))
if err != nil {
return err
}
if exists, err := exists(package_path); !exists || err != nil {
return errors.New("package not found")
}
err = os.RemoveAll(package_path)
if err != nil {
return err
}
var_path, err := filepath.Abs(filepath.Join(instance, "var", program))
if exists, err := exists(var_path); exists && err == nil && !keep_data {
err = os.RemoveAll(var_path)
if err != nil {
return err
}
}
return nil
}