diff --git a/.gitignore b/.gitignore index 95ced305..8e19fb4b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,6 @@ # the binary nginx-prometheus-exporter dist/ + +completions/ +manpages/ diff --git a/.goreleaser.yml b/.goreleaser.yml index 56e3206a..33cd5103 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,3 +1,8 @@ +before: + hooks: + - ./scripts/completions.sh + - ./scripts/manpages.sh + builds: - env: - CGO_ENABLED=0 @@ -38,6 +43,11 @@ archives: - format_overrides: - goos: windows format: zip + files: + - README.md + - LICENSE.md + - completions/* + - manpages/* sboms: - artifacts: archive @@ -53,11 +63,13 @@ brews: homepage: https://www.nginx.com/ description: NGINX Prometheus Exporter for NGINX and NGINX Plus license: Apache-2.0 - install: | - bin.install "nginx-prometheus-exporter" commit_author: name: nginx-bot email: integrations@nginx.com + extra_install: |- + bash_completion.install "completions/nginx-prometheus-exporter.bash" => "nginx-prometheus-exporter" + zsh_completion.install "completions/nginx-prometheus-exporter.zsh" => "_nginx-prometheus-exporter" + man1.install "manpages/nginx-prometheus-exporter.1.gz" signs: - cmd: cosign @@ -99,4 +111,5 @@ snapcrafts: nginx-prometheus-exporter: command: nginx-prometheus-exporter plugs: ["network", "network-bind"] + completer: completions/nginx-prometheus-exporter.bash disable: "{{ if .IsSnapshot }}true{{ end }}" diff --git a/exporter.go b/exporter.go index e6297655..1ed3d8e4 100644 --- a/exporter.go +++ b/exporter.go @@ -85,14 +85,14 @@ var ( webConfig = kingpinflag.AddFlags(kingpin.CommandLine, ":9113") metricsPath = kingpin.Flag("web.telemetry-path", "Path under which to expose metrics.").Default("/metrics").Envar("TELEMETRY_PATH").String() nginxPlus = kingpin.Flag("nginx.plus", "Start the exporter for NGINX Plus. By default, the exporter is started for NGINX.").Default("false").Envar("NGINX_PLUS").Bool() - scrapeURIs = kingpin.Flag("nginx.scrape-uri", "A URI or unix domain socket path for scraping NGINX or NGINX Plus metrics. For NGINX, the stub_status page must be available through the URI. For NGINX Plus -- the API. Repeatable for multiple URIs.").Default("http://127.0.0.1:8080/stub_status").Strings() + scrapeURIs = kingpin.Flag("nginx.scrape-uri", "A URI or unix domain socket path for scraping NGINX or NGINX Plus metrics. For NGINX, the stub_status page must be available through the URI. For NGINX Plus -- the API. Repeatable for multiple URIs.").Default("http://127.0.0.1:8080/stub_status").HintOptions("http://127.0.0.1:8080/stub_status", "http://127.0.0.1:8080/api").Strings() sslVerify = kingpin.Flag("nginx.ssl-verify", "Perform SSL certificate verification.").Default("false").Envar("SSL_VERIFY").Bool() sslCaCert = kingpin.Flag("nginx.ssl-ca-cert", "Path to the PEM encoded CA certificate file used to validate the servers SSL certificate.").Default("").Envar("SSL_CA_CERT").String() sslClientCert = kingpin.Flag("nginx.ssl-client-cert", "Path to the PEM encoded client certificate file to use when connecting to the server.").Default("").Envar("SSL_CLIENT_CERT").String() sslClientKey = kingpin.Flag("nginx.ssl-client-key", "Path to the PEM encoded client certificate key file to use when connecting to the server.").Default("").Envar("SSL_CLIENT_KEY").String() // Custom command-line flags - timeout = createPositiveDurationFlag(kingpin.Flag("nginx.timeout", "A timeout for scraping metrics from NGINX or NGINX Plus.").Default("5s").Envar("TIMEOUT")) + timeout = createPositiveDurationFlag(kingpin.Flag("nginx.timeout", "A timeout for scraping metrics from NGINX or NGINX Plus.").Default("5s").Envar("TIMEOUT").HintOptions("5s", "10s", "30s", "1m", "5m")) ) const exporterName = "nginx_exporter" diff --git a/scripts/completions.sh b/scripts/completions.sh new file mode 100755 index 00000000..07958c2a --- /dev/null +++ b/scripts/completions.sh @@ -0,0 +1,7 @@ +#!/bin/sh +set -e +rm -rf completions +mkdir completions +for shell in bash zsh; do + go run . --completion-script-$shell >completions/nginx-prometheus-exporter.$shell +done diff --git a/scripts/manpages.sh b/scripts/manpages.sh new file mode 100755 index 00000000..f9b06f70 --- /dev/null +++ b/scripts/manpages.sh @@ -0,0 +1,5 @@ +#!/bin/sh +set -e +rm -rf manpages +mkdir manpages +go run . --help-man | gzip -c -9 >manpages/nginx-prometheus-exporter.1.gz