152 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| # Bash completion for the Godot editor
 | |
| # To use it, install this file in `/etc/bash_completion.d` then restart your shell.
 | |
| # You can also `source` this file directly in your shell startup file.
 | |
| #
 | |
| # Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md).
 | |
| # Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.
 | |
| #
 | |
| # Permission is hereby granted, free of charge, to any person obtaining a copy
 | |
| # of this software and associated documentation files (the "Software"), to deal
 | |
| # in the Software without restriction, including without limitation the rights
 | |
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | |
| # copies of the Software, and to permit persons to whom the Software is
 | |
| # furnished to do so, subject to the following conditions:
 | |
| #
 | |
| # The above copyright notice and this permission notice shall be included in all
 | |
| # copies or substantial portions of the Software.
 | |
| #
 | |
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | |
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | |
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | |
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | |
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | |
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | |
| # SOFTWARE.
 | |
| 
 | |
| _complete_godot_options() {
 | |
|   # Since Bash doesn't support option descriptions in autocompletion,
 | |
|   # only display long options to be more descriptive.
 | |
|   # shellcheck disable=SC2207
 | |
|   COMPREPLY=($(compgen -W " \
 | |
| --help
 | |
| --version
 | |
| --verbose
 | |
| --quiet
 | |
| --editor
 | |
| --project-manager
 | |
| --debug-server
 | |
| --quit
 | |
| --language
 | |
| --path
 | |
| --upwards
 | |
| --main-pack
 | |
| --render-thread
 | |
| --remote-fs
 | |
| --remote-fs-password
 | |
| --audio-driver
 | |
| --audio-output-latency
 | |
| --display-driver
 | |
| --rendering-method
 | |
| --rendering-driver
 | |
| --gpu-index
 | |
| --text-driver
 | |
| --tablet-driver
 | |
| --headless
 | |
| --log-file
 | |
| --write-movie
 | |
| --fullscreen
 | |
| --maximized
 | |
| --windowed
 | |
| --always-on-top
 | |
| --resolution
 | |
| --position
 | |
| --single-window
 | |
| --xr-mode
 | |
| --debug
 | |
| --breakpoints
 | |
| --profiling
 | |
| --gpu-profile
 | |
| --gpu-validation
 | |
| --gpu-abort
 | |
| --remote-debug
 | |
| --debug-collisions
 | |
| --debug-navigation
 | |
| --debug-stringnames
 | |
| --max-fps
 | |
| --frame-delay
 | |
| --time-scale
 | |
| --disable-vsync
 | |
| --disable-render-loop
 | |
| --disable-crash-handler
 | |
| --fixed-fps
 | |
| --print-fps
 | |
| --script
 | |
| --check-only
 | |
| --export-release
 | |
| --export-debug
 | |
| --export-pack
 | |
| --convert-3to4
 | |
| --validate-conversion-3to4
 | |
| --doctool
 | |
| --no-docbase
 | |
| --build-solutions
 | |
| --dump-gdextension-interface
 | |
| --dump-extension-api
 | |
| --benchmark
 | |
| --benchmark-file
 | |
| --test
 | |
| " -- "$1"))
 | |
| }
 | |
| 
 | |
| _complete_godot_bash() {
 | |
|   local cur="${COMP_WORDS[$COMP_CWORD]}" prev
 | |
| 
 | |
|   # Complete options or the positional argument.
 | |
|   if [[ $cur == -* ]]; then
 | |
|     _complete_godot_options "$cur"
 | |
|   else
 | |
|     local IFS=$'\n\t'
 | |
|     # shellcheck disable=SC2207
 | |
|     COMPREPLY=($(compgen -f -X "!*.@(scn|tscn|escn|godot)" -- "$cur"))
 | |
|   fi
 | |
| 
 | |
|   # If the array is accessed out of bounds (which will happen for the first argument),
 | |
|   # `$prev` will be an empty string and won't match any of the conditions below.
 | |
|   prev="${COMP_WORDS[$((COMP_CWORD-1))]}"
 | |
| 
 | |
|   # Complete option values.
 | |
|   if [[ $prev == "--render-thread" ]]; then
 | |
|     local IFS=$' \n\t'
 | |
|     # shellcheck disable=SC2207
 | |
|     COMPREPLY=($(compgen -W "unsafe safe separate" -- "$cur"))
 | |
|   elif [[ $prev == "--rendering-method" ]]; then
 | |
|     local IFS=$' \n\t'
 | |
|     # shellcheck disable=SC2207
 | |
|     COMPREPLY=($(compgen -W "forward_plus mobile gl_compatibility" -- "$cur"))
 | |
|   elif [[ $prev == "--rendering-driver" ]]; then
 | |
|     local IFS=$' \n\t'
 | |
|     # shellcheck disable=SC2207
 | |
|     COMPREPLY=($(compgen -W "vulkan opengl3 dummy" -- "$cur"))
 | |
| 	elif [[ $prev == "--xr-mode" ]]; then
 | |
|     local IFS=$' \n\t'
 | |
|     # shellcheck disable=SC2207
 | |
|     COMPREPLY=($(compgen -W "default off on" -- "$cur"))
 | |
|   elif [[ $prev == "--path" || $prev == "--doctool" ]]; then
 | |
|     local IFS=$'\n\t'
 | |
|     # shellcheck disable=SC2207
 | |
|     COMPREPLY=($(compgen -d -- "$cur"))
 | |
|   elif [[ $prev == "--main-pack" ]]; then
 | |
|     local IFS=$'\n\t'
 | |
|     # shellcheck disable=SC2207
 | |
|     COMPREPLY=($(compgen -f -X "!*.@(pck|zip)" -- "$cur"))
 | |
|   elif [[ $prev == "-s" || $prev == "--script" ]]; then
 | |
|     local IFS=$'\n\t'
 | |
|     # shellcheck disable=SC2207
 | |
|     COMPREPLY=($(compgen -f -X "!*.gd" -- "$cur"))
 | |
|   fi
 | |
| }
 | |
| 
 | |
| complete -o filenames -F _complete_godot_bash godot
 | 
