Skip to content

Commit 4e8b947

Browse files
committed
WIP implementing instance prompting
Bug: 511316553
1 parent 55f3eae commit 4e8b947

1 file changed

Lines changed: 23 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: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,14 @@ Result<LocalInstanceGroup> PromptUserForGroup(
130130
}
131131
}
132132

133+
Result<std::pair<LocalInstance, LocalInstanceGroup>> PromptUserForInstance(
134+
const InstanceManager& instance_manager, const CommandRequest& request,
135+
InstanceDatabase::Filter filter) {
136+
// TODO CJR: adapt or clone PromptUserForGroup logic, but only allow instance
137+
// selection
138+
return CF_ERR("TODO CJR implement");
139+
}
140+
133141
Result<LocalInstanceGroup> FindGroupOrDefault(
134142
const InstanceDatabase::Filter& filter,
135143
const InstanceManager& instance_manager) {
@@ -187,10 +195,24 @@ Result<LocalInstanceGroup> SelectGroup(const InstanceManager& instance_manager,
187195

188196
Result<std::pair<LocalInstance, LocalInstanceGroup>> SelectInstance(
189197
const InstanceManager& instance_manager, const CommandRequest& request) {
198+
const bool has_groups = CF_EXPECT(instance_manager.HasInstanceGroups());
199+
CF_EXPECT(std::move(has_groups), "No instance groups available");
200+
// TODO CJR: can we have an instance group with no instances?
201+
// or do I need to check for that?
190202
InstanceDatabase::Filter filter =
191203
CF_EXPECT(BuildFilterFromSelectors(request.Selectors(), request.Env()));
192204

193-
return CF_EXPECT(FindInstanceOrDefault(filter, instance_manager));
205+
Result<std::pair<LocalInstance, LocalInstanceGroup>>
206+
instance_selection_result =
207+
CF_EXPECT(FindInstanceOrDefault(filter, instance_manager));
208+
if (instance_selection_result.ok()) {
209+
return CF_EXPECT(std::move(instance_selection_result));
210+
}
211+
CF_EXPECT(isatty(0),
212+
"Multiple instances found. Narrow the selection with selector "
213+
"arguments or run in an interactive terminal");
214+
return CF_EXPECT(
215+
PromptUserForInstance(instance_manager, request, std::move(filter)));
194216
}
195217

196218
} // namespace selector

0 commit comments

Comments
 (0)