From 19e9b39c34fa9ae8facb643d6f98c7874ecca3b4 Mon Sep 17 00:00:00 2001 From: Carl George Date: Tue, 15 Aug 2023 16:14:40 -0500 Subject: [PATCH 1/6] Remove usage of %gometa, %goprep, %gobuilddir, and %gocheck These macros are inconsistent across EPEL branches. --- caddy.spec | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/caddy.spec b/caddy.spec index 7df26e2..17350a9 100644 --- a/caddy.spec +++ b/caddy.spec @@ -1,16 +1,7 @@ -# https://github.com/caddyserver/caddy %global goipath github.com/caddyserver/caddy -%global basever 2.5.2 -#global prerel rc -#global prerelnum 3 -Version: %{basever}%{?prerel:~%{prerel}%{prerelnum}} - -%gometa -f - -%global common_description %{expand: -Caddy is the web server with automatic HTTPS.} Name: caddy +Version: 2.5.2 Release: 4%{?dist} Summary: Web server with automatic HTTPS # github.com/caddyserver/caddy ASL 2.0 @@ -50,6 +41,16 @@ Summary: Web server with automatic HTTPS License: ASL 2.0 and MIT and BSD URL: https://caddyserver.com +%if %{defined fedora} +ExclusiveArch: %{golang_arches_future} +%else +ExclusiveArch: %{golang_arches} +%endif + +%if %{undefined el8} +BuildRequires: go-rpm-macros +%endif + # see create-vendor-tarball.sh in this distgit repo Source0: caddy-%{version}-vendored.tar.gz @@ -109,23 +110,27 @@ Requires: system-logos-httpd Provides: webserver -%description %{common_description} +%description +Caddy is the web server with automatic HTTPS. %prep -%goprep -k -%autopatch -p 1 +%autosetup -p 1 +mkdir -p src/$(dirname %{goipath}) +ln -s $PWD src/%{goipath} sed -e '/mod.Version/ s/unknown/%{version}-%{release}/' -i caddy.go %build -%gobuild -o %{gobuilddir}/bin/caddy %{goipath}/cmd/caddy +export GO111MODULE=off +export GOPATH=$PWD +%gobuild -o bin/caddy %{goipath}/cmd/caddy %install # command -install -D -p -m 0755 %{gobuilddir}/bin/caddy %{buildroot}%{_bindir}/caddy +install -D -p -m 0755 bin/caddy %{buildroot}%{_bindir}/caddy # config install -D -p -m 0644 %{S:10} %{buildroot}%{_sysconfdir}/caddy/Caddyfile @@ -154,7 +159,10 @@ install -D -p -m 0644 %{S:41} %{buildroot}%{_datadir}/zsh/site-functions/_caddy %check -%gocheck +export GO111MODULE=off +export GOPATH=$PWD +cd src/%{goipath} +%gotest ./... %pre From 838a382f4fb11cf763822a82d7ce3de1d95e1263 Mon Sep 17 00:00:00 2001 From: Carl George Date: Tue, 15 Aug 2023 17:07:33 -0500 Subject: [PATCH 2/6] Update to version 2.6.4 I'm targeting this version specifically for EPEL 8, because RHEL 8 currently has golang 1.19, and 2.6.4 is the newest version of caddy that doesn't require a higher golang version. --- ...e-commands-that-can-alter-the-binary.patch | 14 +- caddy.spec | 339 ++++++++++++++---- sources | 2 +- 3 files changed, 276 insertions(+), 79 deletions(-) diff --git a/0001-Disable-commands-that-can-alter-the-binary.patch b/0001-Disable-commands-that-can-alter-the-binary.patch index 3b48ffb..c2899c9 100644 --- a/0001-Disable-commands-that-can-alter-the-binary.patch +++ b/0001-Disable-commands-that-can-alter-the-binary.patch @@ -1,4 +1,4 @@ -From 7bf03a1414b1ebc1a9ef573369fe8e7ee9956a33 Mon Sep 17 00:00:00 2001 +From 08a40c6b09cf5e649c82829724b858b385b3cd66 Mon Sep 17 00:00:00 2001 From: Carl George Date: Wed, 16 Feb 2022 11:45:03 -0600 Subject: [PATCH] Disable commands that can alter the binary @@ -8,10 +8,10 @@ Subject: [PATCH] Disable commands that can alter the binary 1 file changed, 48 deletions(-) diff --git a/cmd/commands.go b/cmd/commands.go -index 1e2c40de..cc091bce 100644 +index 9216b898..85f7bc7d 100644 --- a/cmd/commands.go +++ b/cmd/commands.go -@@ -289,54 +289,6 @@ is always printed to stdout.`, +@@ -333,54 +333,6 @@ is always printed to stdout.`, }(), }) @@ -63,9 +63,9 @@ index 1e2c40de..cc091bce 100644 - }(), - }) - - } - - // RegisterCommand registers the command cmd. + RegisterCommand(Command{ + Name: "manpage", + Func: func(fl Flags) (int, error) { -- -2.35.1 +2.41.0 diff --git a/caddy.spec b/caddy.spec index 17350a9..cbbccc0 100644 --- a/caddy.spec +++ b/caddy.spec @@ -1,44 +1,12 @@ %global goipath github.com/caddyserver/caddy Name: caddy -Version: 2.5.2 -Release: 4%{?dist} +Version: 2.6.4 +Release: 1%{?dist} Summary: Web server with automatic HTTPS -# github.com/caddyserver/caddy ASL 2.0 -# github.com/BurntSushi/toml MIT -# github.com/Masterminds/sprig/v3 MIT -# github.com/alecthomas/chroma MIT -# github.com/aryann/difflib MIT -# github.com/caddyserver/certmagic ASL 2.0 -# github.com/dustin/go-humanize MIT -# github.com/go-chi/chi MIT -# github.com/google/cel-go ASL 2.0 -# github.com/google/uuid BSD -# github.com/klauspost/compress BSD and ASL 2.0 -# github.com/klauspost/cpuid/v2 MIT -# github.com/lucas-clemente/quic-go MIT -# github.com/mholt/acmez ASL 2.0 -# github.com/prometheus/client_golang ASL 2.0 -# github.com/smallstep/certificates ASL 2.0 -# github.com/smallstep/cli ASL 2.0 -# github.com/smallstep/nosql ASL 2.0 -# github.com/smallstep/truststore ASL 2.0 -# github.com/tailscale/tscert BSD -# github.com/yuin/goldmark MIT -# github.com/yuin/goldmark-highlighting MIT -# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp ASL 2.0 -# go.opentelemetry.io/otel ASL 2.0 -# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc ASL 2.0 -# go.opentelemetry.io/otel/sdk ASL 2.0 -# go.uber.org/zap MIT -# golang.org/x/crypto BSD -# golang.org/x/net BSD -# golang.org/x/term BSD -# google.golang.org/genproto ASL 2.0 -# google.golang.org/protobuf BSD -# gopkg.in/natefinch/lumberjack.v2 MIT -# gopkg.in/yaml.v3 ASL 2.0 and MIT -License: ASL 2.0 and MIT and BSD +# main source code is Apache-2.0 +# see comments above provides tags for bundled license breakdown +License: Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND MIT AND BSD-2-Clause-Views AND ISC AND CC0-1.0 AND MPL-2.0 URL: https://caddyserver.com %if %{defined fedora} @@ -67,42 +35,265 @@ Source41: zsh-completion # downstream only patch to disable commands that can alter the binary Patch: 0001-Disable-commands-that-can-alter-the-binary.patch -# https://github.com/caddyserver/caddy/commit/b4f1a713978f44b6f26721bd4eaa355164e3e6f4 -BuildRequires: golang >= 1.17 +# https://github.com/caddyserver/caddy/commit/141872ed80d6323505e7543628c259fdae8506d3 +BuildRequires: golang >= 1.18 -Provides: bundled(golang(github.com/BurntSushi/toml)) = 1.1.0 -Provides: bundled(golang(github.com/Masterminds/sprig/v3)) = 3.2.2 -Provides: bundled(golang(github.com/alecthomas/chroma)) = 0.10.0 -Provides: bundled(golang(github.com/aryann/difflib)) -Provides: bundled(golang(github.com/caddyserver/certmagic)) = 0.16.1 -Provides: bundled(golang(github.com/dustin/go-humanize)) -Provides: bundled(golang(github.com/go-chi/chi)) = 4.1.2 -Provides: bundled(golang(github.com/google/cel-go)) = 0.11.4 +# BSD-3-Clause +Provides: bundled(golang(filippo.io/edwards25519)) = 1.0.0 +# MIT AND CC0-1.0 +Provides: bundled(golang(github.com/AndreasBriese/bbloom)) = 46b345b +# MIT +Provides: bundled(golang(github.com/BurntSushi/toml)) = 1.2.1 +# Apache-2.0 +Provides: bundled(golang(github.com/Masterminds/goutils)) = 1.1.1 +# MIT +Provides: bundled(golang(github.com/Masterminds/semver/v3)) = 3.2.0 +# MIT +Provides: bundled(golang(github.com/Masterminds/sprig/v3)) = 3.2.3 +# MIT +Provides: bundled(golang(github.com/Microsoft/go-winio)) = 0.6.0 +# MIT +Provides: bundled(golang(github.com/alecthomas/chroma/v2)) = 2.5.0 +# BSD-3-Clause +Provides: bundled(golang(github.com/antlr/antlr4/runtime/Go/antlr)) = 1.4.10 +# MIT +Provides: bundled(golang(github.com/aryann/difflib)) = ff5ff6d +# MIT +Provides: bundled(golang(github.com/beorn7/perks)) = 1.0.1 +# Apache-2.0 +Provides: bundled(golang(github.com/caddyserver/certmagic)) = 0.17.2 +# MIT +Provides: bundled(golang(github.com/cenkalti/backoff/v4)) = 4.1.2 +# MIT +Provides: bundled(golang(github.com/cespare/xxhash)) = 1.1.0 +# MIT +Provides: bundled(golang(github.com/cespare/xxhash/v2)) = 2.1.2 +# MIT +Provides: bundled(golang(github.com/chzyer/readline)) = 2972be2 +# MIT +Provides: bundled(golang(github.com/cpuguy83/go-md2man/v2)) = 2.0.2 +# ISC +Provides: bundled(golang(github.com/davecgh/go-spew)) = 1.1.1 +# Apache-2.0 +Provides: bundled(golang(github.com/dgraph-io/badger)) = 1.6.2 +# Apache-2.0 +Provides: bundled(golang(github.com/dgraph-io/badger/v2)) = 2.2007.4 +# Apache-2.0 AND MIT +Provides: bundled(golang(github.com/dgraph-io/ristretto)) = 0.1.0 +# MIT +Provides: bundled(golang(github.com/dgryski/go-farm)) = a6ae236 +# MIT +Provides: bundled(golang(github.com/dlclark/regexp2)) = 1.7.0 +# MIT +Provides: bundled(golang(github.com/dustin/go-humanize)) = 1.0.1 +# MIT +Provides: bundled(golang(github.com/felixge/httpsnoop)) = 1.0.3 +# MIT +Provides: bundled(golang(github.com/fxamacker/cbor/v2)) = 2.4.0 +# MIT +Provides: bundled(golang(github.com/go-chi/chi)) = 4.1.2+incompatible +# MIT +Provides: bundled(golang(github.com/go-kit/kit)) = 0.10.0 +# MIT +Provides: bundled(golang(github.com/go-logfmt/logfmt)) = 0.5.1 +# Apache-2.0 +Provides: bundled(golang(github.com/go-logr/logr)) = 1.2.3 +# Apache-2.0 +Provides: bundled(golang(github.com/go-logr/stdr)) = 1.2.2 +# MPL-2.0 +Provides: bundled(golang(github.com/go-sql-driver/mysql)) = 1.6.0 +# MIT +Provides: bundled(golang(github.com/go-task/slim-sprig)) = 348f09d +# Apache-2.0 +Provides: bundled(golang(github.com/golang/glog)) = 1.0.0 +# Apache-2.0 +Provides: bundled(golang(github.com/golang/mock)) = 1.6.0 +# BSD-3-Clause +Provides: bundled(golang(github.com/golang/protobuf)) = 1.5.2 +# BSD-3-Clause +Provides: bundled(golang(github.com/golang/snappy)) = 0.0.4 +# Apache-2.0 +Provides: bundled(golang(github.com/google/cel-go)) = 0.13.0 +# Apache-2.0 +Provides: bundled(golang(github.com/google/pprof)) = 94a9f03 +# BSD-3-Clause Provides: bundled(golang(github.com/google/uuid)) = 1.3.0 -Provides: bundled(golang(github.com/klauspost/compress)) = 1.15.6 -Provides: bundled(golang(github.com/klauspost/cpuid/v2)) = 2.0.13 -Provides: bundled(golang(github.com/lucas-clemente/quic-go)) = 0.28.0 -Provides: bundled(golang(github.com/mholt/acmez)) = 1.0.2 -Provides: bundled(golang(github.com/prometheus/client_golang)) = 1.12.1 -Provides: bundled(golang(github.com/smallstep/certificates)) = 0.19.0 -Provides: bundled(golang(github.com/smallstep/cli)) = 0.18.0 -Provides: bundled(golang(github.com/smallstep/nosql)) = 0.4.0 -Provides: bundled(golang(github.com/smallstep/truststore)) = 0.11.0 -Provides: bundled(golang(github.com/tailscale/tscert)) -Provides: bundled(golang(github.com/yuin/goldmark)) = 1.4.12 -Provides: bundled(golang(github.com/yuin/goldmark-highlighting)) -Provides: bundled(golang(go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp)) = 0.29.0 -Provides: bundled(golang(go.opentelemetry.io/otel)) = 1.4.0 +# BSD-3-Clause +Provides: bundled(golang(github.com/grpc-ecosystem/grpc-gateway)) = 1.16.0 +# MIT +Provides: bundled(golang(github.com/huandu/xstrings)) = 1.3.3 +# BSD-3-Clause +Provides: bundled(golang(github.com/imdario/mergo)) = 0.3.12 +# Apache-2.0 +Provides: bundled(golang(github.com/inconshreveable/mousetrap)) = 1.0.1 +# MIT +Provides: bundled(golang(github.com/jackc/chunkreader/v2)) = 2.0.1 +# MIT +Provides: bundled(golang(github.com/jackc/pgconn)) = 1.13.0 +# MIT +Provides: bundled(golang(github.com/jackc/pgio)) = 1.0.0 +# MIT +Provides: bundled(golang(github.com/jackc/pgpassfile)) = 1.0.0 +# MIT +Provides: bundled(golang(github.com/jackc/pgproto3/v2)) = 2.3.1 +# MIT +Provides: bundled(golang(github.com/jackc/pgservicefile)) = 2b9c447 +# MIT +Provides: bundled(golang(github.com/jackc/pgtype)) = 1.12.0 +# MIT +Provides: bundled(golang(github.com/jackc/pgx/v4)) = 4.17.2 +# BSD-3-Clause AND Apache-2.0 AND MIT +Provides: bundled(golang(github.com/klauspost/compress)) = 1.15.15 +# MIT +Provides: bundled(golang(github.com/klauspost/cpuid/v2)) = 2.2.3 +# MIT +Provides: bundled(golang(github.com/libdns/libdns)) = 0.2.1 +# BSD-3-Clause +Provides: bundled(golang(github.com/manifoldco/promptui)) = 0.9.0 +# MIT +Provides: bundled(golang(github.com/mattn/go-colorable)) = 0.1.8 +# MIT +Provides: bundled(golang(github.com/mattn/go-isatty)) = 0.0.13 +# Apache-2.0 +Provides: bundled(golang(github.com/matttproud/golang_protobuf_extensions)) = 1.0.1 +# MIT +Provides: bundled(golang(github.com/mgutz/ansi)) = d51e80e +# Apache-2.0 +Provides: bundled(golang(github.com/mholt/acmez)) = 1.1.0 +# MIT +Provides: bundled(golang(github.com/micromdm/scep/v2)) = 2.1.0 +# BSD-3-Clause +Provides: bundled(golang(github.com/miekg/dns)) = 1.1.50 +# MIT +Provides: bundled(golang(github.com/mitchellh/copystructure)) = 1.2.0 +# MIT +Provides: bundled(golang(github.com/mitchellh/go-ps)) = 1.0.0 +# MIT +Provides: bundled(golang(github.com/mitchellh/reflectwalk)) = 1.0.2 +# MIT +Provides: bundled(golang(github.com/onsi/ginkgo/v2)) = 2.2.0 +# BSD-2-Clause +Provides: bundled(golang(github.com/pkg/errors)) = 0.9.1 +# Apache-2.0 +Provides: bundled(golang(github.com/prometheus/client_golang)) = 1.14.0 +# Apache-2.0 +Provides: bundled(golang(github.com/prometheus/client_model)) = 0.3.0 +# Apache-2.0 +Provides: bundled(golang(github.com/prometheus/common)) = 0.37.0 +# Apache-2.0 +Provides: bundled(golang(github.com/prometheus/procfs)) = 0.8.0 +# MIT +Provides: bundled(golang(github.com/quic-go/qpack)) = 0.4.0 +# BSD-3-Clause +Provides: bundled(golang(github.com/quic-go/qtls-go1-18)) = 0.2.0 +# BSD-3-Clause +Provides: bundled(golang(github.com/quic-go/qtls-go1-19)) = 0.2.0 +# BSD-3-Clause +Provides: bundled(golang(github.com/quic-go/qtls-go1-20)) = 0.1.0 +# MIT +Provides: bundled(golang(github.com/quic-go/quic-go)) = 0.32.0 +# MIT +Provides: bundled(golang(github.com/rs/xid)) = 1.4.0 +# BSD-2-Clause +Provides: bundled(golang(github.com/russross/blackfriday/v2)) = 2.1.0 +# MIT +Provides: bundled(golang(github.com/shopspring/decimal)) = 1.2.0 +# MIT +Provides: bundled(golang(github.com/shurcooL/sanitized_anchor_name)) = 1.0.0 +# MIT +Provides: bundled(golang(github.com/sirupsen/logrus)) = 1.9.0 +# MIT +Provides: bundled(golang(github.com/slackhq/nebula)) = 1.6.1 +# Apache-2.0 +Provides: bundled(golang(github.com/smallstep/certificates)) = 0.23.2 +# Apache-2.0 +Provides: bundled(golang(github.com/smallstep/nosql)) = 0.5.0 +# Apache-2.0 +Provides: bundled(golang(github.com/smallstep/truststore)) = 0.12.1 +# MIT +Provides: bundled(golang(github.com/spf13/cast)) = 1.4.1 +# Apache-2.0 +Provides: bundled(golang(github.com/spf13/cobra)) = 1.6.1 +# BSD-3-Clause +Provides: bundled(golang(github.com/spf13/pflag)) = 1.0.5 +# MIT +Provides: bundled(golang(github.com/stoewer/go-strcase)) = 1.2.0 +# BSD-3-Clause +Provides: bundled(golang(github.com/tailscale/tscert)) = c6dc1f4 +# MIT +Provides: bundled(golang(github.com/urfave/cli)) = 1.22.12 +# MIT +Provides: bundled(golang(github.com/x448/float16)) = 0.8.4 +# MIT +Provides: bundled(golang(github.com/yuin/goldmark)) = 1.5.4 +# MIT +Provides: bundled(golang(github.com/yuin/goldmark-highlighting/v2)) = 1513624 +# MIT +Provides: bundled(golang(go.etcd.io/bbolt)) = 1.3.6 +# MIT +Provides: bundled(golang(go.mozilla.org/pkcs7)) = 33d0574 +# Apache-2.0 +Provides: bundled(golang(go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp)) = 0.39.0 +# Apache-2.0 +Provides: bundled(golang(go.opentelemetry.io/otel)) = 1.13.0 +# Apache-2.0 +Provides: bundled(golang(go.opentelemetry.io/otel/exporters/otlp/internal/retry)) = 1.4.0 +# Apache-2.0 +Provides: bundled(golang(go.opentelemetry.io/otel/exporters/otlp/otlptrace)) = 1.4.0 +# Apache-2.0 Provides: bundled(golang(go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc)) = 1.4.0 -Provides: bundled(golang(go.opentelemetry.io/otel/sdk)) = 1.4.0 -Provides: bundled(golang(go.uber.org/zap)) = 1.21.0 -Provides: bundled(golang(golang.org/x/crypto)) -Provides: bundled(golang(golang.org/x/net)) -Provides: bundled(golang(golang.org/x/term)) -Provides: bundled(golang(google.golang.org/genproto)) -Provides: bundled(golang(google.golang.org/protobuf)) = 1.28.0 -Provides: bundled(golang(gopkg.in/natefinch/lumberjack.v2)) = 2.0.0 +# Apache-2.0 +Provides: bundled(golang(go.opentelemetry.io/otel/metric)) = 0.36.0 +# Apache-2.0 +Provides: bundled(golang(go.opentelemetry.io/otel/sdk)) = 1.13.0 +# Apache-2.0 +Provides: bundled(golang(go.opentelemetry.io/otel/trace)) = 1.13.0 +# Apache-2.0 +Provides: bundled(golang(go.opentelemetry.io/proto/otlp)) = 0.12.0 +# Apache-2.0 AND BSD-2-Clause +Provides: bundled(golang(go.step.sm/cli-utils)) = 0.7.5 +# Apache-2.0 AND BSD-2-Clause +Provides: bundled(golang(go.step.sm/crypto)) = 0.23.2 +# Apache-2.0 +Provides: bundled(golang(go.step.sm/linkedca)) = 0.19.0 +# MIT +Provides: bundled(golang(go.uber.org/atomic)) = 1.9.0 +# MIT +Provides: bundled(golang(go.uber.org/multierr)) = 1.6.0 +# MIT +Provides: bundled(golang(go.uber.org/zap)) = 1.24.0 +# BSD-3-Clause +Provides: bundled(golang(golang.org/x/crypto)) = 0.5.0 +# BSD-3-Clause +Provides: bundled(golang(golang.org/x/exp)) = 47842c8 +# BSD-3-Clause +Provides: bundled(golang(golang.org/x/mod)) = 0.6.0 +# BSD-3-Clause +Provides: bundled(golang(golang.org/x/net)) = 0.7.0 +# BSD-3-Clause +Provides: bundled(golang(golang.org/x/sync)) = 0.1.0 +# BSD-3-Clause +Provides: bundled(golang(golang.org/x/sys)) = 0.5.0 +# BSD-3-Clause +Provides: bundled(golang(golang.org/x/term)) = 0.5.0 +# BSD-3-Clause +Provides: bundled(golang(golang.org/x/text)) = 0.7.0 +# BSD-3-Clause +Provides: bundled(golang(golang.org/x/tools)) = 0.2.0 +# Apache-2.0 +Provides: bundled(golang(google.golang.org/genproto)) = 008b390 +# Apache-2.0 +Provides: bundled(golang(google.golang.org/grpc)) = 1.52.3 +# BSD-3-Clause +Provides: bundled(golang(google.golang.org/protobuf)) = 1.28.1 +# MIT +Provides: bundled(golang(gopkg.in/natefinch/lumberjack.v2)) = 2.2.1 +# Apache-2.0 AND BSD-3-Clause +Provides: bundled(golang(gopkg.in/square/go-jose.v2)) = 2.6.0 +# Apache-2.0 AND MIT Provides: bundled(golang(gopkg.in/yaml.v3)) = 3.0.1 +# BSD-2-Clause-Views AND BSD-3-Clause +Provides: bundled(golang(howett.net/plist)) = 1.0.0 BuildRequires: systemd-rpm-macros %{?systemd_requires} @@ -119,12 +310,11 @@ Caddy is the web server with automatic HTTPS. mkdir -p src/$(dirname %{goipath}) ln -s $PWD src/%{goipath} -sed -e '/mod.Version/ s/unknown/%{version}-%{release}/' -i caddy.go - %build export GO111MODULE=off export GOPATH=$PWD +export LDFLAGS="-X %{goipath}.CustomVersion=v%{version}" %gobuild -o bin/caddy %{goipath}/cmd/caddy @@ -159,6 +349,10 @@ install -D -p -m 0644 %{S:41} %{buildroot}%{_datadir}/zsh/site-functions/_caddy %check +# ensure that the version was embedded correctly +[[ "$(./bin/caddy version)" == "v%{version}" ]] || exit 1 + +# run the upstream tests export GO111MODULE=off export GOPATH=$PWD cd src/%{goipath} @@ -244,6 +438,9 @@ fi %changelog +* Tue Aug 15 2023 Carl George - 2.6.4-1 +- Update to version 2.6.4 + * Wed Jul 19 2023 Fedora Release Engineering - 2.5.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/sources b/sources index 66015b6..c0c8b0b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (caddy-2.5.2-vendored.tar.gz) = 2b7eb72552c8ae3d5ba4240bf3593fa9374d3863ee93c4f3718f57781987548f0f163458396c18d93d72d8dd81d5ab7e66ccf65cd4ea97c76948bad174e2ba3a +SHA512 (caddy-2.6.4-vendored.tar.gz) = 877e5975eab7315f3327fa381f2361563b3e8711f66240029768a9d0b4b7d0b961973a7a67e5baf4ba8039659bc708a408482442b3dba9b51822bb196f3cf2e0 From 947aa456051b16a5cb427fab34c859658d69aed0 Mon Sep 17 00:00:00 2001 From: Carl George Date: Tue, 15 Aug 2023 18:02:11 -0500 Subject: [PATCH 3/6] Add man pages --- caddy.spec | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/caddy.spec b/caddy.spec index cbbccc0..4010f73 100644 --- a/caddy.spec +++ b/caddy.spec @@ -322,6 +322,9 @@ export LDFLAGS="-X %{goipath}.CustomVersion=v%{version}" # command install -D -p -m 0755 bin/caddy %{buildroot}%{_bindir}/caddy +# man pages +./bin/caddy manpage --directory %{buildroot}%{_mandir}/man8 + # config install -D -p -m 0644 %{S:10} %{buildroot}%{_sysconfdir}/caddy/Caddyfile install -d -m 0755 %{buildroot}%{_sysconfdir}/caddy/Caddyfile.d @@ -422,6 +425,7 @@ fi %license LICENSE %doc README.md AUTHORS %{_bindir}/caddy +%{_mandir}/man8/caddy*.8* %{_datadir}/caddy %{_unitdir}/caddy.service %{_unitdir}/caddy-api.service @@ -440,6 +444,7 @@ fi %changelog * Tue Aug 15 2023 Carl George - 2.6.4-1 - Update to version 2.6.4 +- Add man pages * Wed Jul 19 2023 Fedora Release Engineering - 2.5.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 464053139e10f4b17f0b8558b95167755f5d02d9 Mon Sep 17 00:00:00 2001 From: Carl George Date: Tue, 15 Aug 2023 18:03:01 -0500 Subject: [PATCH 4/6] Use generated shell completion files instead of static ones --- bash-completion | 1210 ----------------------------------------------- caddy.spec | 11 +- zsh-completion | 166 ------- 3 files changed, 6 insertions(+), 1381 deletions(-) delete mode 100644 bash-completion delete mode 100644 zsh-completion diff --git a/bash-completion b/bash-completion deleted file mode 100644 index 1da7f36..0000000 --- a/bash-completion +++ /dev/null @@ -1,1210 +0,0 @@ -#!/usr/bin/env bash - -# helper method -declare -f _contains_element > /dev/null || _contains_element() { - local e match="$1" - shift - for e; do [[ "$e" == "$match" ]] && return 0; done - return 1 -} - -_caddy_completions() -{ - # get current word, words array, current word index, and previous word, ignoring ":" as a wordbreak - local cur cword words - _get_comp_words_by_ref -n ":" cur words cword prev - - # complete subcommands list - if [ "$cword" -eq "1" ] && [ "adapt build-info environ file-server fmt hash-password help list-modules reload reverse-proxy run start stop trust untrust validate version" != "" ]; then - COMPREPLY=($(compgen -W "adapt build-info environ file-server fmt hash-password help list-modules reload reverse-proxy run start stop trust untrust validate version" -- "$cur")) - __ltrim_colon_completions "$cur" - return - fi - - local subcommand="${words[1]}" - - local args used_flags used_args index - - # register completions for each subcommand - if [ "${subcommand}" == "adapt" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--pretty" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - if [ "${args[0]}" == "--validate" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--adapter" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--config" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - if [[ "$prev" == "--adapter" ]]; then - COMPREPLY=() - if command -v grep > /dev/null && command -v sed > /dev/null && command -v tr > /dev/null; then - COMPREPLY=($(compgen -W "$(caddy list-modules | grep adapters | sed s/caddy.adapters.// | tr ' -' ' ')" -- "$cur")) - fi - return - fi - if [[ "$prev" == "--config" ]]; then - COMPREPLY=() - COMPREPLY=($(compgen -f -- "$cur")) - return - fi - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--pretty" "${used_flags[@]}"; then - completion+=("--pretty") - fi - if ! _contains_element "--validate" "${used_flags[@]}"; then - completion+=("--validate") - fi - if ! _contains_element "--adapter" "${used_flags[@]}"; then - completion+=("--adapter") - fi - if ! _contains_element "--config" "${used_flags[@]}"; then - completion+=("--config") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "build-info" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "environ" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "file-server" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--browse" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - if [ "${args[0]}" == "--templates" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--domain" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--listen" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--root" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - if [[ "$prev" == "--domain" ]]; then - COMPREPLY=() - return - fi - if [[ "$prev" == "--listen" ]]; then - COMPREPLY=() - return - fi - if [[ "$prev" == "--root" ]]; then - COMPREPLY=() - COMPREPLY=($(compgen -d -- "$cur")) - return - fi - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--browse" "${used_flags[@]}"; then - completion+=("--browse") - fi - if ! _contains_element "--templates" "${used_flags[@]}"; then - completion+=("--templates") - fi - if ! _contains_element "--domain" "${used_flags[@]}"; then - completion+=("--domain") - fi - if ! _contains_element "--listen" "${used_flags[@]}"; then - completion+=("--listen") - fi - if ! _contains_element "--root" "${used_flags[@]}"; then - completion+=("--root") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "fmt" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--overwrite" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--overwrite" "${used_flags[@]}"; then - completion+=("--overwrite") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - if [[ "${#used_args[@]}" -eq "0" ]]; then - COMPREPLY=() - COMPREPLY=($(compgen -f -- "$cur")) - return - fi - - return - fi - if [ "${subcommand}" == "hash-password" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - if [ "${args[0]}" == "--algorithm" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--plaintext" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--salt" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - if [[ "$prev" == "--algorithm" ]]; then - COMPREPLY=() - return - fi - if [[ "$prev" == "--plaintext" ]]; then - COMPREPLY=() - return - fi - if [[ "$prev" == "--salt" ]]; then - COMPREPLY=() - return - fi - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--algorithm" "${used_flags[@]}"; then - completion+=("--algorithm") - fi - if ! _contains_element "--plaintext" "${used_flags[@]}"; then - completion+=("--plaintext") - fi - if ! _contains_element "--salt" "${used_flags[@]}"; then - completion+=("--salt") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "help" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - if [[ "${#used_args[@]}" -eq "0" ]]; then - COMPREPLY=() - COMPREPLY=($(compgen -W "adapt build-info environ file-server fmt hash-password help list-modules reload reverse-proxy run stop trust untrust validate" -- "$cur")) - return - fi - - return - fi - if [ "${subcommand}" == "list-modules" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--versions" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--versions" "${used_flags[@]}"; then - completion+=("--versions") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "reload" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - if [ "${args[0]}" == "--adapter" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--config" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--address" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - if [[ "$prev" == "--adapter" ]]; then - COMPREPLY=() - if command -v grep > /dev/null && command -v sed > /dev/null && command -v tr > /dev/null; then - COMPREPLY=($(compgen -W "$(caddy list-modules | grep adapters | sed s/caddy.adapters.// | tr ' -' ' ')" -- "$cur")) - fi - return - fi - if [[ "$prev" == "--config" ]]; then - COMPREPLY=() - COMPREPLY=($(compgen -f -- "$cur")) - return - fi - if [[ "$prev" == "--address" ]]; then - COMPREPLY=() - return - fi - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--adapter" "${used_flags[@]}"; then - completion+=("--adapter") - fi - if ! _contains_element "--config" "${used_flags[@]}"; then - completion+=("--config") - fi - if ! _contains_element "--address" "${used_flags[@]}"; then - completion+=("--address") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "reverse-proxy" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--change-host-header" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--from" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--to" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - if [[ "$prev" == "--from" ]]; then - COMPREPLY=() - return - fi - if [[ "$prev" == "--to" ]]; then - COMPREPLY=() - return - fi - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--change-host-header" "${used_flags[@]}"; then - completion+=("--change-host-header") - fi - if ! _contains_element "--from" "${used_flags[@]}"; then - completion+=("--from") - fi - if ! _contains_element "--to" "${used_flags[@]}"; then - completion+=("--to") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "run" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--environ" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - if [ "${args[0]}" == "--resume" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - if [ "${args[0]}" == "--watch" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--adapter" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--config" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--pingback" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--pidfile" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - if [[ "$prev" == "--adapter" ]]; then - COMPREPLY=() - if command -v grep > /dev/null && command -v sed > /dev/null && command -v tr > /dev/null; then - COMPREPLY=($(compgen -W "$(caddy list-modules | grep adapters | sed s/caddy.adapters.// | tr ' -' ' ')" -- "$cur")) - fi - return - fi - if [[ "$prev" == "--config" ]]; then - COMPREPLY=() - COMPREPLY=($(compgen -f -- "$cur")) - return - fi - if [[ "$prev" == "--pingback" ]]; then - COMPREPLY=() - return - fi - if [[ "$prev" == "--pidfile" ]]; then - COMPREPLY=() - COMPREPLY=($(compgen -f -- "$cur")) - return - fi - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--environ" "${used_flags[@]}"; then - completion+=("--environ") - fi - if ! _contains_element "--resume" "${used_flags[@]}"; then - completion+=("--resume") - fi - if ! _contains_element "--watch" "${used_flags[@]}"; then - completion+=("--watch") - fi - if ! _contains_element "--adapter" "${used_flags[@]}"; then - completion+=("--adapter") - fi - if ! _contains_element "--config" "${used_flags[@]}"; then - completion+=("--config") - fi - if ! _contains_element "--pingback" "${used_flags[@]}"; then - completion+=("--pingback") - fi - if ! _contains_element "--pidfile" "${used_flags[@]}"; then - completion+=("--pidfile") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "start" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--watch" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - if [ "${args[0]}" == "--adapter" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--config" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--pidfile" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - if [[ "$prev" == "--adapter" ]]; then - COMPREPLY=() - if command -v grep > /dev/null && command -v sed > /dev/null && command -v tr > /dev/null; then - COMPREPLY=($(compgen -W "$(caddy list-modules | grep adapters | sed s/caddy.adapters.// | tr ' -' ' ')" -- "$cur")) - fi - return - fi - if [[ "$prev" == "--config" ]]; then - COMPREPLY=() - COMPREPLY=($(compgen -f -- "$cur")) - return - fi - if [[ "$prev" == "--pidfile" ]]; then - COMPREPLY=() - COMPREPLY=($(compgen -f -- "$cur")) - return - fi - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--watch" "${used_flags[@]}"; then - completion+=("--watch") - fi - if ! _contains_element "--adapter" "${used_flags[@]}"; then - completion+=("--adapter") - fi - if ! _contains_element "--config" "${used_flags[@]}"; then - completion+=("--config") - fi - if ! _contains_element "--pidfile" "${used_flags[@]}"; then - completion+=("--pidfile") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "stop" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - if [ "${args[0]}" == "--address" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - if [[ "$prev" == "--address" ]]; then - COMPREPLY=() - return - fi - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--address" "${used_flags[@]}"; then - completion+=("--address") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "trust" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "untrust" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - if [ "${args[0]}" == "--ca" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--cert" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - if [[ "$prev" == "--ca" ]]; then - COMPREPLY=() - return - fi - if [[ "$prev" == "--cert" ]]; then - COMPREPLY=() - COMPREPLY=($(compgen -f -- "$cur")) - return - fi - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--ca" "${used_flags[@]}"; then - completion+=("--ca") - fi - if ! _contains_element "--cert" "${used_flags[@]}"; then - completion+=("--cert") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "validate" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - if [ "${args[0]}" == "--config" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - if [ "${args[0]}" == "--adapter" ]; then - used_flags+=("${args[0]}") - args=("${args[@]:2}") - index=$((index+2)) - continue - fi - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - if [[ "$prev" == "--config" ]]; then - COMPREPLY=() - COMPREPLY=($(compgen -f -- "$cur")) - return - fi - if [[ "$prev" == "--adapter" ]]; then - COMPREPLY=() - if command -v grep > /dev/null && command -v sed > /dev/null && command -v tr > /dev/null; then - COMPREPLY=($(compgen -W "$(caddy list-modules | grep adapters | sed s/caddy.adapters.// | tr ' -' ' ')" -- "$cur")) - fi - return - fi - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - if ! _contains_element "--config" "${used_flags[@]}"; then - completion+=("--config") - fi - if ! _contains_element "--adapter" "${used_flags[@]}"; then - completion+=("--adapter") - fi - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi - if [ "${subcommand}" == "version" ]; then - local args_shift=2 - # get the list of already used flags and args, ignoring the current word - args=("${words[@]:args_shift}") # args without command and subcommand - used_flags=() - used_args=() - index=0 - - while [ "${#args[@]}" -gt 0 ]; do - if [ "${index}" -eq "$((cword-args_shift))" ]; then - # ignore current word - args=("${args[@]:1}") - index=$((index+1)) - continue - fi - - - - if [[ "${args[0]}" != "-"* ]]; then - used_args+=("${args[0]}") - fi - args=("${args[@]:1}") - index=$((index+1)) - done - - - if [[ $cur == -* ]]; then - # flags - completion=() - - if [[ $cur != --* ]]; then - true - fi - - - COMPREPLY=($(compgen -W "${completion[*]}" -- "$cur")) - return - fi - - - return - fi -} - -# register completion -complete -F _caddy_completions caddy - diff --git a/caddy.spec b/caddy.spec index 4010f73..54257f8 100644 --- a/caddy.spec +++ b/caddy.spec @@ -29,8 +29,6 @@ Source20: caddy.service Source21: caddy-api.service Source30: poweredby-white.png Source31: poweredby-black.png -Source40: bash-completion -Source41: zsh-completion # downstream only patch to disable commands that can alter the binary Patch: 0001-Disable-commands-that-can-alter-the-binary.patch @@ -346,9 +344,11 @@ ln -s ../testpage/index.html %{buildroot}%{_datadir}/caddy/index.html install -d -m 0755 %{buildroot}%{_datadir}/caddy/icons ln -s ../../pixmaps/poweredby.png %{buildroot}%{_datadir}/caddy/icons/poweredby.png -# shell completion -install -D -p -m 0644 %{S:40} %{buildroot}%{_datadir}/bash-completion/completions/caddy -install -D -p -m 0644 %{S:41} %{buildroot}%{_datadir}/zsh/site-functions/_caddy +# shell completions +install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions +./bin/caddy completion bash > %{buildroot}%{_datadir}/bash-completion/completions/caddy +install -d -m 0755 %{buildroot}%{_datadir}/zsh/site-functions +./bin/caddy completion zsh > %{buildroot}%{_datadir}/zsh/site-functions/_caddy %check @@ -445,6 +445,7 @@ fi * Tue Aug 15 2023 Carl George - 2.6.4-1 - Update to version 2.6.4 - Add man pages +- Use generated shell completion files instead of static ones * Wed Jul 19 2023 Fedora Release Engineering - 2.5.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/zsh-completion b/zsh-completion deleted file mode 100644 index 66f50b7..0000000 --- a/zsh-completion +++ /dev/null @@ -1,166 +0,0 @@ -#compdef caddy - -function _caddy { - local _line - - _arguments -C \ - "1: :(adapt build-info environ file-server fmt hash-password help list-modules reload reverse-proxy run start stop trust untrust validate version)" \ - "*::arg:->args" - - case $line[1] in - adapt) - __caddy_adapt - ;; - build-info) - __caddy_build-info - ;; - environ) - __caddy_environ - ;; - file-server) - __caddy_file-server - ;; - fmt) - __caddy_fmt - ;; - hash-password) - __caddy_hash-password - ;; - help) - __caddy_help - ;; - list-modules) - __caddy_list-modules - ;; - reload) - __caddy_reload - ;; - reverse-proxy) - __caddy_reverse-proxy - ;; - run) - __caddy_run - ;; - start) - __caddy_start - ;; - stop) - __caddy_stop - ;; - trust) - __caddy_trust - ;; - untrust) - __caddy_untrust - ;; - validate) - __caddy_validate - ;; - version) - __caddy_version - ;; - esac -} - -function __caddy_adapt { - _arguments \ - "--pretty: :" \ - "--validate: :" \ - "--adapter: :_files" \ - "--config: :_files" \ - -} -function __caddy_build-info { - -} -function __caddy_environ { - -} -function __caddy_file-server { - _arguments \ - "--browse: :" \ - "--templates: :" \ - "--domain: :_files" \ - "--listen: :_files" \ - "--root: :_dirs" \ - -} -function __caddy_fmt { - _arguments \ - "--overwrite: :" \ - -} -function __caddy_hash-password { - _arguments \ - "--algorithm: :_files" \ - "--plaintext: :_files" \ - "--salt: :_files" \ - -} -function __caddy_help { - -} -function __caddy_list-modules { - _arguments \ - "--versions: :" \ - -} -function __caddy_reload { - _arguments \ - "--adapter: :_files" \ - "--config: :_files" \ - "--address: :_files" \ - -} -function __caddy_reverse-proxy { - _arguments \ - "--change-host-header: :" \ - "--from: :_files" \ - "--to: :_files" \ - -} -function __caddy_run { - _arguments \ - "--environ: :" \ - "--resume: :" \ - "--watch: :" \ - "--adapter: :_files" \ - "--config: :_files" \ - "--pingback: :_files" \ - "--pidfile: :_files" \ - -} -function __caddy_start { - _arguments \ - "--watch: :" \ - "--adapter: :_files" \ - "--config: :_files" \ - "--pidfile: :_files" \ - -} -function __caddy_stop { - _arguments \ - "--address: :_files" \ - -} -function __caddy_trust { - -} -function __caddy_untrust { - _arguments \ - "--ca: :_files" \ - "--cert: :_files" \ - -} -function __caddy_validate { - _arguments \ - "--config: :_files" \ - "--adapter: :_files" \ - -} -function __caddy_version { - -} - -_caddy - From e241718bf1c8d4513357b0a6f08523430fc5f6ea Mon Sep 17 00:00:00 2001 From: Carl George Date: Tue, 15 Aug 2023 18:04:10 -0500 Subject: [PATCH 5/6] Add fish shell completions --- caddy.spec | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/caddy.spec b/caddy.spec index 54257f8..9385603 100644 --- a/caddy.spec +++ b/caddy.spec @@ -349,6 +349,8 @@ install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions ./bin/caddy completion bash > %{buildroot}%{_datadir}/bash-completion/completions/caddy install -d -m 0755 %{buildroot}%{_datadir}/zsh/site-functions ./bin/caddy completion zsh > %{buildroot}%{_datadir}/zsh/site-functions/_caddy +install -d -m 0755 %{buildroot}%{_datadir}/fish/vendor_completions.d +./bin/caddy completion fish > %{buildroot}%{_datadir}/fish/vendor_completions.d/caddy.fish %check @@ -439,6 +441,10 @@ fi %dir %{_datadir}/zsh %dir %{_datadir}/zsh/site-functions %{_datadir}/zsh/site-functions/_caddy +# own parent directories in case fish is not installed +%dir %{_datadir}/fish +%dir %{_datadir}/fish/vendor_completions.d +%{_datadir}/fish/vendor_completions.d/caddy.fish %changelog @@ -446,6 +452,7 @@ fi - Update to version 2.6.4 - Add man pages - Use generated shell completion files instead of static ones +- Add fish shell completions * Wed Jul 19 2023 Fedora Release Engineering - 2.5.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From c37ccf685bbf07c8cf23ce9deb364fc7ee37bca4 Mon Sep 17 00:00:00 2001 From: Carl George Date: Thu, 24 Aug 2023 01:13:36 -0500 Subject: [PATCH 6/6] Update create-vendor-tarball.sh script to match rawhide --- create-vendor-tarball.sh | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/create-vendor-tarball.sh b/create-vendor-tarball.sh index 80f8fe9..cf2a545 100755 --- a/create-vendor-tarball.sh +++ b/create-vendor-tarball.sh @@ -1,15 +1,38 @@ #!/usr/bin/bash -version=$1 +tag=$1 -if [[ -z ${version} ]]; then - echo "This script requires the version as an argument." +if [[ -z $tag ]]; then + echo "This script requires the tag as an argument." exit 1 fi -git clone --branch v${version} --depth 1 https://github.com/caddyserver/caddy.git caddy-${version} -pushd caddy-${version} -go mod vendor +set -euo pipefail + +# transform tag into version +case $tag in + *beta*) + # v2.0.0-beta.1 -> 2.0.0~beta1 + temp=${tag#v} + version=${temp/-beta./~beta} + ;; + *rc*) + # v2.0.0-rc.1 -> 2.0.0~rc1 + temp=${tag#v} + version=${temp/-rc./~rc} + ;; + *) + # v2.0.0 -> 2.0.0 + version=${tag#v} + ;; +esac + +echo "Using tag: $tag" +echo "Using version: $version" + +git -c advice.detachedHead=false clone --branch $tag --depth 1 https://github.com/caddyserver/caddy.git caddy-$version +pushd caddy-$version +GOPROXY='https://proxy.golang.org,direct' go mod vendor popd -tar --exclude .git -czf caddy-${version}-vendored.tar.gz caddy-${version} -rm -r caddy-${version} +tar --exclude .git -czf caddy-$version-vendored.tar.gz caddy-$version +rm -r caddy-$version