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: a101211279
<1012112796@qq.com>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
tags/v1.19.0-rc0
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 |
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 |
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. |
#! /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 | |||||
#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 |
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: |
``` | ``` | ||||
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. |
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) |