mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 18:12:20 +01:00 
			
		
		
		
	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
					
				| @ -64,5 +64,7 @@ CMD ["/bin/s6-svscan", "/etc/s6"] | ||||
| 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/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 /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 --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 /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 644 /etc/profile.d/gitea_bash_autocomplete.sh | ||||
| 
 | ||||
| #git:git | ||||
| 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 | ||||
| ``` | ||||
| 
 | ||||
| ### 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 | ||||
| 
 | ||||
| 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. | ||||
| 
 | ||||
| ### 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) | ||||
| 	} | ||||
| 
 | ||||
| 	app.EnableBashCompletion = true | ||||
| 
 | ||||
| 	err := app.Run(os.Args) | ||||
| 	if err != nil { | ||||
| 		log.Fatal("Failed to run app with %s: %v", os.Args, err) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user