diff options
| author | Indrajith K L | 2022-12-03 17:00:20 +0530 | 
|---|---|---|
| committer | Indrajith K L | 2022-12-03 17:00:20 +0530 | 
| commit | f5c4671bfbad96bf346bd7e9a21fc4317b4959df (patch) | |
| tree | 2764fc62da58f2ba8da7ed341643fc359873142f /v_windows/v/old/vlib/os/cmdline | |
| download | cli-tools-windows-master.tar.gz cli-tools-windows-master.tar.bz2 cli-tools-windows-master.zip  | |
Diffstat (limited to 'v_windows/v/old/vlib/os/cmdline')
| -rw-r--r-- | v_windows/v/old/vlib/os/cmdline/cmdline.v | 82 | ||||
| -rw-r--r-- | v_windows/v/old/vlib/os/cmdline/cmdline_test.v | 37 | 
2 files changed, 119 insertions, 0 deletions
diff --git a/v_windows/v/old/vlib/os/cmdline/cmdline.v b/v_windows/v/old/vlib/os/cmdline/cmdline.v new file mode 100644 index 0000000..96bcb27 --- /dev/null +++ b/v_windows/v/old/vlib/os/cmdline/cmdline.v @@ -0,0 +1,82 @@ +module cmdline + +// Fetch multiple option by param, e.g. +// args: ['v', '-d', 'aa', '-d', 'bb', '-d', 'cc'] +// param: '-d' +// ret: ['aa', 'bb', 'cc'] +pub fn options(args []string, param string) []string { +	mut flags := []string{} +	for i, v in args { +		if v == param { +			if i + 1 < args.len { +				flags << args[i + 1] +			} +		} +	} +	return flags +} + +// Fetch option by param, e.g. +// args: ['v', '-d', 'aa'] +// param: '-d' +// def: '' +// ret: 'aa' +pub fn option(args []string, param string, def string) string { +	mut found := false +	for arg in args { +		if found { +			return arg +		} else if param == arg { +			found = true +		} +	} +	return def +} + +// Fetch all options before what params, e.g. +// args: ['-stat', 'test', 'aaa.v'] +// what: ['test'] +// ret: ['-stat'] +pub fn options_before(args []string, what []string) []string { +	mut args_before := []string{} +	for a in args { +		if a in what { +			break +		} +		args_before << a +	} +	return args_before +} + +// Fetch all options after what params, e.g. +// args: ['-stat', 'test', 'aaa.v'] +// what: ['test'] +// ret: ['aaa.v'] +pub fn options_after(args []string, what []string) []string { +	mut found := false +	mut args_after := []string{} +	for a in args { +		if a in what { +			found = true +			continue +		} +		if found { +			args_after << a +		} +	} +	return args_after +} + +// Fetch all options not start with '-', e.g. +// args: ['-d', 'aa', '--help', 'bb'] +// ret: ['aa', 'bb'] +pub fn only_non_options(args []string) []string { +	return args.filter(!it.starts_with('-')) +} + +// Fetch all options start with '-', e.g. +// args: ['-d', 'aa', '--help', 'bb'] +// ret: ['-d', '--help'] +pub fn only_options(args []string) []string { +	return args.filter(it.starts_with('-')) +} diff --git a/v_windows/v/old/vlib/os/cmdline/cmdline_test.v b/v_windows/v/old/vlib/os/cmdline/cmdline_test.v new file mode 100644 index 0000000..5c34f3f --- /dev/null +++ b/v_windows/v/old/vlib/os/cmdline/cmdline_test.v @@ -0,0 +1,37 @@ +import os.cmdline + +fn test_options() { +	args := ['v', '-d', 'aa', '-d', 'bb', '-d', 'cc'] +	ret := cmdline.options(args, '-d') +	assert ret.eq(['aa', 'bb', 'cc']) +} + +fn test_option() { +	args := ['v', '-d', 'aa'] +	ret := cmdline.option(args, '-d', '') +	assert ret == 'aa' +} + +fn test_options_before() { +	args := ['-stat', 'test', 'aaa.v'] +	ret := cmdline.options_before(args, ['test']) +	assert ret.eq(['-stat']) +} + +fn test_options_after() { +	args := ['-stat', 'test', 'aaa.v'] +	ret := cmdline.options_after(args, ['test']) +	assert ret.eq(['aaa.v']) +} + +fn test_only_non_options() { +	args := ['-d', 'aa', '--help', 'bb'] +	ret := cmdline.only_non_options(args) +	assert ret.eq(['aa', 'bb']) +} + +fn test_only_options() { +	args := ['-d', 'aa', '--help', 'bb'] +	ret := cmdline.only_options(args) +	assert ret.eq(['-d', '--help']) +}  | 
