How to use GetInstallDir method of plugin Package

Best Gauge code snippet using plugin.GetInstallDir

pluginList.go

Source:pluginList.go Github

copy

Full Screen

...75 if len(strSlice) > 1 {76 renameAs = strSlice[1]77 }78 // Load first from cache, then special cases (e2e/systemd-logs), then local file.79 if p.GetInstallDir() != "" {80 handled, err := p.loadPluginsFromInstalled(str, renameAs)81 if handled {82 if err != nil {83 return errors.Wrapf(err, "unable to load plugin %v from installed plugins", str)84 }85 return nil86 }87 }88 switch str {89 case pluginE2E:90 p.DynamicPlugins = append(p.DynamicPlugins, str)91 if renameAs != "" {92 return fmt.Errorf("Cannot use @ renaming of plugins not loaded from file or URL")93 }94 case pluginSystemdLogs:95 p.DynamicPlugins = append(p.DynamicPlugins, str)96 if renameAs != "" {97 return fmt.Errorf("Cannot use @ renaming of plugins not loaded from file or URL")98 }99 default:100 if isURL(str) {101 return p.loadSinglePluginFromURL(str, renameAs)102 }103 return p.loadPluginsFromFilesystem(str, renameAs)104 }105 return nil106}107func isURL(s string) bool {108 u, err := url.Parse(s)109 return err == nil && u.Scheme != "" && u.Host != ""110}111func (p *pluginList) loadPluginsFromInstalled(str, renameAs string) (handled bool, returnErr error) {112 // If empty, disable cache instead of err.113 if len(p.GetInstallDir()) == 0 {114 return false, nil115 }116 m, err := loadPlugin(p.InstallDir, filenameFromArg(str, ".yaml"))117 if isNotExist(err) {118 return false, err119 }120 if err != nil {121 return true, err122 }123 if len(renameAs) > 0 {124 m.SonobuoyConfig.PluginName = renameAs125 }126 p.StaticPlugins = append(p.StaticPlugins, m)127 return true, nil128}129func (p *pluginList) loadPluginsFromFilesystem(str, renameAs string) error {130 finfo, err := os.Stat(str)131 if err != nil {132 return errors.Wrapf(err, "unable to stat %q", str)133 }134 if finfo.IsDir() {135 if len(renameAs) > 0 {136 return fmt.Errorf("plugin renaming via @ is not valid if targeting a directory")137 }138 return p.loadPluginsDir(str)139 }140 return p.loadSinglePluginFromFile(str, renameAs)141}142// loadPluginsDir loads every plugin in the given directory. It does not traverse recursively143// into the directory. A plugin must have the '.yaml' extension to be considered.144// It returns the first error encountered and stops processing.145func (p *pluginList) loadPluginsDir(dirpath string) error {146 files, err := ioutil.ReadDir(dirpath)147 if err != nil {148 return errors.Wrapf(err, "failed to read directory %q", dirpath)149 }150 for _, file := range files {151 if !file.IsDir() && strings.HasSuffix(file.Name(), fileExtensionYAML) {152 if err := p.loadSinglePluginFromFile(filepath.Join(dirpath, file.Name()), ""); err != nil {153 return errors.Wrapf(err, "failed to load plugin in file %q", file.Name())154 }155 }156 }157 return nil158}159// loadSinglePluginFromURL loads a single plugin located at the given path.160func (p *pluginList) loadSinglePluginFromURL(url, renameAs string) error {161 c := http.Client{162 Timeout: 10 * time.Second,163 }164 resp, err := c.Get(url)165 if err != nil {166 return errors.Wrapf(err, "unable to GET URL %q", url)167 }168 if resp.StatusCode > 399 {169 return fmt.Errorf("unexpected HTTP response code %v", resp.StatusCode)170 }171 return errors.Wrapf(p.loadSinglePlugin(resp.Body, renameAs), "loading plugin from URL %q", url)172}173// loadSinglePluginFromFile loads a single plugin located at the given path.174func (p *pluginList) loadSinglePluginFromFile(filepath, renameAs string) error {175 f, err := os.Open(filepath)176 if err != nil {177 return errors.Wrapf(err, "unable to read file %q", filepath)178 }179 return errors.Wrapf(p.loadSinglePlugin(f, renameAs), "loading plugin from file %q", filepath)180}181// loadSinglePlugin reads the data from the reader and loads the plugin.182func (p *pluginList) loadSinglePlugin(r io.ReadCloser, renameAs string) error {183 defer r.Close()184 b, err := ioutil.ReadAll(r)185 if err != nil {186 return errors.Wrap(err, "failed to read data for plugin")187 }188 newPlugin, err := loadManifest(b)189 if err != nil {190 return errors.Wrap(err, "failed to load plugin")191 }192 if len(renameAs) > 0 {193 newPlugin.SonobuoyConfig.PluginName = renameAs194 }195 p.StaticPlugins = append(p.StaticPlugins, newPlugin)196 return nil197}198func loadManifest(bytes []byte) (*manifest.Manifest, error) {199 var def manifest.Manifest200 err := kuberuntime.DecodeInto(manifest.Decoder, bytes, &def)201 return &def, errors.Wrap(err, "couldn't decode yaml for plugin definition")202}203// isNotExist returns true if the cause of the error was that the plugin did not exist.204func isNotExist(e error) bool {205 _, ok := errors.Cause(e).(*pluginNotFoundError)206 return ok207}208// GetInstallDir should be used instead of referencing InstallDir directly. It allows209// for lazy lookup of the cache location.210func (p *pluginList) GetInstallDir() string {211 if p.initInstallDir {212 return p.InstallDir213 }214 if !features.Enabled(features.PluginInstallation) {215 p.InstallDir = ""216 } else {217 p.InstallDir = getPluginCacheLocation()218 }219 p.initInstallDir = true220 return p.InstallDir221}...

Full Screen

Full Screen

plugin.go

Source:plugin.go Github

copy

Full Screen

...61 }62 config.Logger.Println("Updating plugins file")63 return os.WriteFile(configFile, mPlugins, 0755)64}65// GetInstallDir Returns this plugin's installation directory.66func (p Plugin) GetInstallDir(config *config.Config) string {67 if p.Opt {68 return filepath.Join(config.PluginOptDir, p.Name)69 } else {70 return filepath.Join(config.PluginStartDir, p.Name)71 }72}73// GitClone Clone the provided Git url to the indicated dest directory.74func gitClone(url string, branch string, dest string) error {75 gitExe, err := exec.LookPath("git")76 if err != nil {77 return err78 }79 args := []string{"clone", "--depth", "1", "--recurse-submodules", "--shallow-submodules"}80 if branch != "" {81 args = append(args, "--branch")82 args = append(args, branch)83 }84 args = append(args, url)85 args = append(args, dest)86 cmd := exec.Command(gitExe, args...)87 return cmd.Run()88}89// Install Installs this plugin to the appropriate directory.90func (p Plugin) Install(config *config.Config) (bool, error) {91 file, installed := fs.FileExists(p.GetInstallDir(config))92 if installed {93 return false, nil94 }95 return true, gitClone(p.Url, p.Branch, file)96}97func (p Plugin) Remove(config *config.Config) error {98 file, installed := fs.FileExists(p.GetInstallDir(config))99 if !installed {100 return fmt.Errorf("Plugin is not installed: %s", p.Name)101 }102 return os.RemoveAll(file)103}104func (p Plugin) ExecCmd() error {105 return exec.Command("sh", "-c", p.RunCmd).Run()106}...

Full Screen

Full Screen

GetInstallDir

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 p, err := plugin.Open("plugin.so")4 if err != nil {5 fmt.Println(err)6 }7 f, err := p.Lookup("GetInstallDir")8 if err != nil {9 fmt.Println(err)10 }11 g := f.(func() string)12 fmt.Println(g())13}

Full Screen

Full Screen

GetInstallDir

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 p, err := plugin.Open("plugin.so")4 if err != nil {5 panic(err)6 }7 s, err := p.Lookup("GetInstallDir")8 if err != nil {9 panic(err)10 }11 f := s.(func() string)12 fmt.Println(f())13}

Full Screen

Full Screen

GetInstallDir

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 p, err := plugin.Open("plugin.so")4 if err != nil {5 fmt.Println(err)6 }7 symPlugin, err := p.Lookup("Plugin")8 if err != nil {9 fmt.Println(err)10 }11 plugin, ok := symPlugin.(func() string)12 if !ok {13 fmt.Println("unexpected type from module symbol")14 }15 fmt.Println(plugin())16}17import (18func main() {19 p, err := plugin.Open("plugin.so")20 if err != nil {21 fmt.Println(err)22 }23 symPlugin, err := p.Lookup("Plugin")24 if err != nil {25 fmt.Println(err)26 }27 plugin, ok := symPlugin.(func() string)28 if !ok {29 fmt.Println("unexpected type from module symbol")30 }31 fmt.Println(plugin())32}33import (34func main() {35 p, err := plugin.Open("plugin.so")36 if err != nil {37 fmt.Println(err)38 }39 symPlugin, err := p.Lookup("Plugin")40 if err != nil {41 fmt.Println(err)42 }43 plugin, ok := symPlugin.(func() string)44 if !ok {45 fmt.Println("unexpected type from module symbol")46 }47 fmt.Println(plugin())48}

Full Screen

Full Screen

GetInstallDir

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 var args struct {4 }5 arg.MustParse(&args)6 plugin := require.Require(args.Plugin)7 fmt.Println(plugin.GetInstallDir())8}9import (10func main() {11 var args struct {12 }13 arg.MustParse(&args)14 plugin := require.Require(args.Plugin)15 fmt.Println(plugin.GetInstallDir())16}17import (18func main() {19 var args struct {20 }21 arg.MustParse(&args)22 plugin := require.Require(args.Plugin)23 fmt.Println(plugin.GetInstallDir())24}25import (26func main() {27 var args struct {28 }29 arg.MustParse(&args)30 plugin := require.Require(args.Plugin)31 fmt.Println(plugin.GetInstallDir())32}33import (34func main() {35 var args struct {36 }37 arg.MustParse(&args)38 plugin := require.Require(args.Plugin)39 fmt.Println(plugin.GetInstallDir())40}41import (42func main() {

Full Screen

Full Screen

GetInstallDir

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 fmt.Println(GoPlugin.GetInstallDir())4}5import (6func main() {7 fmt.Println(GoPlugin.GetInstallDir())8}9import (10func main() {11 fmt.Println(GoPlugin.GetInstallDir())12}13import (14func main() {15 fmt.Println(GoPlugin2.GetInstallDir())16}17main.main()18import (19func main() {20 fmt.Println(GoPlugin.GetInstallDir())21}22import (

Full Screen

Full Screen

GetInstallDir

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 p := plugin.NewPlugin()4 fmt.Println(p.GetInstallDir())5}6import (7func main() {8 p := plugin.NewPlugin()9 fmt.Println(p.GetInstallDir())10}

Full Screen

Full Screen

GetInstallDir

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 plugin := GoPlugin.GoPlugin{}4 fmt.Println(plugin.GetInstallDir())5}6import (7func main() {8 plugin := GoPlugin.GoPlugin{}9 fmt.Println(plugin.GetInstallDir())10}11import (12func main() {13 plugin := GoPlugin.GoPlugin{}14 fmt.Println(plugin.GetInstallDir())15}16import (17func main() {18 plugin := GoPlugin.GoPlugin{}19 fmt.Println(plugin.GetInstallDir())20}21import (22func main() {23 plugin := GoPlugin.GoPlugin{}24 fmt.Println(plugin.GetInstallDir())25}26import (27func main() {28 plugin := GoPlugin.GoPlugin{}29 fmt.Println(plugin.GetInstallDir())30}31import (32func main() {33 plugin := GoPlugin.GoPlugin{}34 fmt.Println(plugin.GetInstallDir())35}36import (37func main() {

Full Screen

Full Screen

GetInstallDir

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 plugin := plugin.NewPlugin("C:\\Users\\ashish\\go\\src\\github.com\\ashishkumarsingh\\go-plugin\\plugins\\plugin1\\bin\\plugin1.dll")4 if !plugin.IsLoaded() {5 plugin.Load()6 }7 installDir, err := plugin.Call("GetInstallDir", "1")8 if err != nil {9 fmt.Println(err)10 }11 fmt.Println(installDir)12}13import (14func main() {15 plugin := plugin.NewPlugin("C:\\Users\\ashish\\go\\src\\github.com\\ashishkumarsingh\\go-plugin\\plugins\\plugin2\\bin\\plugin2.dll")16 if !plugin.IsLoaded() {17 plugin.Load()18 }19 installDir, err := plugin.Call("GetInstallDir", "2")20 if err != nil {21 fmt.Println(err)22 }23 fmt.Println(installDir)24}25import (26func main() {27 plugin := plugin.NewPlugin("C:\\Users\\ashish\\go\\src\\github.com\\ashishkumarsingh\\go-plugin\\plugins\\plugin3\\bin\\plugin3.dll")28 if !plugin.IsLoaded() {29 plugin.Load()30 }31 installDir, err := plugin.Call("GetInstallDir", "3")

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful