From 7fda75fbcca57ff9167f242a6713c3ae8453ce80 Mon Sep 17 00:00:00 2001 From: Luca Comellini Date: Mon, 18 Dec 2023 22:28:01 -0800 Subject: [PATCH] Add completions and manpages --- .gitignore | 3 +++ .goreleaser.yml | 17 +++++++++++++++-- exporter.go | 8 ++++---- scripts/completions.sh | 7 +++++++ scripts/manpages.sh | 5 +++++ 5 files changed, 34 insertions(+), 6 deletions(-) create mode 100755 scripts/completions.sh create mode 100755 scripts/manpages.sh diff --git a/.gitignore b/.gitignore index 95ced305b..8e19fb4b4 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 56e3206aa..33cd5103f 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 e62976551..02aea0915 100644 --- a/exporter.go +++ b/exporter.go @@ -84,15 +84,15 @@ var ( // Command-line flags 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() - sslVerify = kingpin.Flag("nginx.ssl-verify", "Perform SSL certificate verification.").Default("false").Envar("SSL_VERIFY").Bool() + nginxPlus = kingpin.Flag("nginx.plus", "Start the exporter for NGINX Plus. By default, the exporter is started for NGINX.").Default("false").Envar("NGINX_PLUS").HintOptions("true", "false").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").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").HintOptions("true", "false").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 000000000..07958c2a1 --- /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 000000000..f9b06f704 --- /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