Add Bash and Zsh completion scripts (#22646)
This PR adds contrib scripts for bash and zsh completion. Simply call: ```bash source contrib/autocompletion/bash_autocomplete ``` or for Zsh: ```bash source contrib/autocompletion/zsh_autocomplete ``` Signed-off-by: Andrew Thornton <art27@cantab.net> --------- Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: a1012112796 <1012112796@qq.com> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
parent
4de5cd9f36
commit
43405c35f0
8 changed files with 103 additions and 0 deletions
|
@ -64,5 +64,7 @@ CMD ["/bin/s6-svscan", "/etc/s6"]
|
||||||
COPY docker/root /
|
COPY docker/root /
|
||||||
COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
|
COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
|
||||||
COPY --from=build-env /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini
|
COPY --from=build-env /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini
|
||||||
|
COPY --from=build-env /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete /etc/profile.d/gitea_bash_autocomplete.sh
|
||||||
RUN chmod 755 /usr/bin/entrypoint /app/gitea/gitea /usr/local/bin/gitea /usr/local/bin/environment-to-ini
|
RUN chmod 755 /usr/bin/entrypoint /app/gitea/gitea /usr/local/bin/gitea /usr/local/bin/environment-to-ini
|
||||||
RUN chmod 755 /etc/s6/gitea/* /etc/s6/openssh/* /etc/s6/.s6-svscan/*
|
RUN chmod 755 /etc/s6/gitea/* /etc/s6/openssh/* /etc/s6/.s6-svscan/*
|
||||||
|
RUN chmod 644 /etc/profile.d/gitea_bash_autocomplete.sh
|
||||||
|
|
|
@ -54,7 +54,9 @@ RUN chown git:git /var/lib/gitea /etc/gitea
|
||||||
COPY docker/rootless /
|
COPY docker/rootless /
|
||||||
COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
|
COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
|
||||||
COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini
|
COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini
|
||||||
|
COPY --from=build-env /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete /etc/profile.d/gitea_bash_autocomplete.sh
|
||||||
RUN chmod 755 /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-setup.sh /app/gitea/gitea /usr/local/bin/gitea /usr/local/bin/environment-to-ini
|
RUN chmod 755 /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-setup.sh /app/gitea/gitea /usr/local/bin/gitea /usr/local/bin/environment-to-ini
|
||||||
|
RUN chmod 644 /etc/profile.d/gitea_bash_autocomplete.sh
|
||||||
|
|
||||||
#git:git
|
#git:git
|
||||||
USER 1000:1000
|
USER 1000:1000
|
||||||
|
|
17
contrib/autocompletion/README
Normal file
17
contrib/autocompletion/README
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
Bash and Zsh completion
|
||||||
|
=======================
|
||||||
|
|
||||||
|
From within the gitea root run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
source contrib/autocompletion/bash_autocomplete
|
||||||
|
```
|
||||||
|
|
||||||
|
or for zsh run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
source contrib/autocompletion/zsh_autocomplete
|
||||||
|
```
|
||||||
|
|
||||||
|
These scripts will check if gitea is on the path and if so add autocompletion for `gitea`. Or if not autocompletion will work for `./gitea`.
|
||||||
|
If gitea has been installed as a different program pass in the `PROG` environment variable to set the correct program name.
|
30
contrib/autocompletion/bash_autocomplete
Executable file
30
contrib/autocompletion/bash_autocomplete
Executable file
|
@ -0,0 +1,30 @@
|
||||||
|
#! /bin/bash
|
||||||
|
# Heavily inspired by https://github.com/urfave/cli
|
||||||
|
|
||||||
|
_cli_bash_autocomplete() {
|
||||||
|
if [[ "${COMP_WORDS[0]}" != "source" ]]; then
|
||||||
|
local cur opts base
|
||||||
|
COMPREPLY=()
|
||||||
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
if [[ "$cur" == "-"* ]]; then
|
||||||
|
opts=$( ${COMP_WORDS[@]:0:$COMP_CWORD} ${cur} --generate-bash-completion )
|
||||||
|
else
|
||||||
|
opts=$( ${COMP_WORDS[@]:0:$COMP_CWORD} --generate-bash-completion )
|
||||||
|
fi
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "$PROG" ] && [ ! "$(command -v gitea &> /dev/null)" ] ; then
|
||||||
|
complete -o bashdefault -o default -o nospace -F _cli_bash_autocomplete gitea
|
||||||
|
elif [ -z "$PROG" ]; then
|
||||||
|
complete -o bashdefault -o default -o nospace -F _cli_bash_autocomplete ./gitea
|
||||||
|
complete -o bashdefault -o default -o nospace -F _cli_bash_autocomplete "$PWD/gitea"
|
||||||
|
else
|
||||||
|
complete -o bashdefault -o default -o nospace -F _cli_bash_autocomplete "$PROG"
|
||||||
|
unset PROG
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
30
contrib/autocompletion/zsh_autocomplete
Normal file
30
contrib/autocompletion/zsh_autocomplete
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
#compdef ${PROG:=gitea}
|
||||||
|
|
||||||
|
|
||||||
|
# Heavily inspired by https://github.com/urfave/cli
|
||||||
|
|
||||||
|
_cli_zsh_autocomplete() {
|
||||||
|
|
||||||
|
local -a opts
|
||||||
|
local cur
|
||||||
|
cur=${words[-1]}
|
||||||
|
if [[ "$cur" == "-"* ]]; then
|
||||||
|
opts=("${(@f)$(_CLI_ZSH_AUTOCOMPLETE_HACK=1 ${words[@]:0:#words[@]-1} ${cur} --generate-bash-completion)}")
|
||||||
|
else
|
||||||
|
opts=("${(@f)$(_CLI_ZSH_AUTOCOMPLETE_HACK=1 ${words[@]:0:#words[@]-1} --generate-bash-completion)}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${opts[1]}" != "" ]]; then
|
||||||
|
_describe 'values' opts
|
||||||
|
else
|
||||||
|
_files
|
||||||
|
fi
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z $PROG ] ; then
|
||||||
|
compdef _cli_zsh_autocomplete gitea
|
||||||
|
else
|
||||||
|
compdef _cli_zsh_autocomplete $(basename $PROG)
|
||||||
|
fi
|
|
@ -129,6 +129,16 @@ export GITEA_WORK_DIR=/var/lib/gitea/
|
||||||
cp gitea /usr/local/bin/gitea
|
cp gitea /usr/local/bin/gitea
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Adding bash/zsh autocompletion (from 1.19)
|
||||||
|
|
||||||
|
A script to enable bash-completion can be found at [`contrib/autocompletion/bash_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete). This can be copied to `/usr/share/bash-completion/completions/gitea`
|
||||||
|
or sourced within your `.bashrc`.
|
||||||
|
|
||||||
|
Similarly a script for zsh-completion can be found at [`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete). This can be copied to `/usr/share/zsh/_gitea` or sourced within your
|
||||||
|
`.zshrc`.
|
||||||
|
|
||||||
|
YMMV and these scripts may need further improvement.
|
||||||
|
|
||||||
## Running Gitea
|
## Running Gitea
|
||||||
|
|
||||||
After you complete the above steps, you can run Gitea two ways:
|
After you complete the above steps, you can run Gitea two ways:
|
||||||
|
|
|
@ -193,3 +193,13 @@ LDFLAGS="-linkmode external -extldflags '-static' $LDFLAGS" TAGS="netgo osusergo
|
||||||
```
|
```
|
||||||
|
|
||||||
This can be combined with `CC`, `GOOS`, and `GOARCH` as above.
|
This can be combined with `CC`, `GOOS`, and `GOARCH` as above.
|
||||||
|
|
||||||
|
### Adding bash/zsh autocompletion (from 1.19)
|
||||||
|
|
||||||
|
A script to enable bash-completion can be found at [`contrib/autocompletion/bash_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete). This should be altered as appropriate and can be `source` in your `.bashrc`
|
||||||
|
or copied as `/usr/share/bash-completion/completions/gitea`.
|
||||||
|
|
||||||
|
Similary a script for zsh-completion can be found at [`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete). This can be copied to `/usr/share/zsh/_gitea` or sourced within your
|
||||||
|
`.zshrc`.
|
||||||
|
|
||||||
|
YMMV and these scripts may need further improvement.
|
||||||
|
|
2
main.go
2
main.go
|
@ -113,6 +113,8 @@ arguments - which can alternatively be run by running the subcommand web.`
|
||||||
setFlagsAndBeforeOnSubcommands(&app.Commands[i], defaultFlags, establishCustomPath)
|
setFlagsAndBeforeOnSubcommands(&app.Commands[i], defaultFlags, establishCustomPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
app.EnableBashCompletion = true
|
||||||
|
|
||||||
err := app.Run(os.Args)
|
err := app.Run(os.Args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Failed to run app with %s: %v", os.Args, err)
|
log.Fatal("Failed to run app with %s: %v", os.Args, err)
|
||||||
|
|
Loading…
Add table
Reference in a new issue