MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / handle_auth_command

Function handle_auth_command

crates/opencode-cli/src/main.rs:3137–3230  ·  view source on GitHub ↗
(action: AuthCommands)

Source from the content-addressed store, hash-verified

3135}
3136
3137async fn handle_auth_command(action: AuthCommands) -> anyhow::Result<()> {
3138 match action {
3139 AuthCommands::List => {
3140 println!("\nCredential providers:");
3141 for (provider, env_var) in AUTH_ENV_PROVIDERS {
3142 let status = if std::env::var(env_var).is_ok() {
3143 "set"
3144 } else {
3145 "not set"
3146 };
3147 println!(" {:<16} {:<24} {}", provider, env_var, status);
3148 }
3149 println!();
3150 }
3151 AuthCommands::Login { provider, token } => {
3152 let provider = if let Some(provider) = provider {
3153 provider
3154 } else {
3155 println!("No provider specified. Supported providers:");
3156 for (p, _) in AUTH_ENV_PROVIDERS {
3157 println!(" - {}", p);
3158 }
3159 print!("Provider: ");
3160 io::stdout().flush()?;
3161 let mut input = String::new();
3162 io::stdin().read_line(&mut input)?;
3163 input.trim().to_string()
3164 };
3165
3166 if provider.starts_with("http://") || provider.starts_with("https://") {
3167 anyhow::bail!(
3168 "Well-known URL login is not fully wired in Rust CLI yet. Use `opencode auth login <provider> --token ...` for now."
3169 );
3170 }
3171
3172 let Some(env_var) = provider_env_var(&provider) else {
3173 anyhow::bail!(
3174 "Unknown provider: {}. Run `opencode auth list` to see supported providers.",
3175 provider
3176 );
3177 };
3178
3179 let value = if let Some(token) = token {
3180 token
3181 } else {
3182 print!("Enter token for {}: ", provider);
3183 io::stdout().flush()?;
3184 let mut input = String::new();
3185 io::stdin().read_line(&mut input)?;
3186 input.trim().to_string()
3187 };
3188
3189 if value.is_empty() {
3190 anyhow::bail!("Token cannot be empty");
3191 }
3192
3193 std::env::set_var(env_var, &value);
3194 println!(

Callers 1

mainFunction · 0.85

Calls 3

newFunction · 0.85
provider_env_varFunction · 0.85
is_emptyMethod · 0.80

Tested by

no test coverage detected