sync_auth/providers/
mod.rs1mod claude;
7mod codex;
8mod gemini;
9mod gh;
10mod glab;
11mod opencode;
12mod qwen_coder;
13
14pub use self::claude::ClaudeProvider;
15pub use self::codex::CodexProvider;
16pub use self::gemini::GeminiProvider;
17pub use self::gh::GhProvider;
18pub use self::glab::GlabProvider;
19pub use self::opencode::OpencodeProvider;
20pub use self::qwen_coder::QwenCoderProvider;
21
22use crate::AuthProvider;
23
24pub fn all_providers() -> Vec<Box<dyn AuthProvider>> {
26 vec![
27 Box::new(GhProvider),
28 Box::new(GlabProvider),
29 Box::new(ClaudeProvider),
30 Box::new(CodexProvider),
31 Box::new(GeminiProvider),
32 Box::new(OpencodeProvider),
33 Box::new(QwenCoderProvider),
34 ]
35}
36
37pub fn provider_by_name(name: &str) -> Option<Box<dyn AuthProvider>> {
39 match name {
40 "gh" => Some(Box::new(GhProvider)),
41 "glab" => Some(Box::new(GlabProvider)),
42 "claude" => Some(Box::new(ClaudeProvider)),
43 "codex" => Some(Box::new(CodexProvider)),
44 "gemini" => Some(Box::new(GeminiProvider)),
45 "opencode" => Some(Box::new(OpencodeProvider)),
46 "qwen-coder" => Some(Box::new(QwenCoderProvider)),
47 _ => None,
48 }
49}