|
1 | 1 | use moon_common::path::WorkspaceRelativePath; |
2 | 2 | use moon_common::{Id, color}; |
3 | 3 | use moon_config::{ |
4 | | - ConfigLoader, DependencyConfig, DependencyScope, DependencySource, InheritedTasksManager, |
5 | | - InheritedTasksResult, LanguageType, ProjectConfig, ProjectDependsOn, TaskConfig, |
6 | | - ToolchainConfig, |
| 4 | + ConfigLoader, DependencyConfig, DependencySource, InheritedTasksManager, InheritedTasksResult, |
| 5 | + LanguageType, ProjectConfig, ProjectDependsOn, TaskConfig, ToolchainConfig, |
7 | 6 | }; |
8 | 7 | use moon_file_group::FileGroup; |
9 | 8 | use moon_project::Project; |
10 | | -use moon_task::{TargetScope, Task}; |
11 | | -use moon_task_builder::{TasksBuilder, TasksBuilderContext}; |
| 9 | +use moon_task::Task; |
| 10 | +use moon_task_builder::{TasksBuilder, TasksBuilderContext, create_project_dep_from_task_dep}; |
12 | 11 | use moon_toolchain::detect::{ |
13 | 12 | detect_project_language, detect_project_toolchains, get_project_toolchains, |
14 | 13 | }; |
@@ -312,35 +311,19 @@ impl<'app> ProjectBuilder<'app> { |
312 | 311 | // Tasks can depend on arbitrary projects, so include them also |
313 | 312 | for task_config in tasks.values() { |
314 | 313 | for task_dep in &task_config.deps { |
315 | | - if let TargetScope::Project(dep_id) = &task_dep.target.scope { |
316 | | - // Already a dependency, or references self |
317 | | - if deps.contains_key(dep_id) |
318 | | - || self.id == dep_id |
319 | | - || self.alias.as_ref().is_some_and(|a| *a == dep_id.as_str()) |
320 | | - { |
321 | | - continue; |
322 | | - } |
323 | | - |
324 | | - trace!( |
325 | | - project_id = self.id.as_str(), |
326 | | - dep_id = dep_id.as_str(), |
327 | | - task_target = task_config.target.as_str(), |
328 | | - "Marking arbitrary project as an implicit dependency because of a task dependency" |
329 | | - ); |
330 | | - |
331 | | - deps.insert( |
332 | | - dep_id.to_owned(), |
333 | | - DependencyConfig { |
334 | | - id: dep_id.to_owned(), |
335 | | - scope: if self.context.root_project_id.is_some_and(|id| id == dep_id) { |
336 | | - DependencyScope::Root |
337 | | - } else { |
338 | | - DependencyScope::Build |
339 | | - }, |
340 | | - source: DependencySource::Implicit, |
341 | | - via: Some(task_config.target.to_string()), |
342 | | - }, |
343 | | - ); |
| 314 | + if let Some(dep_config) = create_project_dep_from_task_dep( |
| 315 | + task_dep, |
| 316 | + self.id, |
| 317 | + self.context.root_project_id, |
| 318 | + |dep_project_id| { |
| 319 | + deps.contains_key(dep_project_id) |
| 320 | + || self |
| 321 | + .alias |
| 322 | + .as_ref() |
| 323 | + .is_some_and(|alias| alias.as_str() == dep_project_id.as_str()) |
| 324 | + }, |
| 325 | + ) { |
| 326 | + deps.insert(dep_config.id.clone(), dep_config); |
344 | 327 | } |
345 | 328 | } |
346 | 329 | } |
|
0 commit comments