51 lines
1.4 KiB
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{}})
|
|
}
|