drive-health-metrics/flags.go
James Coleman ddafa90a02
Some checks failed
Go package / build (push) Has been cancelled
first commit
2026-06-22 17:16:34 -05:00

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)
}
}