55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
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 := path_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 := path_exists(var_path); exists && err == nil && !keep_data {
|
|
err = os.RemoveAll(var_path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
desktop_path, err := filepath.Abs(filepath.Join(instance, "exec", "desktop", program+".desktop"))
|
|
if exists, err := path_exists(desktop_path); exists && err == nil {
|
|
err = os.Remove(desktop_path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|