63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
// Flags holds the command-line arguments. One-shot output (CSV / InfluxDB line
|
|
// protocol to stdout) remains the default; -server switches to the long-lived
|
|
// service that exposes the Prometheus endpoint and pushes to Influx.
|
|
type Flags struct {
|
|
ConfigPath string
|
|
|
|
// One-shot output controls (default mode).
|
|
Format string
|
|
|
|
// Service mode.
|
|
Server bool
|
|
|
|
// HTTP output overrides (service mode).
|
|
HTTPBind string
|
|
HTTPPort uint
|
|
HTTPMetricsPath string
|
|
}
|
|
|
|
// ParseFlags parses the command line into app.flags, printing the version and
|
|
// exiting when -version is supplied.
|
|
func (a *App) ParseFlags() {
|
|
a.flags = new(Flags)
|
|
flag.Usage = func() {
|
|
fmt.Printf("%s: %s.\n\nUsage:\n", serviceName, serviceDescription)
|
|
flag.PrintDefaults()
|
|
}
|
|
|
|
// Version.
|
|
var printVer bool
|
|
flag.BoolVar(&printVer, "version", false, "print version and exit")
|
|
flag.BoolVar(&printVer, "v", false, "print version and exit (shorthand)")
|
|
|
|
// Configuration path override.
|
|
usage := "load configuration from `FILE`"
|
|
flag.StringVar(&a.flags.ConfigPath, "config", "", usage)
|
|
flag.StringVar(&a.flags.ConfigPath, "c", "", usage+" (shorthand)")
|
|
|
|
// One-shot output controls.
|
|
flag.StringVar(&a.flags.Format, "format", "csv", "output format: csv | influx")
|
|
|
|
// Service mode.
|
|
flag.BoolVar(&a.flags.Server, "server", false, "run as a service: Prometheus HTTP endpoint and scheduled InfluxDB output")
|
|
|
|
// HTTP output overrides (service mode).
|
|
flag.StringVar(&a.flags.HTTPBind, "http-bind", "", "bind address for the HTTP server")
|
|
flag.UintVar(&a.flags.HTTPPort, "http-port", 0, "bind port for the HTTP server")
|
|
flag.StringVar(&a.flags.HTTPMetricsPath, "http-metrics-path", "", "path for the Prometheus metrics endpoint")
|
|
|
|
flag.Parse()
|
|
|
|
if printVer {
|
|
printVersion()
|
|
os.Exit(0)
|
|
}
|
|
}
|