MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / gateway_select_with

Function gateway_select_with

crates/openshell-cli/src/run.rs:817–856  ·  view source on GitHub ↗
(
    name: Option<&str>,
    gateway_flag: &Option<String>,
    interactive: bool,
    choose_gateway: F,
)

Source from the content-addressed store, hash-verified

815}
816
817fn gateway_select_with<F>(
818 name: Option<&str>,
819 gateway_flag: &Option<String>,
820 interactive: bool,
821 choose_gateway: F,
822) -> Result<()>
823where
824 F: FnOnce(&[GatewayMetadata], usize) -> Result<Option<String>>,
825{
826 if let Some(name) = name {
827 return gateway_use(name);
828 }
829
830 let gateways = list_gateways()?;
831 if gateways.is_empty() || !interactive {
832 gateway_list(gateway_flag, "table")?;
833 if !gateways.is_empty() {
834 eprintln!();
835 eprintln!(
836 "Select a gateway with: {}",
837 "openshell gateway select <name>".dimmed()
838 );
839 }
840 return Ok(());
841 }
842
843 let active = gateway_flag.clone().or_else(load_active_gateway);
844 let default = active
845 .as_deref()
846 .and_then(|name| gateways.iter().position(|gateway| gateway.name == name))
847 .unwrap_or(0);
848
849 if let Some(name) = choose_gateway(&gateways, default)? {
850 gateway_use(&name)?;
851 } else {
852 eprintln!("{} Gateway selection cancelled", "!".yellow());
853 }
854
855 Ok(())
856}
857
858/// Register an existing gateway.
859///

Calls 4

gateway_useFunction · 0.85
list_gatewaysFunction · 0.85
gateway_listFunction · 0.85
is_emptyMethod · 0.45