snapshot_util_cvd supports --helpxml
Bug: 346422499
Test: snapshot_util_cvd --helpxml
Change-Id: Iaeba3c19bde41753b335e05699c0bea6e1fa7487
diff --git a/host/commands/snapshot_util_cvd/main.cc b/host/commands/snapshot_util_cvd/main.cc
index c9ba106..767503d 100644
--- a/host/commands/snapshot_util_cvd/main.cc
+++ b/host/commands/snapshot_util_cvd/main.cc
@@ -65,14 +65,14 @@
}
Result<void> SnapshotCvdMain(std::vector<std::string> args) {
- const CuttlefishConfig* config =
- CF_EXPECT(CuttlefishConfig::Get(), "Failed to obtain config object");
-
CF_EXPECT(!args.empty(), "No arguments was given");
const auto prog_path = args.front();
args.erase(args.begin());
auto parsed = CF_EXPECT(Parse(args));
+ const CuttlefishConfig* config =
+ CF_EXPECT(CuttlefishConfig::Get(), "Failed to obtain config object");
+
switch (parsed.cmd) {
case SnapshotCmd::kSuspend: {
run_cvd::ExtendedLauncherAction extended_action;
diff --git a/host/commands/snapshot_util_cvd/parse.cc b/host/commands/snapshot_util_cvd/parse.cc
index e829389..42fcf9c 100644
--- a/host/commands/snapshot_util_cvd/parse.cc
+++ b/host/commands/snapshot_util_cvd/parse.cc
@@ -127,7 +127,14 @@
flags.push_back(HelpFlag(flags));
flags.push_back(HelpXmlFlag(flags, std::cout, help_xml));
flags.push_back(UnexpectedArgumentGuard());
- CF_EXPECT(ConsumeFlags(flags, args), "Flag parsing failed");
+ auto parse_res = ConsumeFlags(flags, args);
+ if (!help_xml && !parse_res.ok()) {
+ // Parse fails if helpxml is passed
+ CF_EXPECT(std::move(parse_res), "Flag parsing failed");
+ }
+ if (help_xml) {
+ std::exit(0);
+ }
parsed.cmd = CF_EXPECT(ConvertToSnapshotCmd(snapshot_op));
parsed.snapshot_path = snapshot_path;
parsed.instance_nums = CF_EXPECT(InstanceNums());