Skip to content

Commit 77592fc

Browse files
committed
refactor: Refactor changed_files option
1 parent d2b69b6 commit 77592fc

File tree

4 files changed

+17
-6
lines changed

4 files changed

+17
-6
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ license = "MIT"
88
packages = [{include = "src"}]
99

1010
[tool.poetry.scripts]
11-
code-embedder = "src.main:run"
11+
code-embedder = "src.main:app"
1212

1313
[tool.poetry.dependencies]
1414
python = "^3.11"

src/code_embedding.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,18 @@ class CodeEmbedder:
99
def __init__(
1010
self,
1111
readme_paths: list[str],
12+
changed_files: list[str] | None,
1213
script_metadata_extractor: ScriptMetadataExtractorInterface,
1314
script_content_reader: ScriptContentReaderInterface,
1415
) -> None:
1516
self._readme_paths = readme_paths
17+
self._changed_files = changed_files
1618
self._script_metadata_extractor = script_metadata_extractor
1719
self._script_content_reader = script_content_reader
1820

1921
def __call__(self) -> None:
2022
for readme_path in self._readme_paths:
21-
self._process_readme(readme_path)
23+
self._process_readme(readme_path=readme_path)
2224

2325
def _process_readme(self, readme_path: str) -> None:
2426
readme_content = self._read_readme(readme_path)
@@ -27,9 +29,16 @@ def _process_readme(self, readme_path: str) -> None:
2729
return
2830

2931
scripts = self._extract_scripts(readme_content=readme_content, readme_path=readme_path)
32+
3033
if not scripts:
3134
return
3235

36+
if self._changed_files:
37+
# Reduce scripts to only the ones that have changed only when there were no changes
38+
# to the readme file
39+
if readme_path not in self._changed_files:
40+
scripts = [script for script in scripts if script.path in self._changed_files]
41+
3342
script_contents = self._script_content_reader.read(scripts=scripts)
3443

3544
self._update_readme(

src/main.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010

1111
app = typer.Typer()
1212

13-
# Setup logging for the script running as pre-commit hook
1413
logger.remove()
1514
logger.add(sys.stderr, level="ERROR")
1615

1716

1817
@app.command(help="Embed code from scripts to markdown files.")
1918
def run(
19+
all_files: bool = typer.Option(False, help="Process all files in the repository."),
2020
changed_files: list[str] = typer.Argument(None, help="List of changed files to process."),
2121
):
2222
readme_paths = glob.glob("**/*.md", recursive=True)
@@ -27,8 +27,11 @@ def run(
2727

2828
script_metadata_extractor = ScriptMetadataExtractor()
2929
script_content_reader = ScriptContentReader()
30+
files = changed_files if not all_files else None # None for all files
31+
3032
code_embedder = CodeEmbedder(
3133
readme_paths=readme_paths,
34+
changed_files=files,
3235
script_metadata_extractor=script_metadata_extractor,
3336
script_content_reader=script_content_reader,
3437
)
@@ -38,7 +41,4 @@ def run(
3841

3942

4043
if __name__ == "__main__":
41-
# Update logging for the script running as github action
42-
logger.remove()
43-
logger.add(sys.stderr, level="INFO")
4444
typer.run(run)

tests/test_code_embedding.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def test_code_embedder(
4848

4949
code_embedder = CodeEmbedder(
5050
readme_paths=[str(temp_readme_path)],
51+
changed_files=None,
5152
script_metadata_extractor=ScriptMetadataExtractor(),
5253
script_content_reader=ScriptContentReader(),
5354
)
@@ -66,6 +67,7 @@ def test_code_embedder(
6667
def test_code_embedder_unknown_path() -> None:
6768
code_embedder = CodeEmbedder(
6869
readme_paths=["tests/data/readme4.md"],
70+
changed_files=None,
6971
script_metadata_extractor=ScriptMetadataExtractor(),
7072
script_content_reader=ScriptContentReader(),
7173
)

0 commit comments

Comments
 (0)