From 28d766b0696fdf3637bc14ad5465b4f0c590100b Mon Sep 17 00:00:00 2001 From: Amolith Date: Wed, 29 Oct 2025 18:55:10 -0600 Subject: [PATCH] feat(bin/fish): add svu/completions --- dot_config/bin/encrypted_config.json.age | 376 ++++++++++--------- dot_config/private_fish/completions/svu.fish | 235 ++++++++++++ 2 files changed, 432 insertions(+), 179 deletions(-) create mode 100644 dot_config/private_fish/completions/svu.fish diff --git a/dot_config/bin/encrypted_config.json.age b/dot_config/bin/encrypted_config.json.age index 2a4424291838505a582ee1df730a6edb5ac54e6b..e3c99f1908bfb910bd3090aafdb726f28687df42 100644 --- a/dot_config/bin/encrypted_config.json.age +++ b/dot_config/bin/encrypted_config.json.age @@ -1,181 +1,199 @@ -----BEGIN AGE ENCRYPTED FILE----- -YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IEhBV2NqUSBBZ2QwcGpX -bFB2MWpVM3hheE5vcVA3enovK3V3NGQ2MVhZSzdJdWk4bjk3dQozekpiMkdiRFlS -NG5JTnVOVGxwT2UyNEtSOUxUU3R3U0NtNGhSM0R4N2d3Ci0+IHBpdi1wMjU2IHBE -YXpSZyBBcVB6TkROeFRhd0xoNTBGank5QzlHMllORGw0RlRaNVlGUEhQWlk3cnhk -TAo5Z0EwdzFtdG5tN0dZYVpGT1ZYaTdiNVhpWWN3ZDRUVlRqemQ2OWFKTlBVCi0+ -IFUjbCQ/LWdyZWFzZSBBVipcTSAqRApTU0NqRi82eDVoU1YzWUdUS3hLM2xNQlJj -eGpIVEVnUFdDZHBxUC9VcVpPK1FJTUhPVlUyd1Z6TG54Y0h4eTlVCkFXTzlLcTk0 -RFdpaFJZUjNrUlBhbUVzbWR2aDhOd21xS3YvTVQ0VDlyOGttVnlaYi92d2E0VGsy -YUFBCi0tLSBKNmlaN3NuSk5XZkZLb2o0S3M5ZlVvaEJXMzRaRjJwQ2tMbytUVElj -dW9FCthvjmrD2Dgs/iDgv26GndVw0uPbuWF5LArI2b47RUIeJb+P/9EqXqF5H5kQ -yEEsMsPZSoWpxY/h4Bmn4ltIwNndTPSCgxCk+wCkc6RR6MNsi5EcF8haI8rcSc76 -6eMNq+ZC8Zj0XGtjje16Zw8mnx3m74+ewm6JqbEwd7Zkaf7ylTsLa7G3JvPw0Fan -8vJ4dyADKafCQHVHDKlys3vFes9t6lzKNzlektoQePRiJePUHZkKxeDguFOXkErK -dEWcel7MH/53dTnun8olL0FIn8YIh16kMo9ohX5oDZARUouqzDTwFkfnGVOC0BPm -ujoNw4GxuruczjP/zrixIYwtwRHt1wU9WJytW2hVrWJkl7RjVcZIAJzN+ETbNkx5 -R9XPews9/4g9c423c6JxXPbX7sXwlKDIVrm4HXitDeuXKX+rSgxqCl59NK9qsARM -ic76P6cQU8oYe7L++7yTNRYwdzAPwC80S+EStANkXhx4ruclpUYbxmYHKdUz5blr -7d8FH8sDtwGMWp3WAyTh3tghbIuNVubAz7sJ9gUZwgyVKtOVnF5O+HJBY1bxqY3f -zaL9H62HYh5MBJ1RhST+gkObKDgDW+RO9QPVh4/MDRipiQ1+TUOutAbeTVW98kW0 -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 -J8fo6xt29o9OeNbLiMVjsAjC2V/F1v3Ak+UZWWD8o0LEAVQ0U5OhuUnNDN5NHKA7 -gCr5cwVJVgUnFpub+hQV6VxQYm/wX9DMAMSXVxNjavbPfJ9XhWAGcwMSsghPNiRj -xrlQZbmQ8PUDlDWpKC9UgpczM4aTWa11TZFiGHYyAKkcljKVlTXYVso5kCNAaSp1 -l/e4lopZjuuhnOxof6VaXs08zg76rKvnhT5fncvE2zCibpLtU7/0lztMfvBx4IYh -sZrSrw1JZZDO+mFdlpFFokFd6Llj9FJcQZEeCm/NRlj3kFoVDJH4CLQDZMdCEYOp -rdaUu87Uovw8YEG12Qkp92WefLlTQam8gCneFjpaA1VQ+kLzIepLNXr1G1b5rp8q -L0Jm1+Zd0TZyh/XKbiNYjmAn0ZWRas7Y0X/R/3/aTCrX8+XO1rAa1m3sbKqL5jDL -jOAkgZctk0s9hzOvjOUkOKkXpRmLqw58z1crfh9SETliDg8NZr9qT9Y= +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IEhBV2NqUSBBbm44V2tN +THI5aXI3RUhwcXV5L0F5ZVJ4amUzRzRRSnpCUFpIbTF3MDZWTAozeWxsNDV5VUYx +a1QwVkhLODNNNGgzYmVrT3I1MllBZmtKWlAxZ2FxUDdFCi0+IHBpdi1wMjU2IHBE +YXpSZyBBcUFGVVl6cGk5S1pNUHowSXJEM21scEFBQVFUZVFSc1RzYWpaczY0Z2dF +OApnVVhNOTlkZ2hiblVmUE9SczBETXBqL3FQSSsrZGs2Y2pkOSt1QzNsdVJrCi0+ +ID9fJCNPLWdyZWFzZSBkU2RpbThkIHBCSSBNNSU/dEdxCkxpZThHSm50YUNNMmlI +b3ZLZUdrL1FjbWRSNzRwV05jemRUMjNhYzYvSEoveWFGVk1DN1lvWkhtYkxmQytx +K2oKQ1dHazJPMnMydUozS1hHaHV3K2xoUjMybjVDSDBkQTcxTXIwN3cKLS0tIFE4 +M3drMSs4djVUWWJScnNlbUNHb2hJWTEwZk9SUW1iYVpqckFzcUJUZTQKtuDNTRPr +QFPnzsGnM4F8vkLZcZoSR2s6R5c0VG++WTktIMoLvgRcYHtZmsUNzUI1vJ0K1EB4 +bqlTg6mwasFeqfmdNSdhAs5aWCQRyqEKfsC8aZI4KJ74h18du97xqiqwvPEoMzEn +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 +Qqc= -----END AGE ENCRYPTED FILE----- diff --git a/dot_config/private_fish/completions/svu.fish b/dot_config/private_fish/completions/svu.fish new file mode 100644 index 0000000000000000000000000000000000000000..74a9d62f367e4228c705870b2e7d1d804e8a77cf --- /dev/null +++ b/dot_config/private_fish/completions/svu.fish @@ -0,0 +1,235 @@ +# fish completion for svu -*- shell-script -*- + +function __svu_debug + set -l file "$BASH_COMP_DEBUG_FILE" + if test -n "$file" + echo "$argv" >> $file + end +end + +function __svu_perform_completion + __svu_debug "Starting __svu_perform_completion" + + # Extract all args except the last one + set -l args (commandline -opc) + # Extract the last arg and escape it in case it is a space + set -l lastArg (string escape -- (commandline -ct)) + + __svu_debug "args: $args" + __svu_debug "last arg: $lastArg" + + # Disable ActiveHelp which is not supported for fish shell + set -l requestComp "SVU_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg" + + __svu_debug "Calling $requestComp" + set -l results (eval $requestComp 2> /dev/null) + + # Some programs may output extra empty lines after the directive. + # Let's ignore them or else it will break completion. + # Ref: https://github.com/spf13/cobra/issues/1279 + for line in $results[-1..1] + if test (string trim -- $line) = "" + # Found an empty line, remove it + set results $results[1..-2] + else + # Found non-empty line, we have our proper output + break + end + end + + set -l comps $results[1..-2] + set -l directiveLine $results[-1] + + # For Fish, when completing a flag with an = (e.g., -n=) + # completions must be prefixed with the flag + set -l flagPrefix (string match -r -- '-.*=' "$lastArg") + + __svu_debug "Comps: $comps" + __svu_debug "DirectiveLine: $directiveLine" + __svu_debug "flagPrefix: $flagPrefix" + + for comp in $comps + printf "%s%s\n" "$flagPrefix" "$comp" + end + + printf "%s\n" "$directiveLine" +end + +# this function limits calls to __svu_perform_completion, by caching the result behind $__svu_perform_completion_once_result +function __svu_perform_completion_once + __svu_debug "Starting __svu_perform_completion_once" + + if test -n "$__svu_perform_completion_once_result" + __svu_debug "Seems like a valid result already exists, skipping __svu_perform_completion" + return 0 + end + + set --global __svu_perform_completion_once_result (__svu_perform_completion) + if test -z "$__svu_perform_completion_once_result" + __svu_debug "No completions, probably due to a failure" + return 1 + end + + __svu_debug "Performed completions and set __svu_perform_completion_once_result" + return 0 +end + +# this function is used to clear the $__svu_perform_completion_once_result variable after completions are run +function __svu_clear_perform_completion_once_result + __svu_debug "" + __svu_debug "========= clearing previously set __svu_perform_completion_once_result variable ==========" + set --erase __svu_perform_completion_once_result + __svu_debug "Successfully erased the variable __svu_perform_completion_once_result" +end + +function __svu_requires_order_preservation + __svu_debug "" + __svu_debug "========= checking if order preservation is required ==========" + + __svu_perform_completion_once + if test -z "$__svu_perform_completion_once_result" + __svu_debug "Error determining if order preservation is required" + return 1 + end + + set -l directive (string sub --start 2 $__svu_perform_completion_once_result[-1]) + __svu_debug "Directive is: $directive" + + set -l shellCompDirectiveKeepOrder 32 + set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2) + __svu_debug "Keeporder is: $keeporder" + + if test $keeporder -ne 0 + __svu_debug "This does require order preservation" + return 0 + end + + __svu_debug "This doesn't require order preservation" + return 1 +end + + +# This function does two things: +# - Obtain the completions and store them in the global __svu_comp_results +# - Return false if file completion should be performed +function __svu_prepare_completions + __svu_debug "" + __svu_debug "========= starting completion logic ==========" + + # Start fresh + set --erase __svu_comp_results + + __svu_perform_completion_once + __svu_debug "Completion results: $__svu_perform_completion_once_result" + + if test -z "$__svu_perform_completion_once_result" + __svu_debug "No completion, probably due to a failure" + # Might as well do file completion, in case it helps + return 1 + end + + set -l directive (string sub --start 2 $__svu_perform_completion_once_result[-1]) + set --global __svu_comp_results $__svu_perform_completion_once_result[1..-2] + + __svu_debug "Completions are: $__svu_comp_results" + __svu_debug "Directive is: $directive" + + set -l shellCompDirectiveError 1 + set -l shellCompDirectiveNoSpace 2 + set -l shellCompDirectiveNoFileComp 4 + set -l shellCompDirectiveFilterFileExt 8 + set -l shellCompDirectiveFilterDirs 16 + + if test -z "$directive" + set directive 0 + end + + set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2) + if test $compErr -eq 1 + __svu_debug "Received error directive: aborting." + # Might as well do file completion, in case it helps + return 1 + end + + set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2) + set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2) + if test $filefilter -eq 1; or test $dirfilter -eq 1 + __svu_debug "File extension filtering or directory filtering not supported" + # Do full file completion instead + return 1 + end + + set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2) + set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2) + + __svu_debug "nospace: $nospace, nofiles: $nofiles" + + # If we want to prevent a space, or if file completion is NOT disabled, + # we need to count the number of valid completions. + # To do so, we will filter on prefix as the completions we have received + # may not already be filtered so as to allow fish to match on different + # criteria than the prefix. + if test $nospace -ne 0; or test $nofiles -eq 0 + set -l prefix (commandline -t | string escape --style=regex) + __svu_debug "prefix: $prefix" + + set -l completions (string match -r -- "^$prefix.*" $__svu_comp_results) + set --global __svu_comp_results $completions + __svu_debug "Filtered completions are: $__svu_comp_results" + + # Important not to quote the variable for count to work + set -l numComps (count $__svu_comp_results) + __svu_debug "numComps: $numComps" + + if test $numComps -eq 1; and test $nospace -ne 0 + # We must first split on \t to get rid of the descriptions to be + # able to check what the actual completion will be. + # We don't need descriptions anyway since there is only a single + # real completion which the shell will expand immediately. + set -l split (string split --max 1 \t $__svu_comp_results[1]) + + # Fish won't add a space if the completion ends with any + # of the following characters: @=/:., + set -l lastChar (string sub -s -1 -- $split) + if not string match -r -q "[@=/:.,]" -- "$lastChar" + # In other cases, to support the "nospace" directive we trick the shell + # by outputting an extra, longer completion. + __svu_debug "Adding second completion to perform nospace directive" + set --global __svu_comp_results $split[1] $split[1]. + __svu_debug "Completions are now: $__svu_comp_results" + end + end + + if test $numComps -eq 0; and test $nofiles -eq 0 + # To be consistent with bash and zsh, we only trigger file + # completion when there are no other completions + __svu_debug "Requesting file completion" + return 1 + end + end + + return 0 +end + +# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves +# so we can properly delete any completions provided by another script. +# Only do this if the program can be found, or else fish may print some errors; besides, +# the existing completions will only be loaded if the program can be found. +if type -q "svu" + # The space after the program name is essential to trigger completion for the program + # and not completion of the program name itself. + # Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. + complete --do-complete "svu " > /dev/null 2>&1 +end + +# Remove any pre-existing completions for the program since we will be handling all of them. +complete -c svu -e + +# this will get called after the two calls below and clear the $__svu_perform_completion_once_result global +complete -c svu -n '__svu_clear_perform_completion_once_result' +# The call to __svu_prepare_completions will setup __svu_comp_results +# which provides the program's completion choices. +# If this doesn't require order preservation, we don't use the -k flag +complete -c svu -n 'not __svu_requires_order_preservation && __svu_prepare_completions' -f -a '$__svu_comp_results' +# otherwise we use the -k flag +complete -k -c svu -n '__svu_requires_order_preservation && __svu_prepare_completions' -f -a '$__svu_comp_results'