Files
mp-qvyun/backend/pkg/service/tasks/tasks.go
2024-12-10 10:24:31 +08:00

63 lines
1.6 KiB
Go

package tasks
import (
"backend/modules/commands/discover"
"backend/modules/commands/store"
"backend/modules/medias"
"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)
})
}),
),
)
}