From aa4576c62ba9493d0385a3e556ab1d69a52adc4e Mon Sep 17 00:00:00 2001 From: Alexandre Daubois Date: Fri, 21 Nov 2025 14:47:05 +0100 Subject: [PATCH] feat(docs): add autocompletion docs and update binary name --- .github/workflows/windows.yaml | 2 +- Dockerfile | 2 +- alpine.Dockerfile | 2 +- caddy/caddy.go | 2 ++ caddy/go.mod | 4 +-- caddy/go.sum | 8 ++--- docs/config.md | 66 ++++++++++++++++++++++++++++++++++ docs/fr/config.md | 66 ++++++++++++++++++++++++++++++++++ 8 files changed, 143 insertions(+), 9 deletions(-) diff --git a/.github/workflows/windows.yaml b/.github/workflows/windows.yaml index bba4a8402c..b6a0c9e5c5 100644 --- a/.github/workflows/windows.yaml +++ b/.github/workflows/windows.yaml @@ -181,7 +181,7 @@ jobs: - name: Build FrankenPHP run: | $customVersion = "FrankenPHP $env:FRANKENPHP_VERSION PHP $env:PHP_VERSION Caddy" - go build -ldflags="-extldflags=-fuse-ld=lld -X 'github.com/caddyserver/caddy/v2.CustomVersion=$customVersion' -X 'github.com/caddyserver/caddy/v2/modules/caddyhttp.ServerHeader=FrankenPHP Caddy'" + go build -ldflags="-extldflags=-fuse-ld=lld -X 'github.com/caddyserver/caddy/v2.CustomVersion=$customVersion' -X 'github.com/caddyserver/caddy/v2.CustomBinaryName=frankenphp' -X 'github.com/caddyserver/caddy/v2/modules/caddyhttp.ServerHeader=FrankenPHP Caddy'" working-directory: frankenphp\caddy\frankenphp - name: Create Directory diff --git a/Dockerfile b/Dockerfile index c40488b8e1..8252e40998 100644 --- a/Dockerfile +++ b/Dockerfile @@ -118,7 +118,7 @@ ENV CGO_LDFLAGS="-L/usr/local/lib -lssl -lcrypto -lreadline -largon2 -lcurl -lon WORKDIR /go/src/app/caddy/frankenphp RUN GOBIN=/usr/local/bin \ - ../../go.sh install -ldflags "-w -s -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy' -X 'github.com/caddyserver/caddy/v2/modules/caddyhttp.ServerHeader=FrankenPHP Caddy'" -buildvcs=true && \ + ../../go.sh install -ldflags "-w -s -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy' -X 'github.com/caddyserver/caddy/v2.CustomBinaryName=frankenphp' -X 'github.com/caddyserver/caddy/v2/modules/caddyhttp.ServerHeader=FrankenPHP Caddy'" -buildvcs=true && \ setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \ cp Caddyfile /etc/frankenphp/Caddyfile && \ frankenphp version && \ diff --git a/alpine.Dockerfile b/alpine.Dockerfile index 31650af4c6..c5d0f64ecb 100644 --- a/alpine.Dockerfile +++ b/alpine.Dockerfile @@ -123,7 +123,7 @@ ENV CGO_LDFLAGS="-lssl -lcrypto -lreadline -largon2 -lcurl -lonig -lz $PHP_LDFLA WORKDIR /go/src/app/caddy/frankenphp RUN GOBIN=/usr/local/bin \ - ../../go.sh install -ldflags "-w -s -extldflags '-Wl,-z,stack-size=0x80000' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy' -X 'github.com/caddyserver/caddy/v2/modules/caddyhttp.ServerHeader=FrankenPHP Caddy'" -buildvcs=true && \ + ../../go.sh install -ldflags "-w -s -extldflags '-Wl,-z,stack-size=0x80000' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy' -X 'github.com/caddyserver/caddy/v2.CustomBinaryName=frankenphp' -X 'github.com/caddyserver/caddy/v2/modules/caddyhttp.ServerHeader=FrankenPHP Caddy'" -buildvcs=true && \ setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \ ([ -z "${NO_COMPRESS}" ] && upx --best /usr/local/bin/frankenphp || true) && \ frankenphp version && \ diff --git a/caddy/caddy.go b/caddy/caddy.go index 0cc330f957..7099e18bca 100644 --- a/caddy/caddy.go +++ b/caddy/caddy.go @@ -16,6 +16,8 @@ const ( ) func init() { + caddy.CustomBinaryName = "frankenphp" + caddy.RegisterModule(FrankenPHPApp{}) caddy.RegisterModule(FrankenPHPModule{}) caddy.RegisterModule(FrankenPHPAdmin{}) diff --git a/caddy/go.mod b/caddy/go.mod index 95c31fba74..b2308e8cea 100644 --- a/caddy/go.mod +++ b/caddy/go.mod @@ -7,7 +7,7 @@ replace github.com/dunglas/frankenphp => ../ retract v1.0.0-rc.1 // Human error require ( - github.com/caddyserver/caddy/v2 v2.11.1 + github.com/caddyserver/caddy/v2 v2.11.2-0.20260302110428-f283062d37c5 github.com/caddyserver/certmagic v0.25.2 github.com/dunglas/caddy-cbrotli v1.0.1 github.com/dunglas/frankenphp v1.11.3 @@ -208,7 +208,7 @@ require ( golang.org/x/crypto/x509roots/fallback v0.0.0-20260213171211-a408498e5541 // indirect golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa // indirect golang.org/x/mod v0.33.0 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.51.0 // indirect golang.org/x/oauth2 v0.35.0 // indirect golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.41.0 // indirect diff --git a/caddy/go.sum b/caddy/go.sum index 84a92febbc..729286f076 100644 --- a/caddy/go.sum +++ b/caddy/go.sum @@ -95,8 +95,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.24.4 h1:95H15Og1clikBrKr/DuzMXkQzECs1M6hhoGXLwLQOZE= github.com/bits-and-blooms/bitset v1.24.4/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/caddyserver/caddy/v2 v2.11.1 h1:C7sQpsFOC5CH+31KqJc7EoOf8mXrOEkFyYd6GpIqm/s= -github.com/caddyserver/caddy/v2 v2.11.1/go.mod h1:EOKnXuSSGlq2SuItwQuEVIsY5bRRi7tPJNHDm99XQXo= +github.com/caddyserver/caddy/v2 v2.11.2-0.20260302110428-f283062d37c5 h1:izNko8IW3U/DHEZEANt/Pm0OiQMjgTaTYLbnZLU8K4o= +github.com/caddyserver/caddy/v2 v2.11.2-0.20260302110428-f283062d37c5/go.mod h1:kO0dmfNxzlyDDnegi5Lo4NR8aWAycTDuRjdnlhrUDMY= github.com/caddyserver/certmagic v0.25.2 h1:D7xcS7ggX/WEY54x0czj7ioTkmDWKIgxtIi2OcQclUc= github.com/caddyserver/certmagic v0.25.2/go.mod h1:llW/CvsNmza8S6hmsuggsZeiX+uS27dkqY27wDIuBWg= github.com/caddyserver/zerossl v0.1.5 h1:dkvOjBAEEtY6LIGAHei7sw2UgqSD6TrWweXpV7lvEvE= @@ -580,8 +580,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/docs/config.md b/docs/config.md index 0252f54256..c173a2d743 100644 --- a/docs/config.md +++ b/docs/config.md @@ -347,3 +347,69 @@ docker run -v $PWD:/app/public \ -p 80:80 -p 443:443 -p 443:443/udp \ dunglas/frankenphp ``` + +## Shell Completion + +FrankenPHP provides built-in shell completion support for Bash, Zsh, Fish, and PowerShell. This enables autocompletion for all commands (including custom commands like `php-server`, `php-cli`, and `extension-init`) and their flags. + +### Bash + +To load completions in your current shell session: + +```console +source <(frankenphp completion bash) +``` + +To load completions for every new session, run: + +**Linux:** + +```console +frankenphp completion bash > /etc/bash_completion.d/frankenphp +``` + +**macOS:** + +```console +frankenphp completion bash > $(brew --prefix)/etc/bash_completion.d/frankenphp +``` + +### Zsh + +If shell completion is not already enabled in your environment, you will need to enable it. You can execute the following once: + +```console +echo "autoload -U compinit; compinit" >> ~/.zshrc +``` + +To load completions for each session, execute once: + +```console +frankenphp completion zsh > "${fpath[1]}/_frankenphp" +``` + +You will need to start a new shell for this setup to take effect. + +### Fish + +To load completions in your current shell session: + +```console +frankenphp completion fish | source +``` + +To load completions for every new session, execute once: + +```console +frankenphp completion fish > ~/.config/fish/completions/frankenphp.fish +``` + +### PowerShell + +To load completions in your current shell session: + +```powershell +frankenphp completion powershell | Out-String | Invoke-Expression +``` + +To load completions for every new session, add the output of the above command to your PowerShell profile. diff --git a/docs/fr/config.md b/docs/fr/config.md index 7c52cea7cb..b6e4b62848 100644 --- a/docs/fr/config.md +++ b/docs/fr/config.md @@ -279,3 +279,69 @@ docker run -v $PWD:/app/public \ -p 80:80 -p 443:443 -p 443:443/udp \ dunglas/frankenphp ``` + +## Autocomplétion Shell + +FrankenPHP fournit un support d'autocomplétion intégré pour Bash, Zsh, Fish et PowerShell. Cela permet l'autocomplétion de toutes les commandes (y compris les commandes personnalisées comme `php-server`, `php-cli` et `extension-init`) ainsi que leurs options. + +### Bash + +Pour charger l'autocomplétion dans votre session shell actuelle : + +```console +source <(frankenphp completion bash) +``` + +Pour charger l'autocomplétion à chaque nouvelle session, exécutez : + +**Linux :** + +```console +frankenphp completion bash > /etc/bash_completion.d/frankenphp +``` + +**macOS :** + +```console +frankenphp completion bash > $(brew --prefix)/etc/bash_completion.d/frankenphp +``` + +### Zsh + +Si l'autocomplétion shell n'est pas déjà activée dans votre environnement, vous devrez l'activer. Vous pouvez exécuter la commande suivante une fois : + +```console +echo "autoload -U compinit; compinit" >> ~/.zshrc +``` + +Pour charger l'autocomplétion à chaque session, exécutez une fois : + +```console +frankenphp completion zsh > "${fpath[1]}/_frankenphp" +``` + +Vous devrez démarrer un nouveau shell pour que cette configuration prenne effet. + +### Fish + +Pour charger l'autocomplétion dans votre session shell actuelle : + +```console +frankenphp completion fish | source +``` + +Pour charger l'autocomplétion à chaque nouvelle session, exécutez une fois : + +```console +frankenphp completion fish > ~/.config/fish/completions/frankenphp.fish +``` + +### PowerShell + +Pour charger l'autocomplétion dans votre session shell actuelle : + +```powershell +frankenphp completion powershell | Out-String | Invoke-Expression +``` + +Pour charger l'autocomplétion à chaque nouvelle session, ajoutez la sortie de la commande ci-dessus à votre profil PowerShell.