package tasks import ( "backend/modules/medias" "backend/modules/tasks/discover" "backend/modules/tasks/store" "backend/providers/app" "backend/providers/postgres" "backend/providers/storage" "git.ipao.vip/rogeecn/atom" "git.ipao.vip/rogeecn/atom/container" "github.com/spf13/cobra" ) func defaultProviders(providers ...container.ProviderContainer) container.Providers { return append(container.Providers{ app.DefaultProvider(), storage.DefaultProvider(), postgres.DefaultProvider(), }, providers...) } func Command() atom.Option { return atom.Command( atom.Name("tasks"), atom.Short("run tasks"), atom.Command( atom.Name("discover"), atom.Arguments(func(cmd *cobra.Command) { cmd.Flags().String("from", "", "from path") cmd.Flags().String("to", "", "to path") }), atom.Providers(defaultProviders().With( medias.Provide, discover.Provide, )), atom.RunE(func(cmd *cobra.Command, args []string) error { return container.Container.Invoke(func(task *discover.DiscoverMedias) error { from, to := cmd.Flag("from").Value.String(), cmd.Flag("to").Value.String() return task.RunE(from, to) }) }), ), atom.Command( atom.Name("store"), atom.Providers(defaultProviders().With( medias.Provide, store.Provide, )), atom.Arguments(func(cmd *cobra.Command) { cmd.Flags().String("from", "", "from path") }), atom.RunE(func(cmd *cobra.Command, args []string) error { return container.Container.Invoke(func(task *store.StoreMedias) error { from := cmd.Flag("from").Value.String() return task.RunE(from) }) }), ), ) }