1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
mod build;
mod client;
mod container;
mod network;
use anyhow::anyhow;
pub use build::*;
pub use client::*;
pub use container::*;
pub use network::*;
use run_command::async_run_command;
pub fn get_docker_username_pw(
docker_account: &Option<String>,
docker_token: &Option<String>,
) -> anyhow::Result<Option<(String, String)>> {
match docker_account {
Some(docker_account) => match docker_token {
Some(docker_token) => Ok(Some((docker_account.to_owned(), docker_token.to_owned()))),
None => Err(anyhow!(
"docker token for account {docker_account} has not been configured on this client"
)),
},
None => Ok(None),
}
}
pub async fn docker_login(
docker_account: &Option<String>,
docker_token: &Option<String>,
) -> anyhow::Result<bool> {
let docker_account_u_pw = get_docker_username_pw(docker_account, docker_token)?;
if let Some((username, password)) = &docker_account_u_pw {
let login = format!("docker login -u {username} -p {password}");
async_run_command(&login).await;
Ok(true)
} else {
Ok(false)
}
}