pcgamedb/cmd/task.go
2024-11-17 16:53:47 +08:00

41 lines
885 B
Go

package cmd
import (
"github.com/nitezs/pcgamedb/log"
"github.com/nitezs/pcgamedb/task"
"github.com/robfig/cron/v3"
"github.com/spf13/cobra"
"go.uber.org/zap"
)
type taskCommandConfig struct {
Crawl bool
CrawlCron string
}
var taskCmdCfg taskCommandConfig
var taskCmd = &cobra.Command{
Use: "task",
Long: "Start task",
Run: func(cmd *cobra.Command, args []string) {
if taskCmdCfg.Crawl {
task.Crawl(log.Logger)
c := cron.New()
_, err := c.AddFunc(taskCmdCfg.CrawlCron, func() { task.Crawl(log.Logger) })
if err != nil {
log.Logger.Error("Failed to add task", zap.Error(err))
}
c.Start()
select {}
}
},
}
func init() {
taskCmd.Flags().BoolVar(&taskCmdCfg.Crawl, "crawl", false, "enable auto crawl")
taskCmd.Flags().StringVar(&taskCmdCfg.CrawlCron, "crawl-cron", "0 */3 * * *", "crawl cron expression")
RootCmd.AddCommand(taskCmd)
}