diff --git a/Cargo.lock b/Cargo.lock index bc0a703..a8f23ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1841,6 +1841,7 @@ dependencies = [ "moon_target", "rustc-hash 2.0.0", "serde", + "serde_json", "starbase_sandbox", "starbase_utils", "tokio", diff --git a/crates/migrate-nx/CHANGELOG.md b/crates/migrate-nx/CHANGELOG.md index d1bb284..15bf526 100644 --- a/crates/migrate-nx/CHANGELOG.md +++ b/crates/migrate-nx/CHANGELOG.md @@ -4,6 +4,8 @@ #### 🚀 Updates +- Added support for `defaultBase` from `nx.json`. +- Added support for `metadata` from `project.json`. - Updated dependencies. ## 0.0.5 diff --git a/crates/migrate-nx/Cargo.toml b/crates/migrate-nx/Cargo.toml index bf6bb66..72cd5e7 100644 --- a/crates/migrate-nx/Cargo.toml +++ b/crates/migrate-nx/Cargo.toml @@ -22,6 +22,7 @@ moon_pdk = { workspace = true } moon_target = { workspace = true } rustc-hash = { workspace = true } serde = { workspace = true } +serde_json = { workspace = true } starbase_utils = { workspace = true, features = ["glob", "json", "yaml"] } [dev-dependencies] diff --git a/crates/migrate-nx/src/nx_json.rs b/crates/migrate-nx/src/nx_json.rs index e9dad16..1b6b93c 100644 --- a/crates/migrate-nx/src/nx_json.rs +++ b/crates/migrate-nx/src/nx_json.rs @@ -91,6 +91,7 @@ pub struct NxWorkspaceLayout { #[serde(rename_all = "camelCase")] pub struct NxJson { pub affected: Option, + pub default_base: Option, pub named_inputs: Option, pub target_defaults: Option>, pub workspace_layout: Option, diff --git a/crates/migrate-nx/src/nx_migrator.rs b/crates/migrate-nx/src/nx_migrator.rs index 9d6a1ad..702cf29 100644 --- a/crates/migrate-nx/src/nx_migrator.rs +++ b/crates/migrate-nx/src/nx_migrator.rs @@ -2,6 +2,7 @@ use crate::nx_json::*; use crate::nx_project_json::*; use moon_common::Id; use moon_config::FilePath; +use moon_config::PartialProjectMetadataConfig; use moon_config::PortablePath; use moon_config::TaskOptionEnvFile; use moon_config::{ @@ -71,14 +72,15 @@ impl NxMigrator { } pub fn migrate_root_config(&mut self, nx_json: NxJson) -> AnyResult<()> { - if let Some(affected) = nx_json.affected { - if let Some(default_branch) = affected.default_base { - self.inner - .load_workspace_config()? - .vcs - .get_or_insert(PartialVcsConfig::default()) - .default_branch = Some(default_branch); - } + if let Some(default_branch) = nx_json + .default_base + .or_else(|| nx_json.affected.and_then(|aff| aff.default_base)) + { + self.inner + .load_workspace_config()? + .vcs + .get_or_insert(PartialVcsConfig::default()) + .default_branch = Some(default_branch); } if let Some(named_inputs) = nx_json.named_inputs { @@ -223,6 +225,15 @@ impl NxMigrator { } } + if let Some(metadata) = project_json.metadata { + config + .project + .get_or_insert(PartialProjectMetadataConfig::default()) + .metadata + .get_or_insert(Default::default()) + .extend(metadata); + } + Ok(()) } diff --git a/crates/migrate-nx/src/nx_project_json.rs b/crates/migrate-nx/src/nx_project_json.rs index 20ff3cb..a8368f8 100644 --- a/crates/migrate-nx/src/nx_project_json.rs +++ b/crates/migrate-nx/src/nx_project_json.rs @@ -3,11 +3,13 @@ use crate::nx_json::{NxNamedInputs, NxTargetOptions}; use rustc_hash::FxHashMap; use serde::Deserialize; +use std::collections::HashMap; #[derive(Default, Deserialize)] #[serde(rename_all = "camelCase")] pub struct NxProjectJson { pub implicit_dependencies: Option>, + pub metadata: Option>, pub name: Option, pub named_inputs: Option, pub project_type: Option,