feat(remove.go): removes bin wrappers
This commit is contained in:
parent
2d5a992404
commit
2b13ec2d84
1 changed files with 50 additions and 1 deletions
51
remove.go
51
remove.go
|
@ -1,6 +1,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
|
@ -27,10 +28,24 @@ func remove(conn net.Conn, instance string, program string, keep_data bool) erro
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if exists, err := path_exists(package_path); !exists || err != nil {
|
info_path, err := filepath.Abs(filepath.Join(package_path, "boundaries.json"))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if exists, err := path_exists(info_path); !exists || err != nil {
|
||||||
return errors.New("package not found")
|
return errors.New("package not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
infofile_content, err := os.ReadFile(info_path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
var info map[string]interface{}
|
||||||
|
err = json.Unmarshal(infofile_content, &info)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
err = os.RemoveAll(package_path)
|
err = os.RemoveAll(package_path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -51,5 +66,39 @@ func remove(conn net.Conn, instance string, program string, keep_data bool) erro
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bin_files, has := info["bin"]
|
||||||
|
if has {
|
||||||
|
switch bin_files.(type) {
|
||||||
|
case string:
|
||||||
|
err = remove_bin(instance, bin_files.(string))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
case map[string]interface{}:
|
||||||
|
for _, path := range bin_files.(map[string]interface{}) {
|
||||||
|
err = remove_bin(instance, path.(string))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return errors.New("unknown type for bin")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func remove_bin(instance string, path string) error {
|
||||||
|
bin_path, err := filepath.Abs(filepath.Join(instance, "exec", "bin", path))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if exists, err := path_exists(bin_path); exists && err == nil {
|
||||||
|
err = os.Remove(bin_path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue