From 377471d84d1e0bf038f28d2b60c211845d3b7ed2 Mon Sep 17 00:00:00 2001 From: Timur Osmanov Date: Wed, 16 Apr 2025 18:05:11 +0300 Subject: [PATCH 1/6] add: partial build --- foliant/config/from.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/foliant/config/from.py b/foliant/config/from.py index 8cf5436..d73ae53 100644 --- a/foliant/config/from.py +++ b/foliant/config/from.py @@ -11,7 +11,7 @@ ``https://github.com/foliant-docs/docs.git#master``. ''' -from yaml import add_constructor, load, Loader, BaseLoader +from yaml import add_constructor, load, Loader, BaseLoader, safe_load from shutil import copytree, move, rmtree from os import chdir, getcwd from pathlib import Path @@ -255,6 +255,17 @@ def _build_subproject(self, subproject_cached_dir_path: Path) -> str: break source_cwd = getcwd() + partial_build = [] + _partial_build_config = Path(source_cwd + "/partial_build.yml") + if _partial_build_config.exists(): + with open(_partial_build_config, 'r', encoding='utf-8') as file: + yaml_data = safe_load(file) + dir_name = subproject_cached_dir_path.name + if dir_name in yaml_data: + partial_build = yaml_data[dir_name] + + self.logger.debug(f'Subproject partial build list: {partial_build}') + chdir(subproject_cached_dir_path) subproject_debug_mode = True if self.logger.getEffectiveLevel() == DEBUG else False @@ -269,6 +280,7 @@ def _build_subproject(self, subproject_cached_dir_path: Path) -> str: logs_dir=logs_dir_path, quiet=self.quiet, keep_tmp=True, + only_partial=partial_build, debug=subproject_debug_mode ) From 8a60c2830f8b2e07c177d69700d77462110588c0 Mon Sep 17 00:00:00 2001 From: Timur Osmanov Date: Thu, 17 Apr 2025 11:47:03 +0300 Subject: [PATCH 2/6] add: debug msg --- foliant/config/from.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/foliant/config/from.py b/foliant/config/from.py index d73ae53..62ac735 100644 --- a/foliant/config/from.py +++ b/foliant/config/from.py @@ -263,6 +263,8 @@ def _build_subproject(self, subproject_cached_dir_path: Path) -> str: dir_name = subproject_cached_dir_path.name if dir_name in yaml_data: partial_build = yaml_data[dir_name] + else: + self.logger.debug(f'Subproject partial build list not found: {_partial_build_config}') self.logger.debug(f'Subproject partial build list: {partial_build}') From b7362c15098715f1330b8576232b6c2e872ed254 Mon Sep 17 00:00:00 2001 From: Timur Osmanov Date: Wed, 14 May 2025 18:09:17 +0300 Subject: [PATCH 3/6] update: make args --- foliant/config/from.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foliant/config/from.py b/foliant/config/from.py index 62ac735..109368f 100644 --- a/foliant/config/from.py +++ b/foliant/config/from.py @@ -282,7 +282,7 @@ def _build_subproject(self, subproject_cached_dir_path: Path) -> str: logs_dir=logs_dir_path, quiet=self.quiet, keep_tmp=True, - only_partial=partial_build, + only_partial=','.join(partial_build), debug=subproject_debug_mode ) From f66fe1cb92364805deb87bf7ac7e28e33818015f Mon Sep 17 00:00:00 2001 From: Timur Osmanov Date: Thu, 15 May 2025 18:04:10 +0300 Subject: [PATCH 4/6] fix: type resolve --- foliant/config/from.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/foliant/config/from.py b/foliant/config/from.py index 109368f..1d4a221 100644 --- a/foliant/config/from.py +++ b/foliant/config/from.py @@ -262,7 +262,10 @@ def _build_subproject(self, subproject_cached_dir_path: Path) -> str: yaml_data = safe_load(file) dir_name = subproject_cached_dir_path.name if dir_name in yaml_data: - partial_build = yaml_data[dir_name] + if isinstance(yaml_data[dir_name], list): + partial_build = yaml_data[dir_name] + else: + partial_build.append(yaml_data[dir_name]) else: self.logger.debug(f'Subproject partial build list not found: {_partial_build_config}') From 6160a1da25b5b0003cf1af1b32c3a8d0bd047483 Mon Sep 17 00:00:00 2001 From: Timur Osmanov Date: Fri, 16 May 2025 11:56:13 +0300 Subject: [PATCH 5/6] fix: partial build --- foliant/config/from.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/foliant/config/from.py b/foliant/config/from.py index 1d4a221..109368f 100644 --- a/foliant/config/from.py +++ b/foliant/config/from.py @@ -262,10 +262,7 @@ def _build_subproject(self, subproject_cached_dir_path: Path) -> str: yaml_data = safe_load(file) dir_name = subproject_cached_dir_path.name if dir_name in yaml_data: - if isinstance(yaml_data[dir_name], list): - partial_build = yaml_data[dir_name] - else: - partial_build.append(yaml_data[dir_name]) + partial_build = yaml_data[dir_name] else: self.logger.debug(f'Subproject partial build list not found: {_partial_build_config}') From 165f86f2789d33fbbc78f1d07c7b31201ba083cc Mon Sep 17 00:00:00 2001 From: Timur Osmanov Date: Tue, 14 Oct 2025 16:16:20 +0300 Subject: [PATCH 6/6] update: changelog.md and README.md --- README.md | 10 ++++++++++ changelog.md | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/README.md b/README.md index 5df68e8..31cc935 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,16 @@ $ foliant src backup --config alternative_config.yml Also you may specify the root directory of your Foliant project by using the `--path` option. If not specified, current directory will be used. +## Partial build + +To use the partial build features (added in foliant 1.0.14), add `partial_build.yml` file, with the following structure: + +```yml +project_name: + - src/file_1.md + - src/dir/file_2.md +``` + ## RepoLink Preprocessor This preprocessor allows to add into each Markdown source a hyperlink to the related file in Git repository. Applying of the preprocessor to subprojects allows to get links to separate repositories from different pages of a single site (e.g. generated with MkDocs). diff --git a/changelog.md b/changelog.md index 93b3e8f..79c8aee 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,7 @@ +# 1.0.17 + +- Added the ability to transfer a list of files via `partial_build.yml`. + # 1.0.16 - Added a preprocessor for merging the includes maps