Skip to content

Commit 00624e6

Browse files
committed
Implement instance selection prompting
It reuses the group selection logic, then has the user pick an instance within that group. Bug: 511316553
1 parent edb0511 commit 00624e6

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

  • base/cvd/cuttlefish/host/commands/cvd/cli/selector

base/cvd/cuttlefish/host/commands/cvd/cli/selector/selector.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,24 @@ Result<LocalInstanceGroup> PromptUserForGroup(
129129
Result<std::pair<LocalInstance, LocalInstanceGroup>> PromptUserForInstance(
130130
const InstanceManager& instance_manager, const CommandRequest& request,
131131
InstanceDatabase::Filter filter) {
132-
return CF_ERR("TODO(chadreynolds): implement in follow-up commit");
132+
const LocalInstanceGroup group =
133+
CF_EXPECT(PromptUserForGroup(instance_manager, request, filter));
134+
const std::vector<LocalInstance>& instances = group.Instances();
135+
if (instances.size() == 1) {
136+
fmt::print(std::cout,
137+
"Single instance in group {}, defaulting to that choice.\n",
138+
group.GroupName());
139+
return std::pair(instances.front(), group);
140+
}
141+
142+
std::cout << GroupDisplay({group}, DisplayBehavior::LabelInstance);
143+
144+
const int selection = CF_EXPECT(PromptForSelection(instances.size() - 1));
145+
auto instance_filter = InstanceDatabase::Filter{
146+
.group_name = group.GroupName(),
147+
.instance_names = {instances[selection].Name()},
148+
};
149+
return CF_EXPECT(instance_manager.FindInstanceWithGroup(instance_filter));
133150
}
134151

135152
} // namespace

0 commit comments

Comments
 (0)