mirror of
https://github.com/ostreedev/ostree.git
synced 2025-01-11 09:18:20 +03:00
bin: Better handle --
We would stop passing through `--` and args after it to the underlying
command in `ostree_run`. This made it impossible to use `--` to tell the
parser that following args starting with `-` really are positional.
AFAICT, that logic for `--` here came from a time when we parse options
manually in a big loop, in which case breaking out made sense (see
97558276e4
).
There's an extra step here, which is that glib by default leaves the
`--` in the list of args, so we need to take care to remove it from the
list after parsing.
Closes: #1898
Closes: #1899
Approved by: rfairley
This commit is contained in:
parent
ab73d9f525
commit
0c48769de3
@ -152,11 +152,6 @@ ostree_run (int argc,
|
||||
}
|
||||
}
|
||||
|
||||
else if (g_str_equal (argv[in], "--"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
argv[out] = argv[in];
|
||||
}
|
||||
|
||||
@ -348,6 +343,22 @@ ostree_option_context_parse (GOptionContext *context,
|
||||
if (!g_option_context_parse (context, argc, argv, error))
|
||||
return FALSE;
|
||||
|
||||
/* Filter out the first -- we see; g_option_context_parse() leaves it in */
|
||||
int in, out;
|
||||
gboolean removed_double_dashes = FALSE;
|
||||
for (in = 1, out = 1; in < *argc; in++, out++)
|
||||
{
|
||||
if (g_str_equal ((*argv)[in], "--") && !removed_double_dashes)
|
||||
{
|
||||
removed_double_dashes = TRUE;
|
||||
out--;
|
||||
continue;
|
||||
}
|
||||
|
||||
(*argv)[out] = (*argv)[in];
|
||||
}
|
||||
*argc = out;
|
||||
|
||||
if (opt_version)
|
||||
{
|
||||
/* This should now be YAML, like `docker version`, so it's both nice to read
|
||||
|
@ -66,9 +66,11 @@ fi
|
||||
assert_file_has_content err.txt "error: Too many arguments given"
|
||||
echo "ok config set"
|
||||
|
||||
# Check that "ostree config unset" works
|
||||
# Check that using `--` works and that "ostree config unset" works
|
||||
${CMD_PREFIX} ostree config --repo=repo set core.lock-timeout-secs 60
|
||||
assert_file_has_content repo/config "lock-timeout-secs=60"
|
||||
${CMD_PREFIX} ostree config --repo=repo -- set core.lock-timeout-secs -1
|
||||
assert_file_has_content repo/config "lock-timeout-secs=-1"
|
||||
${CMD_PREFIX} ostree config --repo=repo unset core.lock-timeout-secs
|
||||
assert_not_file_has_content repo/config "lock-timeout-secs="
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user