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
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net"
|
||||
"os"
|
||||
|
@ -27,10 +28,24 @@ func remove(conn net.Conn, instance string, program string, keep_data bool) erro
|
|||
if err != nil {
|
||||
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")
|
||||
}
|
||||
|
||||
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)
|
||||
if err != nil {
|
||||
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
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue