From a3071c97e67e6c050e53066075c4938acec2037f Mon Sep 17 00:00:00 2001 From: codethief Date: Sat, 13 Jan 2024 00:46:19 +0100 Subject: [PATCH] Expose inspect functionality as Python API --- README.md | 14 +++++++++++++- src/inspectortodo/__init__.py | 1 + src/inspectortodo/main.py | 6 ++++++ tests/inspectortodo/test_main.py | 9 ++++++++- 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5bdfd54..ca974c0 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,12 @@ Install and update using pip: pip install inspectortodo -Then you can run InspectorTodo: +Then you can run InspectorTodo from the command line, inspectortodo --help +or invoke its API from your Python code (see example below). + If you installed it in a virtualenv (which is recommended), then you always have to activate the virtualenv first. ### Example @@ -21,6 +23,16 @@ are at project root of InspectorTodo) inspectortodo ./tests/inspectortodo/project_for_testing "IT-\d+" --version-pattern "Release-\d+" --version 2 --versions 1,2,3 +Equivalent example in Python: + +```python +import inspectortodo + +# The inspect() function takes the same arguments as the CLI +inspectortodo.inspect(root_dir="./tests/inspectortodo/project_for_testing", issue_pattern="IT-\d+", version_pattern="Release-\d+", version="2", versions="1,2,3") +``` + + ### Traversing the folder tree InspectorTodo currently features two ways of traversing the folder tree of your project: iterating over all files on diff --git a/src/inspectortodo/__init__.py b/src/inspectortodo/__init__.py index e69de29..7b788f8 100644 --- a/src/inspectortodo/__init__.py +++ b/src/inspectortodo/__init__.py @@ -0,0 +1 @@ +from .main import inspect diff --git a/src/inspectortodo/main.py b/src/inspectortodo/main.py index 082dd85..5744ae8 100644 --- a/src/inspectortodo/main.py +++ b/src/inspectortodo/main.py @@ -31,6 +31,12 @@ help="Set the log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)") def main(root_dir, issue_pattern, version_pattern, version, versions, configfile, jira_user, jira_password, jira_token, issue_filter_field, issue_filter_values, xml, log_level): + inspect(root_dir, issue_pattern, version_pattern, version, versions, configfile, jira_user, jira_password, jira_token, + issue_filter_field, issue_filter_values, xml, log_level) + + +def inspect(root_dir, issue_pattern, version_pattern=None, version=None, versions=None, configfile=None, jira_user=None, jira_password=None, jira_token=None, + issue_filter_field=None, issue_filter_values=None, xml=None, log_level="INFO"): r""" ROOT_DIR is the directory to inspect recursively. diff --git a/tests/inspectortodo/test_main.py b/tests/inspectortodo/test_main.py index f6c9605..20e5327 100644 --- a/tests/inspectortodo/test_main.py +++ b/tests/inspectortodo/test_main.py @@ -1,7 +1,8 @@ import io +import os from xml.etree import ElementTree -from inspectortodo.main import print_xml +from inspectortodo.main import print_xml, inspect from inspectortodo.todo import Todo XML_CONTENT = '\n' \ @@ -36,3 +37,9 @@ def test_print_xml(): root = ElementTree.fromstring(xml_content) assert root is not None + + +def test_inspect(): + # This is an integration test, where we only care about the inspect() + # function not throwing. + inspect(os.path.dirname(__file__) + "/project_for_testing", r"IT-\d+")