package cmd import ( "pcgamedb/log" "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", Short: "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) }