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 }