# Print an optspec for argparse to handle cmd's options that are independent of any subcommand.
function __fish_dra_global_optspecs
	string join \n h/help V/version
end

function __fish_dra_needs_command
	# Figure out if the current invocation already has a command.
	set -l cmd (commandline -opc)
	set -e cmd[1]
	argparse -s (__fish_dra_global_optspecs) -- $cmd 2>/dev/null
	or return
	if set -q argv[1]
		# Also print the command, so this can be used to figure out what it is.
		echo $argv[1]
		return 1
	end
	return 0
end

function __fish_dra_using_subcommand
	set -l cmd (__fish_dra_needs_command)
	test -z "$cmd"
	and return 1
	contains -- $cmd[1] $argv
end

complete -c dra -n "__fish_dra_needs_command" -s h -l help -d 'Print help (see more with \'--help\')'
complete -c dra -n "__fish_dra_needs_command" -s V -l version -d 'Print version'
complete -c dra -n "__fish_dra_needs_command" -f -a "download" -d 'Select and download an asset'
complete -c dra -n "__fish_dra_needs_command" -f -a "untag" -d 'Select an asset and generate an untagged version of it'
complete -c dra -n "__fish_dra_needs_command" -f -a "completion" -d 'Generate shell completion'
complete -c dra -n "__fish_dra_needs_command" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c dra -n "__fish_dra_using_subcommand download" -s s -l select -d 'Select and download the first asset that matches a given pattern.' -r
complete -c dra -n "__fish_dra_using_subcommand download" -s t -l tag -d 'Set the tag name for fetching a specific release. Default value is the latest release' -r
complete -c dra -n "__fish_dra_using_subcommand download" -s o -l output -d 'Save asset to custom path (file or directory). Default path is current working directory and the name of the asset. When used with install feature, it will save the executable to the specified path when applicable. If you install multiple executables, it must be a directory path.' -r -F
complete -c dra -n "__fish_dra_using_subcommand download" -s I -l install-file -d 'Install downloaded asset and select which executable to install from a tar/zip archive. You can install multiple executables by specifying `-I/--install-file` multiple times.' -r
complete -c dra -n "__fish_dra_using_subcommand download" -s a -l automatic -d 'Automatically select and download an asset based on your operating system and architecture'
complete -c dra -n "__fish_dra_using_subcommand download" -s i -l install -d 'Install downloaded asset'
complete -c dra -n "__fish_dra_using_subcommand download" -s h -l help -d 'Print help (see more with \'--help\')'
complete -c dra -n "__fish_dra_using_subcommand untag" -s h -l help -d 'Print help'
complete -c dra -n "__fish_dra_using_subcommand completion" -s h -l help -d 'Print help'
complete -c dra -n "__fish_dra_using_subcommand help; and not __fish_seen_subcommand_from download untag completion help" -f -a "download" -d 'Select and download an asset'
complete -c dra -n "__fish_dra_using_subcommand help; and not __fish_seen_subcommand_from download untag completion help" -f -a "untag" -d 'Select an asset and generate an untagged version of it'
complete -c dra -n "__fish_dra_using_subcommand help; and not __fish_seen_subcommand_from download untag completion help" -f -a "completion" -d 'Generate shell completion'
complete -c dra -n "__fish_dra_using_subcommand help; and not __fish_seen_subcommand_from download untag completion help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
