config: Add Config.books_loader() method.

This commit is contained in:
Brett Smith 2020-04-21 13:35:56 -04:00
parent 96a363633f
commit 3000aeee09
2 changed files with 18 additions and 0 deletions

View file

@ -111,6 +111,13 @@ class Config:
retval = default or (Path.home() / self._ENVIRON_DEFAULT_PATHS[key])
return retval
def books_loader(self) -> Optional[books.Loader]:
books_path = self.books_path()
if books_path is None:
return None
else:
return books.Loader(books_path, self.fiscal_year_begin())
def books_path(self) -> Optional[Path]:
try:
retval = Path(self.file_config['Beancount'].get('books dir'))

View file

@ -381,3 +381,14 @@ def test_default_fiscal_year_begin():
actual = config.fiscal_year_begin()
assert actual.month == 3
assert actual.day == 1
def test_books_loader():
books_path = testutil.test_path('bookstest')
config = config_mod.Config()
config.load_string(f'[Beancount]\nbooks dir = {books_path}\n')
loader = config.books_loader()
expected = 'include "{}"'.format(books_path / 'books/2020.beancount')
assert loader.fy_range_string(0, 2020, {}) == expected
def test_books_loader_without_books():
assert config_mod.Config().books_loader() is None