flag: return error on .finalize() on CLI arguments with unknown short options too
parent
0258482caf
commit
1eb3ed9818
|
@ -404,17 +404,15 @@ pub fn (fs FlagParser) usage() string {
|
||||||
return use.replace('- ,', ' ')
|
return use.replace('- ,', ' ')
|
||||||
}
|
}
|
||||||
|
|
||||||
// finalize argument parsing -> call after all arguments are defined
|
// finalize - return all remaining arguments (non options).
|
||||||
//
|
// Call .finalize() after all arguments are defined.
|
||||||
// all remaining arguments are returned in the same order they are defined on
|
// The remaining arguments are returned in the same order they are
|
||||||
// command line
|
// defined on the command line. If additional flags are found, i.e.
|
||||||
//
|
// (things starting with '--' or '-'), it returns an error.
|
||||||
// if additional flag are found (things starting with '--') an error is returned
|
|
||||||
// error handling is up to the application developer
|
|
||||||
pub fn (fs FlagParser) finalize() ?[]string {
|
pub fn (fs FlagParser) finalize() ?[]string {
|
||||||
for a in fs.args {
|
for a in fs.args {
|
||||||
if a.len >= 2 && a[..2] == '--' {
|
if (a.len >= 2 && a[..2] == '--') || (a.len == 2 && a[0] == `-`) {
|
||||||
return error("Unknown argument \'${a[2..]}\'")
|
return error('Unknown flag `$a`')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if fs.args.len < fs.min_free_args && fs.min_free_args > 0 {
|
if fs.args.len < fs.min_free_args && fs.min_free_args > 0 {
|
||||||
|
|
|
@ -133,11 +133,21 @@ fn test_finalize_returns_none_flag_arguments_ordered() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_finalize_returns_error_for_unknown_flags() {
|
fn test_finalize_returns_error_for_unknown_flags_long() {
|
||||||
mut fp := flag.new_flag_parser(['--known', '--unknown'])
|
mut fp := flag.new_flag_parser(['--known', '--unknown'])
|
||||||
fp.bool('known', 0, false, '')
|
fp.bool('known', 0, false, '')
|
||||||
finalized := fp.finalize() or {
|
finalized := fp.finalize() or {
|
||||||
assert err.msg == "Unknown argument 'unknown'"
|
assert err.msg == 'Unknown flag `--unknown`'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
assert finalized.len < 0 // expect error to be returned
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_finalize_returns_error_for_unknown_flags_short() {
|
||||||
|
mut fp := flag.new_flag_parser(['--known', '-x'])
|
||||||
|
fp.bool('known', 0, false, '')
|
||||||
|
finalized := fp.finalize() or {
|
||||||
|
assert err.msg == 'Unknown flag `-x`'
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
assert finalized.len < 0 // expect error to be returned
|
assert finalized.len < 0 // expect error to be returned
|
||||||
|
|
Loading…
Reference in New Issue