Fix rm --exact / --matching not being invoked at all O_o
This commit is contained in:
+14
-5
@@ -431,13 +431,22 @@ static int run(cli_tool_t *p, json11::Json::object cfg)
|
||||
else if (cmd[0] == "rm")
|
||||
{
|
||||
// Remove multiple snapshots and rebase their children
|
||||
if (cmd.size() > 1)
|
||||
if (cfg["exact"].bool_value() || cfg["matching"].bool_value())
|
||||
{
|
||||
cfg["from"] = cmd[1];
|
||||
if (cmd.size() > 2)
|
||||
cfg["to"] = cmd[2];
|
||||
cmd.erase(cmd.begin(), cmd.begin()+1);
|
||||
cfg["globs"] = cmd;
|
||||
action_cb = p->start_rm_wildcard(cfg);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cmd.size() > 1)
|
||||
{
|
||||
cfg["from"] = cmd[1];
|
||||
if (cmd.size() > 2)
|
||||
cfg["to"] = cmd[2];
|
||||
}
|
||||
action_cb = p->start_rm(cfg);
|
||||
}
|
||||
action_cb = p->start_rm(cfg);
|
||||
}
|
||||
else if (cmd[0] == "describe")
|
||||
{
|
||||
|
||||
@@ -691,10 +691,6 @@ resume_100:
|
||||
|
||||
std::function<bool(cli_result_t &)> cli_tool_t::start_rm(json11::Json cfg)
|
||||
{
|
||||
if (cfg["exact"].bool_value() || cfg["matching"].bool_value())
|
||||
{
|
||||
return start_rm_wildcard(cfg);
|
||||
}
|
||||
auto snap_remover = new snap_remover_t();
|
||||
snap_remover->parent = this;
|
||||
snap_remover->from_name = cfg["from"].string_value();
|
||||
|
||||
@@ -146,6 +146,7 @@ struct wildcard_remover_t
|
||||
sub_cfg = cfg.object_items();
|
||||
sub_cfg.erase("globs");
|
||||
sub_cfg.erase("exact");
|
||||
sub_cfg.erase("matching");
|
||||
sub_cfg["from"] = from_cfg.name;
|
||||
sub_cfg["to"] = to_cfg.name;
|
||||
sub_cb = parent->start_rm(sub_cfg);
|
||||
|
||||
Reference in New Issue
Block a user