diff --git a/src/glide/cli.py b/src/glide/cli.py index 087e41d..7dabeee 100644 --- a/src/glide/cli.py +++ b/src/glide/cli.py @@ -3,6 +3,7 @@ import functools import inspect import logging +from importlib.metadata import version from pathlib import Path import typer @@ -17,6 +18,12 @@ app = typer.Typer() +def version_callback(value: bool): + if value: + typer.echo(f"glide version {version('glide')}") + raise typer.Exit() + + def log_args(func): """Decorator to log all argument names and values to a function using the logging module.""" @@ -48,7 +55,16 @@ def wrapper(*args, **kwargs): @app.callback() -def main(log_level: str = "WARN", log_file: str | None = None) -> None: +def main( + log_level: str = "WARN", + log_file: str | None = None, + version: Annotated[ + bool, + typer.Option( + "--version", "-v", callback=version_callback, help="Show version and exit." + ), + ] = False, +) -> None: """glide is a command line program for processing Slocum glider data.""" logging.basicConfig( level=getattr(logging, log_level.upper()),