drop cli and features resolve wrappers

This commit is contained in:
Bryan Helmkamp 2026-04-23 14:43:07 -04:00
parent 43d32464a2
commit 916b97c0ad
No known key found for this signature in database
5 changed files with 27 additions and 44 deletions

View file

@ -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};

View file

@ -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<CliNamespace, Vec<ResolveError>> {
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<ServerNamespace, Vec<ResolveError>> {
@ -35,15 +26,6 @@ pub fn resolve_server_from_file(
finish(value, errors)
}
pub fn resolve_features_from_file(
file: &SettingsLayer,
) -> Result<FeaturesNamespace, Vec<ResolveError>> {
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,

View file

@ -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");

View file

@ -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);
}

View file

@ -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]