drop public settings load wrappers

This commit is contained in:
Bryan Helmkamp 2026-04-23 14:59:48 -04:00
parent 2ee9850abb
commit dc6a92e696
No known key found for this signature in database
7 changed files with 38 additions and 61 deletions

View file

@ -11,8 +11,7 @@ use std::io::Write;
use anyhow::{Context, bail};
use fabro_api::types;
use fabro_config::load::load_settings_user;
use fabro_config::user::active_settings_path;
use fabro_config::user::{active_settings_path, load_settings_config};
use fabro_types::settings::SettingsLayer;
use fabro_util::terminal::Styles;
use tracing::debug;
@ -40,7 +39,7 @@ pub(crate) async fn run(
args_layer: SettingsLayer::default(),
args: None,
run_id: None,
user_layer: load_settings_user()?,
user_layer: load_settings_config(None)?,
user_settings_path: Some(active_settings_path(None)),
})?;
let client = ctx.server().await?;

View file

@ -1,6 +1,5 @@
use anyhow::bail;
use fabro_config::load::load_settings_user;
use fabro_config::user::active_settings_path;
use fabro_config::user::{active_settings_path, load_settings_config};
use fabro_util::terminal::Styles;
use crate::args::PreflightArgs;
@ -27,7 +26,7 @@ pub(crate) async fn execute(
args_layer: preflight_args_layer(&args)?,
args: preflight_manifest_args(&args),
run_id: None,
user_layer: load_settings_user()?,
user_layer: load_settings_config(None)?,
user_settings_path: Some(active_settings_path(None)),
})?;
let client = ctx.server().await?;

View file

@ -1,5 +1,4 @@
use fabro_config::load::load_settings_user;
use fabro_config::user::active_settings_path;
use fabro_config::user::{active_settings_path, load_settings_config};
use fabro_types::RunId;
use fabro_util::terminal::Styles;
@ -42,7 +41,7 @@ pub(crate) async fn create_run(
args_layer: cli_args_config,
args: run_manifest_args(args),
run_id,
user_layer: load_settings_user()?,
user_layer: load_settings_config(None)?,
user_settings_path: Some(active_settings_path(None)),
})?;
let client = ctx.server().await?;

View file

@ -1,6 +1,5 @@
use anyhow::bail;
use fabro_config::load::load_settings_user;
use fabro_config::user::active_settings_path;
use fabro_config::user::{active_settings_path, load_settings_config};
use fabro_types::settings::SettingsLayer;
use fabro_util::terminal::Styles;
@ -23,7 +22,7 @@ pub(crate) async fn run(
args_layer: SettingsLayer::default(),
args: None,
run_id: None,
user_layer: load_settings_user()?,
user_layer: load_settings_config(None)?,
user_settings_path: Some(active_settings_path(None)),
})?;
let client = ctx.server().await?;

View file

@ -8,7 +8,6 @@ use std::path::{Component, Path, PathBuf};
use anyhow::{Context, Result, anyhow};
use fabro_api::types;
use fabro_config::load::load_settings_for_workflow;
use fabro_config::parse_settings_layer;
use fabro_config::project::{self, discover_project_config, resolve_workflow_path};
use fabro_config::run::resolve_run_goal;
@ -30,7 +29,7 @@ pub(crate) struct ManifestBuildInput {
pub args: Option<types::ManifestArgs>,
pub run_id: Option<RunId>,
/// User-level settings layer. Production callers load via
/// `load_settings_user()`; tests pass `SettingsLayer::default()`.
/// `load_settings_config(None)`; tests pass `SettingsLayer::default()`.
pub user_layer: SettingsLayer,
/// Path to the user settings file (for inclusion in
/// `RunManifest.configs`). `None` skips the user config entry.
@ -57,14 +56,35 @@ struct WorkflowScanInput {
}
pub(crate) fn build_run_manifest(input: ManifestBuildInput) -> Result<BuiltManifest> {
let workflow_layer = load_settings_for_workflow(&input.workflow, &input.cwd)?;
let root_resolution = resolve_workflow_path(&input.workflow, &input.cwd)?;
if root_resolution.workflow_config.is_none()
&& !root_resolution.resolved_workflow_path.is_file()
{
return Err(fabro_config::Error::WorkflowNotFound(
root_resolution.resolved_workflow_path.display().to_string(),
)
.into());
}
let workflow_parent = root_resolution
.resolved_workflow_path
.parent()
.unwrap_or_else(|| Path::new("."));
let project_config = discover_project_config(workflow_parent)?;
let workflow_layer = root_resolution
.workflow_config
.clone()
.unwrap_or_default()
.combine(
project_config
.as_ref()
.map(|(_, config)| config.clone())
.unwrap_or_default(),
);
let merged_settings = input
.args_layer
.clone()
.combine(workflow_layer)
.combine(input.user_layer);
let root_resolution = resolve_workflow_path(&input.workflow, &input.cwd)?;
let target_path = root_resolution.dot_path.clone();
let target_logical_path = to_logical_path(&target_path, &input.cwd)?;
let target_logical_path_string = logical_path_string(&target_logical_path);
@ -83,12 +103,7 @@ pub(crate) fn build_run_manifest(input: ManifestBuildInput) -> Result<BuiltManif
.ok_or_else(|| anyhow!("root workflow missing from manifest bundle"))?;
let mut configs = Vec::new();
if let Some((path, _config)) = discover_project_config(
root_resolution
.resolved_workflow_path
.parent()
.unwrap_or_else(|| Path::new(".")),
)? {
if let Some((path, _config)) = project_config {
let source = std::fs::read_to_string(&path)
.with_context(|| format!("Failed to read {}", path.display()))?;
configs.push(types::ManifestConfig {

View file

@ -14,7 +14,7 @@ pub mod daemon;
pub mod envfile;
pub mod error;
pub mod home;
pub mod load;
mod load;
pub mod parse;
pub mod project;
pub mod resolve;
@ -31,9 +31,6 @@ pub(crate) use defaults::apply_builtin_defaults;
pub use error::{Error, Result};
pub use fabro_util::path::expand_tilde;
pub use home::Home;
pub use load::{
load_settings_for_workflow, load_settings_path, load_settings_project, load_settings_user,
};
pub use parse::{ParseError, parse_settings_layer};
pub use resolve::{
ResolveError, dev_token_auth_enabled, resolve_cli, resolve_features, resolve_project,

View file

@ -6,12 +6,12 @@
use std::path::{Path, PathBuf};
use fabro_types::settings::run::RunGoalLayer;
use fabro_types::settings::{Combine, InterpString, SettingsLayer};
use fabro_types::settings::{InterpString, SettingsLayer};
use crate::parse::parse_settings_layer;
use crate::{Error, Result, project, user};
use crate::{Error, Result};
pub fn load_settings_path(path: &Path) -> Result<SettingsLayer> {
pub(crate) fn load_settings_path(path: &Path) -> Result<SettingsLayer> {
let content = std::fs::read_to_string(path).map_err(|source| Error::read_file(path, source))?;
let mut layer = parse_settings_layer(&content)
.map_err(|err| Error::parse_file("Failed to parse settings file", path, err))?;
@ -20,37 +20,6 @@ pub fn load_settings_path(path: &Path) -> Result<SettingsLayer> {
Ok(layer)
}
pub fn load_settings_for_workflow(path: &Path, cwd: &Path) -> Result<SettingsLayer> {
let resolution = project::resolve_workflow_path(path, cwd)?;
if resolution.workflow_config.is_none() && !resolution.resolved_workflow_path.is_file() {
return Err(Error::WorkflowNotFound(
resolution.resolved_workflow_path.display().to_string(),
));
}
let workflow_config = resolution.workflow_config.unwrap_or_default();
let project_config = project::discover_project_config(
resolution
.resolved_workflow_path
.parent()
.unwrap_or_else(|| Path::new(".")),
)?
.map(|(_, config)| config)
.unwrap_or_default();
Ok(workflow_config.combine(project_config))
}
pub fn load_settings_project(start: &Path) -> Result<SettingsLayer> {
Ok(project::discover_project_config(start)?
.map(|(_, config)| config)
.unwrap_or_default())
}
pub fn load_settings_user() -> Result<SettingsLayer> {
user::load_settings_config(None)
}
pub(crate) fn resolve_goal_file_paths(file: &mut SettingsLayer, base_dir: &Path) {
let Some(run) = file.run.as_mut() else {
return;