MCPcopy Create free account
hub / github.com/dtormoen/tsk-tsk / execute

Method execute

src/commands/docker/build.rs:29–139  ·  view source on GitHub ↗
(&self, ctx: &AppContext)

Source from the content-addressed store, hash-verified

27#[async_trait]
28impl Command for DockerBuildCommand {
29 async fn execute(&self, ctx: &AppContext) -> Result<(), Box<dyn Error>> {
30 let docker_client = Arc::new(
31 DefaultDockerClient::new(&ctx.tsk_config().container_engine)
32 .map_err(|e| -> Box<dyn Error> { e.into() })?,
33 );
34
35 // Handle proxy-only build
36 if self.proxy_only {
37 println!("Building tsk/proxy image...");
38 use crate::docker::proxy_manager::ProxyManager;
39 let proxy_manager = ProxyManager::new(
40 docker_client,
41 ctx.tsk_env(),
42 ctx.tsk_config().container_engine.clone(),
43 None,
44 );
45 proxy_manager
46 .build_proxy(self.no_cache, &TaskLogger::no_file())
47 .await?;
48 println!("Successfully built Docker image: tsk/proxy");
49 return Ok(());
50 }
51
52 // Get project root for Docker operations
53 let project_root = find_repository_root(std::path::Path::new(".")).ok();
54
55 // Auto-detect project if not provided
56 let project = match &self.project {
57 Some(p) => Some(p.clone()),
58 None => {
59 let repo_root = project_root
60 .clone()
61 .unwrap_or_else(|| std::path::PathBuf::from("."));
62
63 match crate::repository::detect_project_name(&repo_root).await {
64 Ok(detected) => Some(detected),
65 Err(e) => {
66 eprintln!("Warning: Failed to detect project name: {e}. Using default.");
67 Some("default".to_string())
68 }
69 }
70 }
71 };
72
73 // Resolve config for inline layer overrides
74 let project_name = project.as_deref().unwrap_or("default");
75 let tsk_config = ctx.tsk_config();
76 let project_config = project_root
77 .as_deref()
78 .and_then(crate::context::tsk_config::load_project_config);
79 let resolved_config = tsk_config.resolve_config(
80 project_name,
81 project_config.as_ref(),
82 project_root.as_deref(),
83 );
84
85 // Resolve stack and agent using shared resolution logic
86 let repo_root = project_root

Callers

nothing calls this directly

Calls 9

find_repository_rootFunction · 0.85
detect_project_nameFunction · 0.85
resolve_stackFunction · 0.85
resolve_agentFunction · 0.85
tsk_configMethod · 0.80
tsk_envMethod · 0.80
build_proxyMethod · 0.80
resolve_configMethod · 0.80
build_imageMethod · 0.45

Tested by

no test coverage detected