diff --git a/lib/crates/fabro-config/src/lib.rs b/lib/crates/fabro-config/src/lib.rs index 3f683b55e..cb1aca8b6 100644 --- a/lib/crates/fabro-config/src/lib.rs +++ b/lib/crates/fabro-config/src/lib.rs @@ -36,9 +36,8 @@ pub use load::{ }; pub use parse::{ParseError, parse_settings_layer}; pub use resolve::{ - ResolveError, dev_token_auth_enabled, resolve_cli, resolve_cli_from_file, resolve_features, - resolve_features_from_file, resolve_project, resolve_run, resolve_server, - resolve_server_from_file, resolve_workflow, + ResolveError, dev_token_auth_enabled, resolve_cli, resolve_features, resolve_project, + resolve_run, resolve_server, resolve_server_from_file, resolve_workflow, }; use serde::de::DeserializeOwned; pub use storage::{RunScratch, RuntimeDirectory, Storage}; diff --git a/lib/crates/fabro-config/src/resolve/mod.rs b/lib/crates/fabro-config/src/resolve/mod.rs index ab9af90ae..7f7800613 100644 --- a/lib/crates/fabro-config/src/resolve/mod.rs +++ b/lib/crates/fabro-config/src/resolve/mod.rs @@ -8,9 +8,7 @@ mod workflow; pub use cli::resolve_cli; pub use error::ResolveError; -use fabro_types::settings::{ - CliNamespace, FeaturesNamespace, InterpString, ServerNamespace, SettingsLayer, -}; +use fabro_types::settings::{InterpString, ServerNamespace, SettingsLayer}; pub use features::resolve_features; pub use project::resolve_project; pub use run::resolve_run; @@ -19,13 +17,6 @@ pub use workflow::resolve_workflow; use crate::apply_builtin_defaults; -pub fn resolve_cli_from_file(file: &SettingsLayer) -> Result> { - let layer = apply_builtin_defaults(file.clone()); - let mut errors = Vec::new(); - let value = resolve_cli(&layer.cli.clone().unwrap_or_default(), &mut errors); - finish(value, errors) -} - pub fn resolve_server_from_file( file: &SettingsLayer, ) -> Result> { @@ -35,15 +26,6 @@ pub fn resolve_server_from_file( finish(value, errors) } -pub fn resolve_features_from_file( - file: &SettingsLayer, -) -> Result> { - let layer = apply_builtin_defaults(file.clone()); - let mut errors = Vec::new(); - let value = resolve_features(&layer.features.clone().unwrap_or_default(), &mut errors); - finish(value, errors) -} - pub(crate) fn require_interp( value: Option<&InterpString>, path: &str, diff --git a/lib/crates/fabro-config/tests/resolve_cli.rs b/lib/crates/fabro-config/tests/resolve_cli.rs index a9a54fad6..782505583 100644 --- a/lib/crates/fabro-config/tests/resolve_cli.rs +++ b/lib/crates/fabro-config/tests/resolve_cli.rs @@ -3,7 +3,7 @@ reason = "sync test fixture setup; not on a Tokio path" )] -use fabro_config::{parse_settings_layer, resolve_cli_from_file}; +use fabro_config::{UserSettingsBuilder, parse_settings_layer}; use fabro_types::settings::cli::{CliTargetSettings, OutputFormat, OutputVerbosity}; use fabro_types::settings::run::AgentPermissions; use fabro_types::settings::{InterpString, SettingsLayer}; @@ -13,7 +13,9 @@ use temp_env::with_var; fn resolves_cli_defaults_from_empty_settings() { let settings = SettingsLayer::default(); - let cli = resolve_cli_from_file(&settings).expect("empty settings should resolve"); + let cli = UserSettingsBuilder::from_layer(&settings) + .expect("empty settings should resolve") + .cli; assert!(cli.target.is_none()); assert_eq!(cli.output.format, OutputFormat::Text); @@ -43,14 +45,12 @@ session_sandboxes = true .expect("user settings should resolve"); assert_eq!( - user_settings.cli, - resolve_cli_from_file(&settings).expect("cli namespace should resolve") - ); - assert_eq!( - user_settings.features, - fabro_config::resolve_features_from_file(&settings) - .expect("features namespace should resolve") + user_settings.cli.target, + Some(CliTargetSettings::Http { + url: InterpString::parse("https://config.example.com"), + }) ); + assert!(user_settings.features.session_sandboxes); } #[test] @@ -128,7 +128,9 @@ level = "debug" ) .expect("fixture should parse"); - let cli = resolve_cli_from_file(&settings).expect("cli settings should resolve"); + let cli = UserSettingsBuilder::from_layer(&settings) + .expect("cli settings should resolve") + .cli; let CliTargetSettings::Http { url } = cli.target.expect("target") else { panic!("expected http target"); diff --git a/lib/crates/fabro-config/tests/resolve_features.rs b/lib/crates/fabro-config/tests/resolve_features.rs index 59c6a1740..6d8131707 100644 --- a/lib/crates/fabro-config/tests/resolve_features.rs +++ b/lib/crates/fabro-config/tests/resolve_features.rs @@ -1,11 +1,13 @@ -use fabro_config::{parse_settings_layer, resolve_features_from_file}; +use fabro_config::{UserSettingsBuilder, parse_settings_layer}; use fabro_types::settings::SettingsLayer; #[test] fn resolves_features_defaults_from_empty_settings() { let settings = SettingsLayer::default(); - let features = resolve_features_from_file(&settings).expect("empty settings should resolve"); + let features = UserSettingsBuilder::from_layer(&settings) + .expect("empty settings should resolve") + .features; assert!(!features.session_sandboxes); } @@ -22,7 +24,9 @@ session_sandboxes = true ) .expect("fixture should parse"); - let features = resolve_features_from_file(&settings).expect("features should resolve"); + let features = UserSettingsBuilder::from_layer(&settings) + .expect("features should resolve") + .features; assert!(features.session_sandboxes); } diff --git a/lib/crates/fabro-config/tests/resolve_server.rs b/lib/crates/fabro-config/tests/resolve_server.rs index c8d172aa5..84a285006 100644 --- a/lib/crates/fabro-config/tests/resolve_server.rs +++ b/lib/crates/fabro-config/tests/resolve_server.rs @@ -94,16 +94,12 @@ session_sandboxes = true let context = fabro_config::ServerSettingsBuilder::from_layer(&settings) .expect("settings should resolve"); + let user_settings = fabro_config::UserSettingsBuilder::from_layer(&settings) + .expect("user settings should resolve"); - assert_eq!( - context.server, - fabro_config::resolve_server_from_file(&settings).expect("server namespace should resolve") - ); - assert_eq!( - context.features, - fabro_config::resolve_features_from_file(&settings) - .expect("features namespace should resolve") - ); + assert_eq!(context.server.storage.root.as_source(), "/srv/fabro"); + assert!(context.features.session_sandboxes); + assert_eq!(context.features, user_settings.features); } #[test]