git_worktree_cli/commands/
auth.rs

1use crate::bitbucket_api::BitbucketClient;
2use crate::bitbucket_auth::{self, BitbucketAuth};
3use crate::bitbucket_data_center_api::BitbucketDataCenterClient;
4use crate::bitbucket_data_center_auth::{self, BitbucketDataCenterAuth};
5use crate::error::Result;
6use crate::github::GitHubClient;
7
8pub fn run() -> Result<()> {
9    let client = GitHubClient::new();
10    if client.has_auth() {
11        println!("✓ You are already authenticated with GitHub via gh CLI");
12        println!("Run 'gh auth logout' to remove credentials if needed");
13    } else {
14        println!("Please authenticate with GitHub using: gh auth login");
15    }
16    Ok(())
17}
18
19use crate::cli::{BitbucketCloudAuthAction, BitbucketDataCenterAuthAction};
20
21#[tokio::main]
22pub async fn run_bitbucket_cloud(action: Option<BitbucketCloudAuthAction>) -> Result<()> {
23    match action {
24        None | Some(BitbucketCloudAuthAction::Setup) => {
25            bitbucket_auth::display_setup_instructions();
26        }
27        Some(BitbucketCloudAuthAction::Test) => {
28            let (workspace, repo, email) = bitbucket_auth::get_auth_from_config()?;
29            let auth = BitbucketAuth::new(workspace, repo, email)?;
30            let client = BitbucketClient::new(auth);
31            client.test_connection().await?;
32        }
33    }
34    Ok(())
35}
36
37#[tokio::main]
38pub async fn run_bitbucket_data_center(action: Option<BitbucketDataCenterAuthAction>) -> Result<()> {
39    match action {
40        None | Some(BitbucketDataCenterAuthAction::Setup) => {
41            bitbucket_data_center_auth::display_setup_instructions();
42        }
43        Some(BitbucketDataCenterAuthAction::Test) => {
44            let (base_url, project_key, repo_slug) = bitbucket_data_center_auth::get_auth_from_config()?;
45            let auth = BitbucketDataCenterAuth::new(project_key, repo_slug, base_url.clone())?;
46            let client = BitbucketDataCenterClient::new(auth, base_url);
47            client.test_connection().await?;
48        }
49    }
50    Ok(())
51}