From de9022724ed8ae2fceadf973ef0532f79de40764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Orhun=20Parmaks=C4=B1z?= Date: Wed, 4 Dec 2024 20:48:01 +0300 Subject: [PATCH] feat(config): discover the configuration file when run in a sub directory --- git-cliff/src/lib.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/git-cliff/src/lib.rs b/git-cliff/src/lib.rs index 7260572dd8..9091be49a4 100644 --- a/git-cliff/src/lib.rs +++ b/git-cliff/src/lib.rs @@ -406,7 +406,7 @@ pub fn run(mut args: Opt) -> Result<()> { } } - // Parse the configuration file. + // Set path for the configuration file. let mut path = args.config.clone(); if !path.exists() { if let Some(config_path) = dirs::config_dir() @@ -416,6 +416,7 @@ pub fn run(mut args: Opt) -> Result<()> { } } + // Parse the configuration file. // Load the default configuration if necessary. let mut config = if let Ok((config, name)) = builtin_config { info!("Using built-in configuration file: {name}"); @@ -424,6 +425,20 @@ pub fn run(mut args: Opt) -> Result<()> { Config::parse(&path)? } else if let Some(contents) = Config::read_from_manifest()? { Config::parse_from_str(&contents)? + } else if let Some(discovered_path) = + env::current_dir()?.ancestors().find_map(|dir| { + let path = dir.join(DEFAULT_CONFIG); + if path.is_file() { + Some(path) + } else { + None + } + }) { + info!( + "Using configuration from parent directory: {}", + discovered_path.display() + ); + Config::parse(&discovered_path)? } else { if !args.context { warn!(