Skip to content

feat: implement user configuration file support#108

Merged
quintesse merged 2 commits intomainfrom
feature/user-config-file
Mar 31, 2026
Merged

feat: implement user configuration file support#108
quintesse merged 2 commits intomainfrom
feature/user-config-file

Conversation

@quintesse
Copy link
Copy Markdown
Contributor

@quintesse quintesse commented Mar 31, 2026

Add support for user-level configuration files to set default values for common command-line options

Fixes #107

Add support for user-level configuration files to set default values for
common command-line options. Configuration is loaded from (in priority order):
1. --config CLI option
2. JPM_CONFIG environment variable
3. ~/.config/jpm/config.yml (XDG standard location)
4. ~/.jpmcfg.yml (fallback location)

Features:
- Configuration for cache, directory, no-links, and repositories options
- Home directory expansion (~/ in paths)
- Graceful degradation if config file cannot be read
- CLI options override config file settings
- Repository merging (config repos + CLI repos)
- Explicit config path via --config or JPM_CONFIG

Implementation:
- Created UserConfig class for YAML config parsing
- Added ConfigMixin for global --config option (follows VerboseMixin pattern)
- Updated DepsMixin to load and use UserConfig
- Added test isolation using JPM_CONFIG env var
- Updated tests to reflect new usage line with --config option
Add documentation for:
- --config CLI option in Common options section
- Configuration File section with locations, format, and examples
- Configuration precedence order
- Path expansion for home directory (~/)
- Examples showing various usage patterns
@quintesse quintesse changed the title feat: implement user configuration file support (issue #107) feat: implement user configuration file support Mar 31, 2026
@quintesse quintesse merged commit c2fd4df into main Mar 31, 2026
3 checks passed
@quintesse quintesse deleted the feature/user-config-file branch March 31, 2026 12:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement configuration file

1 participant