49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
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
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
)
|