mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-06-09 01:35:18 +02:00
fix(config,cli): reject --resolved+--show-origin; drop dead ActiveContext.server
config view --resolved --show-origin silently dropped --show-origin; add clap conflicts_with so the parser rejects the combo loudly. Remove the unused `server` field from ActiveContext (parsed, always written None, never read) — server-qualified active context is a V2/V3 concern; don't ship an unfulfilled field.
This commit is contained in:
parent
c7c82beafb
commit
922666fc70
3 changed files with 20 additions and 10 deletions
|
|
@ -533,7 +533,7 @@ enum ConfigCommand {
|
|||
#[arg(long)]
|
||||
config: Option<PathBuf>,
|
||||
/// Resolve the named graph (or `defaults.graph`) to its typed locator.
|
||||
#[arg(long)]
|
||||
#[arg(long, conflicts_with = "show_origin")]
|
||||
resolved: bool,
|
||||
/// Annotate each value with the layer (global/project) it came from.
|
||||
#[arg(long = "show-origin")]
|
||||
|
|
@ -3166,7 +3166,6 @@ async fn main() -> Result<()> {
|
|||
resolved.resolve_graph(None, Some(&graph))?;
|
||||
write_active_context(&ActiveContext {
|
||||
graph: graph.clone(),
|
||||
server: None,
|
||||
})?;
|
||||
println!("active graph set to '{graph}'");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -371,6 +371,19 @@ fn config_view_resolved_prints_embedded_and_remote_locators() {
|
|||
assert_eq!(remote["graph_id"], "prod");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn config_view_resolved_conflicts_with_show_origin() {
|
||||
// The two modes are mutually exclusive; the parser rejects the combo loudly
|
||||
// rather than silently dropping --show-origin.
|
||||
output_failure(
|
||||
cli()
|
||||
.arg("config")
|
||||
.arg("view")
|
||||
.arg("--resolved")
|
||||
.arg("--show-origin"),
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn use_sets_active_graph_targeted_by_bare_commands() {
|
||||
let graph_dir = tempdir().unwrap();
|
||||
|
|
|
|||
|
|
@ -1072,14 +1072,13 @@ pub fn global_config_file() -> Option<PathBuf> {
|
|||
}
|
||||
|
||||
/// The active context selected by `omnigraph use` — RFC-002 §5. A thin pointer to
|
||||
/// the default graph (and optionally its server), written to
|
||||
/// `<global>/state/active.yaml` and read as the `State` layer (between global and
|
||||
/// project) so a bare command targets the active graph.
|
||||
/// the default graph, written to `<global>/state/active.yaml` and read as the
|
||||
/// `State` layer (between global and project) so a bare command targets the active
|
||||
/// graph. (A default *server* belongs here too once server-qualified selection
|
||||
/// lands in V2/V3 — not modeled now to avoid an unused field.)
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct ActiveContext {
|
||||
pub graph: String,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub server: Option<String>,
|
||||
}
|
||||
|
||||
/// Path of the active-context state file (`<global>/state/active.yaml`).
|
||||
|
|
@ -1100,9 +1099,8 @@ pub fn write_active_context(context: &ActiveContext) -> Result<()> {
|
|||
}
|
||||
|
||||
/// Build the synthetic `State` layer config from an active-context file, if it
|
||||
/// exists: a thin config whose only effect is setting `defaults.graph` (and, when
|
||||
/// present, the default server). Marked not-loaded-from-file so it raises no
|
||||
/// version/legacy warnings.
|
||||
/// exists: a thin config whose only effect is setting `defaults.graph`. Marked
|
||||
/// not-loaded-from-file so it raises no version/legacy warnings.
|
||||
fn load_state_layer(path: &Path) -> Result<Option<OmnigraphConfig>> {
|
||||
if !path.exists() {
|
||||
return Ok(None);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue