Add global `--config` argument to override configuration values

finchie
Jul 29, 2025, 1:42 PM
OWO4EWK7YVHW544XJTTXAYO553GQKWGXIWNECDPWPFOGNJ6KHWAAC

Dependencies

  • [2] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [3] L4JXJHWX pijul/*: reorganize imports and remove extern crate
  • [4] FVQYZQFL Create dialoguer themes based on global config
  • [5] EJ7TFFOW Re-adding Cargo.lock
  • [6] ND62U46T Get nix base builds working again
  • [7] WTPFQPO5 Add global `no_prompt` flag
  • [8] 2MKP7CB7 Move dependencies into workspace `Cargo.toml`
  • [9] Z4PPQZUG Refactor `pijul-config` to support layered configuration
  • [10] YW6NICQV Migrate codebase to refactored `pijul_config` crate
  • [11] HM6QW3CY Handle missing configurations in `pijul_config`
  • [12] 6ZHY3XTG Updating deprecated methods in clap
  • [13] ZSFJT4SF Allow remotes to have a different push and pull address
  • [14] FMKKWCFV Better clap attributes
  • [15] YVA72CP2 Default feedback for the `pijul git` command
  • [16] HGJETVAN Create `pijul_config::global_config_directory()`
  • [17] I52XSRUH Massive cleanup, and simplification

Change contents

  • replacement in pijul-config/src/lib.rs at line 69
    [9.5533][9.5533:5606]()
    pub fn load(repository_path: &Path) -> Result<Self, anyhow::Error> {
    [9.5533]
    [9.5671]
    pub fn load(
    repository_path: &Path,
    config_overrides: Vec<(String, String)>,
    ) -> Result<Self, anyhow::Error> {
  • edit in pijul-config/src/lib.rs at line 131
    [9.7267]
    [11.1279]
    // 4. Command-line configuration overrides
    for (key, value) in config_overrides {
    layers = layers.join((key, value));
    }
  • edit in pijul-config/src/lib.rs at line 229
    [4.538]
    /// Parse a command-line configuration argument into a key/value pair
    pub fn parse_config_arg(argument: &str) -> Result<(String, String), anyhow::Error> {
    let (key, value) = argument
    .split_once('=')
    .ok_or(anyhow::anyhow!("Unable to find '=' character"))?;
    Ok((key.to_string(), value.to_string()))
    }
  • replacement in pijul/src/main.rs at line 5
    [3.694][10.7993:8019]()
    use pijul_config::Config;
    [3.694]
    [7.0]
    use pijul_config::{Config, parse_config_arg};
  • edit in pijul/src/main.rs at line 17
    [2.84538]
    [7.44]
    /// Override a configuration value, in the form `--config key=value`
    #[clap(long, global = true, value_parser = parse_config_arg)]
    pub config: Vec<(String, String)>,
  • replacement in pijul/src/main.rs at line 222
    [10.8072][10.8072:8122]()
    let config = Config::load(&repository_path)?;
    [10.8072]
    [10.8122]
    let config = Config::load(&repository_path, opts.config)?;
  • edit in pijul/Cargo.toml at line 34
    [8.2654]
    [8.2709]
    figment.workspace = true
  • edit in Cargo.lock at line 2189
    [6.2222]
    [5.48314]
    "figment",