buildr/internal/cmd/exec_module.go
Peter 34c431790e
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
refactor: use connect-go instead of regular Google gRPC
- support binary name for plugins
- register plugins for container jobs
2023-09-12 18:43:34 +02:00

40 lines
824 B
Go

package cmd
import (
"github.com/spf13/cobra"
"code.icb4dc0.de/buildr/buildr/modules"
)
type ModuleCommandOption func(cmd *cobra.Command)
func WithShort(short string) ModuleCommandOption {
return func(cmd *cobra.Command) {
cmd.Short = short
}
}
func ExecuteModuleCommand(
category modules.Category,
cmder ModuleCommander,
argsProvider KnownTasksArgProvider,
opts ...ModuleCommandOption,
) *cobra.Command {
cmd := &cobra.Command{
Use: modules.CategoryName(category),
Args: cobra.ExactArgs(1),
SilenceUsage: true,
SilenceErrors: true,
ValidArgsFunction: argsProvider.ValidTasksArgs,
RunE: func(cmd *cobra.Command, args []string) error {
return cmder.RunModule(cmd.Context(), category, args[0])
},
}
for i := range opts {
opts[i](cmd)
}
return cmd
}