perfgate-config 0.15.1

Configuration loading and merging logic for perfgate
Documentation

perfgate-config

Configuration loading with three-source priority merge: CLI flags > environment variables > config file.

Overview

perfgate-config resolves the effective perfgate configuration by merging values from three sources in priority order:

  1. CLI flags (highest priority)
  2. Environment variables (PERFGATE_SERVER_URL, PERFGATE_API_KEY, PERFGATE_PROJECT)
  3. Config file (perfgate.toml or perfgate.json)

The merged result is a ResolvedServerConfig that can create ready-to-use BaselineClient or FallbackClient instances for talking to the centralized Baseline Service.

Key API

Functions

  • load_config_file(path) — reads a perfgate.toml or perfgate.json file and deserializes it into a ConfigFile. Returns the default config if the file does not exist.
  • resolve_server_config(flag_url, flag_key, flag_project, file_config) — merges CLI flags with the [baseline_server] section of the config file, producing a ResolvedServerConfig.

ResolvedServerConfig

Method Description
is_configured() true when a server URL is present
create_client() builds a BaselineClient from the merged settings
create_fallback_client(dir) wraps the client in a FallbackClient that falls back to local storage
require_fallback_client(dir, msg) like above, but returns an error if the server is not configured
resolve_project(override) resolves the project name from the override, config, or returns an error

Example

use std::path::Path;
use perfgate_config::{load_config_file, resolve_server_config};

let config = load_config_file(Path::new("perfgate.toml"))?;
let resolved = resolve_server_config(
    Some("https://baselines.example.com".into()),
    None,
    None,
    &config.baseline_server,
);

if resolved.is_configured() {
    let client = resolved.create_client()?;
    // use client to upload/download baselines...
}

Workspace Role

perfgate-config bridges configuration sources and the client library:

perfgate-types + perfgate-client -> perfgate-config -> perfgate-app / perfgate-cli

License

Licensed under either Apache-2.0 or MIT.