nuwax_cli/docker_service/
mod.rs1use std::sync::Arc;
2
3use anyhow::Result;
4use client_core::config::AppConfig;
5use client_core::container::DockerManager;
6
7pub mod architecture;
9pub mod config;
10pub mod directory_permissions;
11pub mod environment;
12pub mod error;
13pub mod health_check;
14pub mod image_loader;
15pub mod manager;
16pub mod port_manager;
17pub mod script_permissions;
18pub mod service_manager;
19
20pub use architecture::{Architecture, detect_architecture};
22#[allow(unused_imports)]
23pub use config::DockerServiceConfig;
24#[allow(unused_imports)]
25pub use environment::EnvironmentChecker;
26#[allow(unused_imports)]
27pub use error::{DockerServiceError, DockerServiceResult};
28#[allow(unused_imports)]
29pub use health_check::{ContainerStatus, HealthReport, ServiceStatus};
30#[allow(unused_imports)]
31pub use image_loader::{ImageInfo, ImageLoader, ImageType, LoadResult, TagResult};
32pub use manager::DockerServiceManager;
33#[allow(unused_imports)]
34pub use port_manager::{PortConflict, PortConflictReport, PortManager, PortMapping};
35#[allow(unused_imports)]
36pub use service_manager::ServiceManager;
37
38pub struct DockerService;
40
41impl DockerService {
42 #[allow(clippy::new_ret_no_self)]
44 pub fn new(
45 config: Arc<AppConfig>,
46 docker_manager: Arc<DockerManager>,
47 ) -> Result<DockerServiceManager> {
48 let work_dir = docker_manager
49 .get_working_directory()
50 .ok_or_else(|| anyhow::anyhow!("Unable to determine Docker working directory"))?
51 .to_path_buf();
52
53 Ok(DockerServiceManager::new(
54 config,
55 docker_manager.clone(),
56 work_dir,
57 ))
58 }
59}
60
61pub fn get_system_architecture() -> Architecture {
63 detect_architecture()
64}
65
66pub fn get_architecture_suffix(arch: Architecture) -> &'static str {
68 match arch {
69 Architecture::Amd64 => "amd64",
70 Architecture::Arm64 => "arm64",
71 }
72}