44 lines
952 B
Go
44 lines
952 B
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"code.icb4dc0.de/buildr/buildr/internal/slices"
|
|
"code.icb4dc0.de/buildr/buildr/modules"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func ModulesCommand(
|
|
initializer LevelInitializer,
|
|
registryAcc TypeRegistryAccessor,
|
|
manCmder ManCommander,
|
|
moduleCmder BootstrapModuleCommander,
|
|
) *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "modules",
|
|
Aliases: []string{"mod", "mods"},
|
|
Short: "Interact with modules",
|
|
SilenceUsage: true,
|
|
SilenceErrors: true,
|
|
}
|
|
|
|
cmd.AddCommand(
|
|
ModulesListCommand(initializer, registryAcc, os.Stdout),
|
|
ManCmd(manCmder, initializer, registryAcc),
|
|
NewCmd(
|
|
slices.Map(modules.Categories(), func(c modules.Category) *cobra.Command {
|
|
return BootstrapModuleCmd(
|
|
c,
|
|
moduleCmder,
|
|
ModulesArgsProviderFor(initializer, registryAcc, c),
|
|
WithShort(fmt.Sprintf("Bootstrap %s module", modules.CategoryName(c))),
|
|
)
|
|
})...,
|
|
),
|
|
)
|
|
|
|
return cmd
|
|
}
|