package main import ( "github.com/alecthomas/kingpin/v2" ) type configuration struct { casDirectory string applicationListenAddress string metricsListenAddress string } func parseConfiguration(args []string) *configuration { config := &configuration{} app := kingpin.New("ocspcrl", "OCSP responder / CRL server (multi-CA)") app.HelpFlag.Short('h') app.Flag("cas-directory", "Path to a directory containing one subdirectory per CA. Each subdirectory must contain ca.crt, responder.crt, key.pem and crl.pem. The subdirectory name is used as the route prefix."). Envar("CAS_DIRECTORY").Required().ExistingDirVar(&config.casDirectory) app.Flag("web.listen-address", "Address for application endpoint"). Envar("WEB_LISTEN_ADDRESS").Default(":8080").StringVar(&config.applicationListenAddress) app.Flag("metrics.listen-address", "Address for metrics endpoint"). Envar("METRICS_LISTEN_ADDRESS").Default("[::1]:8081").StringVar(&config.metricsListenAddress) kingpin.MustParse(app.Parse(args)) return config }