Move local-image flag to converter parser
Bug: b/280670526
Test: m -j 150
Change-Id: If1c831e937a2beee1f62201ba8050dc5db16dcc3
diff --git a/host/commands/cvd/acloud/converter.cpp b/host/commands/cvd/acloud/converter.cpp
index 5184c96..ec17054 100644
--- a/host/commands/cvd/acloud/converter.cpp
+++ b/host/commands/cvd/acloud/converter.cpp
@@ -177,19 +177,6 @@
std::vector<Flag> flags;
- bool local_image = false;
- std::optional<std::string> local_image_path;
- flags.emplace_back(
- Flag()
- .Alias({FlagAliasMode::kFlagConsumesArbitrary, "--local-image"})
- .Setter([&local_image, &local_image_path](const FlagMatch& m) {
- local_image = true;
- if (m.value != "") {
- local_image_path = m.value;
- }
- return true;
- }));
-
std::optional<std::string> build_id;
flags.emplace_back(
Flag()
@@ -431,7 +418,7 @@
std::string fetch_command_str;
std::string fetch_cvd_args_file;
- if (local_image) {
+ if (parsed_flags.local_image) {
CF_EXPECT(!(system_branch || system_build_target || system_build_id),
"--local-image incompatible with --system-* flags");
CF_EXPECT(
@@ -600,10 +587,10 @@
mixsuperimage_command.add_args("--super_image");
auto& mixsuperimage_env = *mixsuperimage_command.mutable_env();
- if (local_image) {
- if (local_image_path) {
+ if (parsed_flags.local_image) {
+ if (parsed_flags.local_image_path) {
// added image_dir to required_paths for MixSuperImage use
- required_paths += ("," + local_image_path.value());
+ required_paths += ("," + parsed_flags.local_image_path.value());
} else {
required_paths += ",";
}
@@ -738,9 +725,9 @@
}
auto& start_env = *start_command.mutable_env();
- if (local_image) {
- if (local_image_path) {
- std::string local_image_path_str = local_image_path.value();
+ if (parsed_flags.local_image) {
+ if (parsed_flags.local_image_path) {
+ std::string local_image_path_str = parsed_flags.local_image_path.value();
// Python acloud source: local_image_local_instance.py;l=81
// this acloud flag is equal to launch_cvd flag system_image_dir
start_command.add_args("-system_image_dir");
diff --git a/host/commands/cvd/acloud/create_converter_parser.cpp b/host/commands/cvd/acloud/create_converter_parser.cpp
index bac992d..676daa9 100644
--- a/host/commands/cvd/acloud/create_converter_parser.cpp
+++ b/host/commands/cvd/acloud/create_converter_parser.cpp
@@ -63,6 +63,19 @@
return verbose_flag;
}
+static Flag LocalImageFlag(bool& local_image,
+ std::optional<std::string>& local_image_path) {
+ return Flag()
+ .Alias({FlagAliasMode::kFlagConsumesArbitrary, "--local-image"})
+ .Setter([&local_image, &local_image_path](const FlagMatch& m) {
+ local_image = true;
+ if (m.value != "") {
+ local_image_path = m.value;
+ }
+ return true;
+ });
+}
+
Result<ConverterParsed> ParseAcloudCreateFlags(cvd_common::Args& arguments) {
std::vector<Flag> flags;
@@ -91,6 +104,10 @@
std::optional<std::string> branch;
flags.emplace_back(CF_EXPECT(AcloudCompatFlag({"branch"}, branch)));
+ bool local_image = false;
+ std::optional<std::string> local_image_path;
+ flags.emplace_back(LocalImageFlag(local_image, local_image_path));
+
CF_EXPECT(ParseFlags(flags, arguments));
return ConverterParsed{
.local_instance_set = local_instance_set,
@@ -101,6 +118,8 @@
.local_system_image = local_system_image,
.verbose = verbose,
.branch = branch,
+ .local_image = local_image,
+ .local_image_path = local_image_path,
};
}
diff --git a/host/commands/cvd/acloud/create_converter_parser.h b/host/commands/cvd/acloud/create_converter_parser.h
index 6ad2d8a..e6bcf5e 100644
--- a/host/commands/cvd/acloud/create_converter_parser.h
+++ b/host/commands/cvd/acloud/create_converter_parser.h
@@ -34,6 +34,8 @@
std::optional<std::string> local_system_image;
bool verbose;
std::optional<std::string> branch;
+ bool local_image;
+ std::optional<std::string> local_image_path;
};
Result<ConverterParsed> ParseAcloudCreateFlags(cvd_common::Args& arguments);