70 lines
1.7 KiB
Go
70 lines
1.7 KiB
Go
package tasks
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"backend/modules/commands/discover"
|
|
"backend/modules/commands/store"
|
|
"backend/modules/medias"
|
|
"backend/providers/app"
|
|
"backend/providers/hashids"
|
|
"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(),
|
|
hashids.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()
|
|
if from == "" {
|
|
return errors.New("from is empty")
|
|
}
|
|
return task.RunE(from)
|
|
})
|
|
}),
|
|
),
|
|
)
|
|
}
|