github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/cmd/plugins.go (about)

     1  package cmd
     2  
     3  import (
     4  	"sync"
     5  
     6  	"github.com/JarrahG/buffalocli/internal/plugins"
     7  	"github.com/sirupsen/logrus"
     8  	"github.com/spf13/cobra"
     9  )
    10  
    11  var _plugs plugins.List
    12  var initPlugsOnce sync.Once
    13  
    14  func plugs() plugins.List {
    15  	initPlugsOnce.Do(func() {
    16  		var err error
    17  		_plugs, err = plugins.Available()
    18  		if err == nil {
    19  			return
    20  		}
    21  
    22  		_plugs = plugins.List{}
    23  		logrus.Errorf("error loading plugins %s", err)
    24  	})
    25  	return _plugs
    26  }
    27  
    28  func decorate(name string, cmd *cobra.Command) {
    29  	pugs := plugs()
    30  	for _, c := range pugs[name] {
    31  		// FIXME: why register all plugins as anywhere command?
    32  		//anywhereCommands = append(anywhereCommands, c.Name)
    33  		cc := plugins.Decorate(c)
    34  		cmd.AddCommand(cc)
    35  	}
    36  }