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

Method handle_create_provider_key

crates/openshell-tui/src/app.rs:2126–2343  ·  view source on GitHub ↗
(&mut self, key: KeyEvent)

Source from the content-addressed store, hash-verified

2124 }
2125
2126 fn handle_create_provider_key(&mut self, key: KeyEvent) {
2127 let Some(form) = self.create_provider_form.as_mut() else {
2128 return;
2129 };
2130
2131 match form.phase {
2132 CreateProviderPhase::SelectType => match key.code {
2133 KeyCode::Esc => {
2134 self.create_provider_form = None;
2135 }
2136 KeyCode::Char('j') | KeyCode::Down if !form.types.is_empty() => {
2137 form.type_cursor = (form.type_cursor + 1).min(form.types.len() - 1);
2138 }
2139 KeyCode::Char('k') | KeyCode::Up => {
2140 form.type_cursor = form.type_cursor.saturating_sub(1);
2141 }
2142 KeyCode::Enter => {
2143 let selected = form.types[form.type_cursor].clone();
2144 let registry = openshell_providers::ProviderRegistry::new();
2145 let env_vars = registry.credential_env_vars(&selected);
2146 form.is_generic = env_vars.is_empty();
2147
2148 // Populate credential rows from all known env vars.
2149 form.credentials = env_vars
2150 .iter()
2151 .map(|s| (s.to_string(), String::new()))
2152 .collect();
2153 form.cred_cursor = 0;
2154
2155 // Auto-generate a unique name.
2156 form.name = unique_provider_name(&selected, &self.provider_names);
2157
2158 if form.is_generic {
2159 // No known env vars — skip straight to manual entry.
2160 form.phase = CreateProviderPhase::EnterKey;
2161 form.key_field = ProviderKeyField::Name;
2162 form.status = None;
2163 form.warning = None;
2164 } else {
2165 form.phase = CreateProviderPhase::ChooseMethod;
2166 form.method_cursor = 0;
2167 }
2168 }
2169 _ => {}
2170 },
2171
2172 CreateProviderPhase::ChooseMethod => match key.code {
2173 KeyCode::Esc => {
2174 form.phase = CreateProviderPhase::SelectType;
2175 form.status = None;
2176 form.warning = None;
2177 }
2178 KeyCode::Char('j' | 'k') | KeyCode::Down | KeyCode::Up => {
2179 form.method_cursor = 1 - form.method_cursor;
2180 }
2181 KeyCode::Enter => {
2182 let ptype = form.types[form.type_cursor].clone();
2183 if form.method_cursor == 0 {

Callers 1

handle_keyMethod · 0.80

Calls 6

unique_provider_nameFunction · 0.85
lenMethod · 0.80
is_emptyMethod · 0.45
credential_env_varsMethod · 0.45
discover_existingMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected