diff --git a/pyproject.toml b/pyproject.toml index 5e363bc..c044d74 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "colint" -version = "0.2" +version = "0.2.1" description = "" authors = [ { name = "Davide Colì", email = "davide.coli@secomind.com" }, diff --git a/src/colint/colinter.py b/src/colint/colinter.py index d525c13..e01013a 100644 --- a/src/colint/colinter.py +++ b/src/colint/colinter.py @@ -9,6 +9,7 @@ from .newline_fix.newline_fix import newline_fix from .params.params import Params from .sort_libraries.sorter import sort_imports +from .utils.versioning import get_versioning config_file = Path(__file__).parent / "config.toml" params = Params.from_toml(config_file) @@ -138,6 +139,13 @@ def main(): help="Include notebook cleaning in lint command", ) + parser.add_argument( + "--version", + action="version", + version=get_versioning(), + help="Show program's version number and exit.", + ) + args = parser.parse_args() run_tool(args) diff --git a/src/colint/utils/versioning.py b/src/colint/utils/versioning.py new file mode 100644 index 0000000..f8b20d7 --- /dev/null +++ b/src/colint/utils/versioning.py @@ -0,0 +1,32 @@ +import os +from importlib.metadata import PackageNotFoundError, version + +from git import Repo + + +def _get_version_str() -> str: + try: + return version("colint") + except PackageNotFoundError: + return "(version info not found)" + + +def _get_last_commit_date(): + try: + repo = Repo( + os.path.dirname(os.path.abspath(__file__)), search_parent_directories=True + ) + commit = next(repo.iter_commits("HEAD", max_count=1)) + return commit.committed_datetime.strftime("%Y-%m-%d") + except Exception: + return "unknown" + + +def get_versioning() -> str: + """Get versioning string with the package version and last commit date. + + Returns: + str: A string containing the package name, version, and the date of the + last commit. + """ + return f"colint {_get_version_str()} (last updated: {_get_last_commit_date()})"