mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 05:13:10 +00:00
32 lines
1.2 KiB
Fish
32 lines
1.2 KiB
Fish
# This function is intended to be used as a validation command for individual option specifications
|
|
# given to the `argparse` command. It checks that the argument is a valid integer and optionally
|
|
# whether it is in a reasonable range.
|
|
function _validate_int --no-scope-shadowing
|
|
# Note that we can't use ourself to validate the arguments to the --min and --max flags this
|
|
# function recognizes.
|
|
set -l options 'm-min=' 'x-max='
|
|
argparse -n _argparse_validate_int $options -- $argv
|
|
or return
|
|
|
|
if not string match -qr '^-?\d+$' -- $_flag_value
|
|
set -l msg (_ "%s: Value '%s' for flag '%s' is not an integer\n")
|
|
printf $msg $_argparse_cmd $_flag_value $_flag_name >&2
|
|
return 1
|
|
end
|
|
|
|
if set -q _flag_min
|
|
and test $_flag_value -lt $_flag_min
|
|
set -l msg (_ "%s: Value '%s' for flag '%s' less than min allowed of '%s'\n")
|
|
printf $msg $_argparse_cmd $_flag_value $_flag_name $_flag_min >&2
|
|
return 1
|
|
end
|
|
|
|
if set -q _flag_max
|
|
and test $_flag_value -gt $_flag_max
|
|
set -l msg (_ "%s: Value '%s' for flag '%s' greater than max allowed of '%s'\n")
|
|
printf $msg $_argparse_cmd $_flag_value $_flag_name $_flag_max >&2
|
|
return 1
|
|
end
|
|
|
|
return 0
|
|
end
|