mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-07 03:00:29 +00:00
drop public settings load wrappers
This commit is contained in:
parent
2ee9850abb
commit
dc6a92e696
7 changed files with 38 additions and 61 deletions
|
|
@ -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?;
|
||||
|
|
|
|||
|
|
@ -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?;
|
||||
|
|
|
|||
|
|
@ -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?;
|
||||
|
|
|
|||
|
|
@ -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?;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue