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

function __fish_qrtool_needs_command
	# Figure out if the current invocation already has a command.
	set -l cmd (commandline -opc)
	set -e cmd[1]
	argparse -s (__fish_qrtool_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_qrtool_using_subcommand
	set -l cmd (__fish_qrtool_needs_command)
	test -z "$cmd"
	and return 1
	contains -- $cmd[1] $argv
end

complete -c qrtool -n "__fish_qrtool_needs_command" -l generate-completion -d 'Generate shell completion' -r -f -a "{bash\t'Bash',elvish\t'Elvish',fish\t'fish',nushell\t'Nushell',powershell\t'PowerShell',zsh\t'Zsh'}"
complete -c qrtool -n "__fish_qrtool_needs_command" -s h -l help -d 'Print help (see more with \'--help\')'
complete -c qrtool -n "__fish_qrtool_needs_command" -s V -l version -d 'Print version'
complete -c qrtool -n "__fish_qrtool_needs_command" -f -a "encode" -d 'Encode input data in a QR code'
complete -c qrtool -n "__fish_qrtool_needs_command" -f -a "enc" -d 'Encode input data in a QR code'
complete -c qrtool -n "__fish_qrtool_needs_command" -f -a "e" -d 'Encode input data in a QR code'
complete -c qrtool -n "__fish_qrtool_needs_command" -f -a "decode" -d 'Detect and decode a QR code'
complete -c qrtool -n "__fish_qrtool_needs_command" -f -a "dec" -d 'Detect and decode a QR code'
complete -c qrtool -n "__fish_qrtool_needs_command" -f -a "d" -d 'Detect and decode a QR code'
complete -c qrtool -n "__fish_qrtool_needs_command" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -s o -l output -d 'Output the result to a file' -r -F
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -s r -l read-from -d 'Read input data from a file' -r -F
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -s s -l size -d 'The module size in pixels' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -s l -l error-correction-level -l level -d 'Error correction level' -r -f -a "{l\t'Level L',m\t'Level M',q\t'Level Q',h\t'Level H'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -s v -l symbol-version -l symversion -d 'The version of the symbol' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -s m -l margin -d 'The width of margin' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -s t -l type -d 'The format of the output' -r -f -a "{png\t'Portable Network Graphics',svg\t'Scalable Vector Graphics',pic\t'PIC markup language',ansi\t'To the terminal using 4-bit ANSI escape sequences',ansi256\t'To the terminal using 8-bit ANSI escape sequences',ansi-true-color\t'To the terminal using 24-bit ANSI escape sequences',ascii\t'To the terminal as ASCII string',ascii-invert\t'To the terminal as ASCII string',unicode\t'To the terminal as UTF-8 string',unicode-invert\t'To the terminal as UTF-8 string'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -l optimize-png -d 'Set the optimization level for a PNG image' -r -f -a "{0\t'Level 0',1\t'Level 1',2\t'Level 2',3\t'Level 3',4\t'Level 4',5\t'Level 5',6\t'Level 6'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -l zopfli -d 'Use Zopfli to compress PNG image' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -l mode -d 'The mode of the output' -r -f -a "{numeric\t'All digits',alphanumeric\t'Alphanumerics and few symbols',byte\t'Arbitrary binary data',kanji\t'Shift JIS text'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -l variant -d 'The type of QR code' -r -f -a "{normal\t'Normal QR code',micro\t'Micro QR code'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -l foreground -d 'Foreground color' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -l background -d 'Background color' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -l verbose -d 'Also print the metadata'
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -s h -l help -d 'Print help (see more with \'--help\')'
complete -c qrtool -n "__fish_qrtool_using_subcommand encode" -s V -l version -d 'Print version'
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -s o -l output -d 'Output the result to a file' -r -F
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -s r -l read-from -d 'Read input data from a file' -r -F
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -s s -l size -d 'The module size in pixels' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -s l -l error-correction-level -l level -d 'Error correction level' -r -f -a "{l\t'Level L',m\t'Level M',q\t'Level Q',h\t'Level H'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -s v -l symbol-version -l symversion -d 'The version of the symbol' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -s m -l margin -d 'The width of margin' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -s t -l type -d 'The format of the output' -r -f -a "{png\t'Portable Network Graphics',svg\t'Scalable Vector Graphics',pic\t'PIC markup language',ansi\t'To the terminal using 4-bit ANSI escape sequences',ansi256\t'To the terminal using 8-bit ANSI escape sequences',ansi-true-color\t'To the terminal using 24-bit ANSI escape sequences',ascii\t'To the terminal as ASCII string',ascii-invert\t'To the terminal as ASCII string',unicode\t'To the terminal as UTF-8 string',unicode-invert\t'To the terminal as UTF-8 string'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -l optimize-png -d 'Set the optimization level for a PNG image' -r -f -a "{0\t'Level 0',1\t'Level 1',2\t'Level 2',3\t'Level 3',4\t'Level 4',5\t'Level 5',6\t'Level 6'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -l zopfli -d 'Use Zopfli to compress PNG image' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -l mode -d 'The mode of the output' -r -f -a "{numeric\t'All digits',alphanumeric\t'Alphanumerics and few symbols',byte\t'Arbitrary binary data',kanji\t'Shift JIS text'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -l variant -d 'The type of QR code' -r -f -a "{normal\t'Normal QR code',micro\t'Micro QR code'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -l foreground -d 'Foreground color' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -l background -d 'Background color' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -l verbose -d 'Also print the metadata'
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -s h -l help -d 'Print help (see more with \'--help\')'
complete -c qrtool -n "__fish_qrtool_using_subcommand enc" -s V -l version -d 'Print version'
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -s o -l output -d 'Output the result to a file' -r -F
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -s r -l read-from -d 'Read input data from a file' -r -F
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -s s -l size -d 'The module size in pixels' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -s l -l error-correction-level -l level -d 'Error correction level' -r -f -a "{l\t'Level L',m\t'Level M',q\t'Level Q',h\t'Level H'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -s v -l symbol-version -l symversion -d 'The version of the symbol' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -s m -l margin -d 'The width of margin' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -s t -l type -d 'The format of the output' -r -f -a "{png\t'Portable Network Graphics',svg\t'Scalable Vector Graphics',pic\t'PIC markup language',ansi\t'To the terminal using 4-bit ANSI escape sequences',ansi256\t'To the terminal using 8-bit ANSI escape sequences',ansi-true-color\t'To the terminal using 24-bit ANSI escape sequences',ascii\t'To the terminal as ASCII string',ascii-invert\t'To the terminal as ASCII string',unicode\t'To the terminal as UTF-8 string',unicode-invert\t'To the terminal as UTF-8 string'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -l optimize-png -d 'Set the optimization level for a PNG image' -r -f -a "{0\t'Level 0',1\t'Level 1',2\t'Level 2',3\t'Level 3',4\t'Level 4',5\t'Level 5',6\t'Level 6'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -l zopfli -d 'Use Zopfli to compress PNG image' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -l mode -d 'The mode of the output' -r -f -a "{numeric\t'All digits',alphanumeric\t'Alphanumerics and few symbols',byte\t'Arbitrary binary data',kanji\t'Shift JIS text'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -l variant -d 'The type of QR code' -r -f -a "{normal\t'Normal QR code',micro\t'Micro QR code'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -l foreground -d 'Foreground color' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -l background -d 'Background color' -r
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -l verbose -d 'Also print the metadata'
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -s h -l help -d 'Print help (see more with \'--help\')'
complete -c qrtool -n "__fish_qrtool_using_subcommand e" -s V -l version -d 'Print version'
complete -c qrtool -n "__fish_qrtool_using_subcommand decode" -s t -l type -d 'The format of the input' -r -f -a "{bmp\t'Windows Bitmap',dds\t'DirectDraw Surface',farbfeld\t'Farbfeld',gif\t'Graphics Interchange Format',hdr\t'Radiance RGBE',ico\t'ICO file format',jpeg\t'JPEG',openexr\t'OpenEXR',png\t'Portable Network Graphics',pnm\t'Portable Anymap Format',qoi\t'Quite OK Image Format',svg\t'Scalable Vector Graphics',tga\t'Truevision TGA',tiff\t'Tag Image File Format',webp\t'WebP',xbm\t'X BitMap'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand decode" -l verbose -d 'Also print the metadata'
complete -c qrtool -n "__fish_qrtool_using_subcommand decode" -l metadata -d 'Print only the metadata'
complete -c qrtool -n "__fish_qrtool_using_subcommand decode" -s h -l help -d 'Print help (see more with \'--help\')'
complete -c qrtool -n "__fish_qrtool_using_subcommand decode" -s V -l version -d 'Print version'
complete -c qrtool -n "__fish_qrtool_using_subcommand dec" -s t -l type -d 'The format of the input' -r -f -a "{bmp\t'Windows Bitmap',dds\t'DirectDraw Surface',farbfeld\t'Farbfeld',gif\t'Graphics Interchange Format',hdr\t'Radiance RGBE',ico\t'ICO file format',jpeg\t'JPEG',openexr\t'OpenEXR',png\t'Portable Network Graphics',pnm\t'Portable Anymap Format',qoi\t'Quite OK Image Format',svg\t'Scalable Vector Graphics',tga\t'Truevision TGA',tiff\t'Tag Image File Format',webp\t'WebP',xbm\t'X BitMap'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand dec" -l verbose -d 'Also print the metadata'
complete -c qrtool -n "__fish_qrtool_using_subcommand dec" -l metadata -d 'Print only the metadata'
complete -c qrtool -n "__fish_qrtool_using_subcommand dec" -s h -l help -d 'Print help (see more with \'--help\')'
complete -c qrtool -n "__fish_qrtool_using_subcommand dec" -s V -l version -d 'Print version'
complete -c qrtool -n "__fish_qrtool_using_subcommand d" -s t -l type -d 'The format of the input' -r -f -a "{bmp\t'Windows Bitmap',dds\t'DirectDraw Surface',farbfeld\t'Farbfeld',gif\t'Graphics Interchange Format',hdr\t'Radiance RGBE',ico\t'ICO file format',jpeg\t'JPEG',openexr\t'OpenEXR',png\t'Portable Network Graphics',pnm\t'Portable Anymap Format',qoi\t'Quite OK Image Format',svg\t'Scalable Vector Graphics',tga\t'Truevision TGA',tiff\t'Tag Image File Format',webp\t'WebP',xbm\t'X BitMap'}"
complete -c qrtool -n "__fish_qrtool_using_subcommand d" -l verbose -d 'Also print the metadata'
complete -c qrtool -n "__fish_qrtool_using_subcommand d" -l metadata -d 'Print only the metadata'
complete -c qrtool -n "__fish_qrtool_using_subcommand d" -s h -l help -d 'Print help (see more with \'--help\')'
complete -c qrtool -n "__fish_qrtool_using_subcommand d" -s V -l version -d 'Print version'
complete -c qrtool -n "__fish_qrtool_using_subcommand help; and not __fish_seen_subcommand_from encode decode help" -f -a "encode" -d 'Encode input data in a QR code'
complete -c qrtool -n "__fish_qrtool_using_subcommand help; and not __fish_seen_subcommand_from encode decode help" -f -a "decode" -d 'Detect and decode a QR code'
complete -c qrtool -n "__fish_qrtool_using_subcommand help; and not __fish_seen_subcommand_from encode decode help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
