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 }