Implemented a package manager to remove plugins

This commit is contained in:
2021-10-09 18:03:04 +04:00
parent fc5e834552
commit 9f304d26c1
4 changed files with 57 additions and 2 deletions

View File

@@ -279,6 +279,15 @@ var CliAction = func(ctx *cli.Context) error {
}
}
if RemovePlugin != "" {
err := plugin.DeletePlugin(RemovePlugin)
if err != nil {
fmt.Println(err)
} else {
fmt.Println("Success")
}
}
return nil

View File

@@ -32,8 +32,9 @@ var (
// -- REMOVE ON REGULAR RELEASE --
Generate string
Modulename string
PullPlugin string
//--------------------------------
PullPlugin string
RemovePlugin string
)
var AppConfigFlags = []cli.Flag{
@@ -217,4 +218,11 @@ var AppConfigFlags = []cli.Flag{
EnvVars: []string{"PULLPLUGIN"},
Destination: &PullPlugin,
},
&cli.StringFlag{
Name: "RemovePlugin",
Aliases: []string{"rp"},
Usage: "Removes plugin",
EnvVars: []string{"REMOVEPLUGIN"},
Destination: &RemovePlugin,
},
}

View File

@@ -3,8 +3,8 @@ package plugin
import (
"git.sr.ht/~akilan1999/p2p-rendering-computation/config"
"github.com/go-git/go-git/v5"
"os"
"net/url"
"os"
"strings"
)
@@ -39,5 +39,25 @@ func DownloadPlugin(pluginurl string) error {
}
return nil
}
func DeletePlugin(pluginname string) error {
config, err := config.ConfigInit()
if err != nil {
return err
}
plugin, err := SearchPlugin(pluginname)
if err != nil {
return err
}
// Delete the directory holding the plugin
err = os.RemoveAll(config.PluginPath + "/" + plugin.FolderName)
if err != nil {
return err
}
return nil
}

View File

@@ -93,6 +93,24 @@ func DetectPlugins()(*Plugins,error){
return plugins,nil
}
// SearchPlugin Detects plugin information based on the
// name provided on the parameter
func SearchPlugin(pluginname string) (*Plugin,error) {
plugins, err := DetectPlugins()
if err != nil {
return nil, err
}
// loop ot find the plugin name that matches
for _, plugin := range plugins.PluginsDetected {
if pluginname == plugin.FolderName {
return plugin, nil
}
}
return nil, errors.New("plugin not detected")
}
// RunPlugin Executes plugins based on the plugin name provided
func RunPlugin(pluginName string ,IPAddresses []*ExecuteIP) (*Plugin,error) {
plugins, err := DetectPlugins()