package main import ( "log/slog" "github.com/urfave/cli/v2" ) var ( cmdJob = &cli.Command{ Name: "job", Usage: "Run various jobs (e.g. data sync)", Subcommands: []*cli.Command{ { Name: "sync", Usage: "Trigger various data syncs", Subcommands: []*cli.Command{ { Name: "data", Usage: "Trigger data sync (servers, players, tribes, villages)", Flags: concatSlices(dbFlags, rmqFlags), Action: func(c *cli.Context) error { logger := loggerFromCtx(c.Context) watermillLogger := newWatermillLogger(logger) amqpConn, err := newAMQPConnectionFromFlags(c, watermillLogger) if err != nil { return err } defer func() { // watermill has its own logs, so we don't need to add any debug logs here if closeErr := amqpConn.Close(); closeErr != nil { logger.Warn("couldn't close amqp connection", slog.Any("error", err)) } }() <-amqpConn.Connected() logger.Info("data sync triggered") return nil }, }, }, }, }, } )