boulder/cmd/log-validator/main.go

51 lines
1.4 KiB
Go

package notmain
import (
"context"
"flag"
"github.com/letsencrypt/boulder/cmd"
"github.com/letsencrypt/boulder/log/validator"
)
type Config struct {
Files []string `validate:"min=1,dive,required"`
DebugAddr string `validate:"omitempty,hostname_port"`
Syslog cmd.SyslogConfig
OpenTelemetry cmd.OpenTelemetryConfig
}
func main() {
debugAddr := flag.String("debug-addr", "", "Debug server address override")
configFile := flag.String("config", "", "File path to the configuration file for this service")
checkFile := flag.String("check-file", "", "File path to a file to directly validate, if this argument is provided the config will not be parsed and only this file will be inspected")
flag.Parse()
if *checkFile != "" {
err := validator.ValidateFile(*checkFile)
cmd.FailOnError(err, "validation failed")
return
}
var config Config
err := cmd.ReadConfigFile(*configFile, &config)
cmd.FailOnError(err, "Reading JSON config file into config structure")
if *debugAddr != "" {
config.DebugAddr = *debugAddr
}
stats, logger, oTelShutdown := cmd.StatsAndLogging(config.Syslog, config.OpenTelemetry, config.DebugAddr)
defer oTelShutdown(context.Background())
logger.Info(cmd.VersionString())
v := validator.New(config.Files, logger, stats)
defer v.Shutdown()
cmd.WaitForSignal()
}
func init() {
cmd.RegisterCommand("log-validator", main, &cmd.ConfigValidator{Config: &Config{}})
}