github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/cli/commandeer.go (about)

     1  package cli
     2  
     3  import (
     4  	"context"
     5  	"github.com/bep/simplecobra"
     6  	"github.com/esnet/gdg/cli/backup"
     7  	"github.com/esnet/gdg/cli/support"
     8  	"github.com/esnet/gdg/cli/tools"
     9  	assets "github.com/esnet/gdg/config"
    10  	"log/slog"
    11  )
    12  
    13  // Execute executes a command.
    14  func Execute(defaultCfg string, args []string, options ...support.RootOption) error {
    15  	var err error
    16  	support.DefaultConfig, err = assets.GetFile(defaultCfg)
    17  	if err != nil {
    18  		slog.Warn("unable to find load default configuration", "err", err)
    19  	}
    20  	rootCmd := support.NewRootCmd(getNewRootCmd(), options...)
    21  	x, err := simplecobra.New(rootCmd)
    22  	if err != nil {
    23  		return err
    24  	}
    25  
    26  	cd, err := x.Execute(context.Background(), args)
    27  
    28  	if err != nil || len(args) == 0 {
    29  		_ = cd.CobraCommand.Help()
    30  		return err
    31  	}
    32  
    33  	return nil
    34  }
    35  
    36  func getNewRootCmd() *support.RootCommand {
    37  	return &support.RootCommand{
    38  		NameP: "gdg",
    39  		CommandEntries: []simplecobra.Commander{
    40  			newVersionCmd(),
    41  			tools.NewToolsCommand(),
    42  			backup.NewBackupCommand(),
    43  		},
    44  	}
    45  }