379ea0edb6
Revert "/api/schema.rs: implement Schema::Option"
...
This reverts commit 0a35462c1e
.
I am not sure this add much value, and the old approach needs
less memory. If we really need single optional values, we can still
implement such Option while keeping the hash based approach...
2019-01-19 12:53:32 +01:00
0a35462c1e
/api/schema.rs: implement Schema::Option
2019-01-18 17:40:37 +01:00
7ebb173352
getopt: cleanup: add trailing commas
...
It is customary in rust to always use trailing commas. (also
suggested by rustfmt)
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2018-12-28 14:27:38 +01:00
2767c5d39b
getopt: cleanup: don't condense 'if' statements too much
...
In a language which enforces curly braces this looks weird
and rustfmt doesn't like it.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2018-12-28 14:27:38 +01:00
7d95c10da0
getopt: whitespace cleanup
...
to make rustfmt happy
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2018-12-28 14:27:38 +01:00
03fb895197
getopt: condense nested match to reduce indentation
...
The `match value` statement is the only thing covering the
entire RawArgument::Option case. `rustfmt` suggests this
more condensed way of writing this case.
See the `git diff -w` of this patch:
|diff --git a/src/getopts.rs b/src/getopts.rs
|index 9755af2..4db4579 100644
|--- a/src/getopts.rs
|+++ b/src/getopts.rs
|@@ -72,8 +72,7 @@ pub fn parse_arguments<T: AsRef<str>>(
| RawArgument::Separator => {
| break;
| }
|- RawArgument::Option { name, value } => {
|- match value {
|+ RawArgument::Option { name, value } => match value {
| None => {
| let mut want_bool = false;
| let mut can_default = false;
|@@ -125,7 +124,6 @@ pub fn parse_arguments<T: AsRef<str>>(
| data.push((name, v));
| }
| }
|- }
| RawArgument::Argument { value } => {
| rest.push(value);
| }
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2018-12-28 14:16:58 +01:00
4d0ea9978b
getopt: let parse_arguments() take a slice of AsRef<str>
...
We don't need the content to be owned strings, and we don't
need the list to be a Vec, since we only care about being
able to iterate through and copy out portions of the strings
we need, so take an &[T] where T: AsRef<str>.
This avoids .iter().map(to_string).collect() before calling
parse_arguments().
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2018-12-28 14:05:05 +01:00
2482c095b1
getopt: remove skip logic
...
The 'skip' variable was set to indicate that the "rest of
the args" is to be copied into the 'rest' vec. We can do
this directly and avoid the 'if' case in the loop
altogether.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2018-12-28 13:59:44 +01:00
99da3a073d
getopt: indentation reduction
...
See the `git diff -w` output:
|diff --git a/src/getopts.rs b/src/getopts.rs
|index 6548a01..517cc37 100644
|--- a/src/getopts.rs
|+++ b/src/getopts.rs
|@@ -72,7 +72,10 @@ pub fn parse_arguments(
| while pos < args.len() {
| if skip {
| rest.push(args[pos].clone());
|- } else {
|+ pos += 1;
|+ continue;
|+ }
|+
| match parse_argument(&args[pos]) {
| RawArgument::Separator => {
| skip = true;
|@@ -135,7 +138,6 @@ pub fn parse_arguments(
| rest.push(value);
| }
| }
|- }
|
| pos += 1;
| }
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2018-12-28 13:54:20 +01:00
ad8a98f7e4
parse_arguments: work with utf8 bytes and reduce indentation
...
We are only caring about '=' and '-' which are single-byte
codepoints, so there's no reason not to work on a byte
slice.
Also, some indentation reduction:
Transform
if (a) {
...
return A;
}
return B;
into
if (!a)
return B;
return A;
and
if (a)
if (b)
foo()
into
if (a && b)
return;
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2018-12-28 13:47:29 +01:00
b22751b20c
getopts.rs: fix test
2018-12-07 09:02:24 +01:00
73f29c34d7
improve command line parser
2018-11-30 12:10:26 +01:00
bfb1d69abc
fix compiler warnings, add storage/config.rs
2018-11-30 11:15:26 +01:00
768e01091a
implement Into Arc<Schema>
2018-11-23 13:18:41 +01:00
7edeec7b06
remove parameter macro, implement ObjectSchema builder
...
And store "optional" attribute inside properties hash.
2018-11-23 11:34:15 +01:00
82df76fff0
start using builder pattern instead of macros
2018-11-23 09:55:38 +01:00
00c908df85
use Arc pointer to properties
2018-11-20 17:20:50 +01:00
be45ccd203
fix getopts when called without any argument
2018-11-18 14:57:18 +01:00
a19f223dea
impl argument parameters
2018-11-18 10:09:13 +01:00
c78bcf07ad
getopts: more tests
2018-11-18 09:34:43 +01:00
62c40162ee
improve getopt parser
2018-11-18 08:55:21 +01:00
a653882dd9
use ObjectSchema for parameters
...
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com >
2018-11-18 08:46:26 +01:00
5d9f0eae6b
another testcase for boolean argument parser
2018-11-17 11:29:42 +01:00
2770fbf3c3
getopt parser fixes and cleanups
2018-11-17 11:28:26 +01:00
7556cab45e
getopts: allow "-option" and "--option"
2018-11-17 10:02:35 +01:00
0c9ce2bbf0
getopts: improve error handling
2018-11-17 09:57:26 +01:00
ffff48fcfe
cleanup variable names
2018-11-16 16:47:23 +01:00
845901f41d
implement getopt parser - first try
2018-11-16 13:14:11 +01:00