feat(config): implement configuration management #18

Merged
shoko merged 1 commits from feat/issue-7-config into main 2026-04-02 23:43:57 +02:00
Owner

Summary

Create centralized configuration management with file-based config and environment variable overrides.

Changes

  • Create config.py with Config class
  • Config precedence: ENV > config file > defaults
  • data_dir: JIGAIDO_DATA_DIR env > ~/.jigaido/config.json > ~/.jigaido/
  • bot_token: JIGAIDO_BOT_TOKEN env var
  • ensure_data_dir() method to create data directory

Files

  • config.py - Configuration management
  • tests/test_config.py - 7 passing tests

Acceptance Criteria

  • Config class loads with correct precedence
  • config.data_dir returns a valid Path
  • config.ensure_data_dir() creates directory if missing
  • Config file support at ~/.jigaido/config.json

Fixes #7

## Summary Create centralized configuration management with file-based config and environment variable overrides. ## Changes - Create `config.py` with `Config` class - Config precedence: ENV > config file > defaults - `data_dir`: JIGAIDO_DATA_DIR env > ~/.jigaido/config.json > ~/.jigaido/ - `bot_token`: JIGAIDO_BOT_TOKEN env var - `ensure_data_dir()` method to create data directory ## Files - `config.py` - Configuration management - `tests/test_config.py` - 7 passing tests ## Acceptance Criteria - [x] Config class loads with correct precedence - [x] config.data_dir returns a valid Path - [x] config.ensure_data_dir() creates directory if missing - [x] Config file support at ~/.jigaido/config.json Fixes #7
shoko added 1 commit 2026-04-02 22:16:57 +02:00
- Create config.py with Config class
- Config precedence: ENV > config file > defaults
- data_dir: JIGAIDO_DATA_DIR env or ~/.jigaido/config.json or default
- bot_token: JIGAIDO_BOT_TOKEN env var
- ensure_data_dir() method to create data directory
- Add tests/test_config.py with 7 passing tests

Fixes #7
Collaborator

can you post here the tests result? @shoko

can you post here the tests result? @shoko
Author
Owner

Test results for feat/issue-7-config:

============================= test session starts ==============================
platform linux -- Python 3.14.3, pytest-8.3.5, pluggy-1.6.0
plugins: anyio-4.13.0, asyncio-0.25.2
collecting ... collected 7 items

tests/test_config.py::TestConfigDataDir::test_default_data_dir PASSED    [ 14%]
tests/test_config.py::TestConfigDataDir::test_env_override_data_dir PASSED [ 28%]
tests/test_config.py::TestConfigDataDir::test_config_file_data_dir PASSED [ 42%]
tests/test_config.py::TestConfigDataDir::test_bot_token_from_env PASSED  [ 57%]
tests/test_config.py::TestConfigDataDir::test_bot_token_none_when_not_set PASSED [ 71%]
tests/test_config.py::TestConfigEnsureDataDir::test_ensure_data_dir_creates_directory PASSED [ 85%]
tests/test_config.py::TestConfigEnsureDataDir::test_ensure_data_dir_does_nothing_if_exists PASSED [100%]

========================= 7 passed, 1 warning in 0.02s =========================
Test results for feat/issue-7-config: ``` ============================= test session starts ============================== platform linux -- Python 3.14.3, pytest-8.3.5, pluggy-1.6.0 plugins: anyio-4.13.0, asyncio-0.25.2 collecting ... collected 7 items tests/test_config.py::TestConfigDataDir::test_default_data_dir PASSED [ 14%] tests/test_config.py::TestConfigDataDir::test_env_override_data_dir PASSED [ 28%] tests/test_config.py::TestConfigDataDir::test_config_file_data_dir PASSED [ 42%] tests/test_config.py::TestConfigDataDir::test_bot_token_from_env PASSED [ 57%] tests/test_config.py::TestConfigDataDir::test_bot_token_none_when_not_set PASSED [ 71%] tests/test_config.py::TestConfigEnsureDataDir::test_ensure_data_dir_creates_directory PASSED [ 85%] tests/test_config.py::TestConfigEnsureDataDir::test_ensure_data_dir_does_nothing_if_exists PASSED [100%] ========================= 7 passed, 1 warning in 0.02s ========================= ```
han approved these changes 2026-04-02 23:18:10 +02:00
han left a comment
Collaborator

lgtm

lgtm
shoko merged commit 5aebb5a814 into main 2026-04-02 23:43:57 +02:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: shoko/jigaido#18