diff --git a/news/create-app.rst b/news/create-app.rst new file mode 100644 index 0000000..238e7f1 --- /dev/null +++ b/news/create-app.rst @@ -0,0 +1,23 @@ +**Added:** + +* Add CLI to return diffpy.cmi version + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* + +**Security:** + +* diff --git a/pyproject.toml b/pyproject.toml index 00e749b..7e6df7c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,6 +48,9 @@ include = ["*"] # package names should match these glob patterns (["*"] by defa exclude = [] # exclude packages matching these glob patterns (empty by default) namespaces = false # to disable scanning PEP 420 namespaces (true by default) +[project.scripts] +diffpy-cmi = "diffpy.cmi.app:main" + [tool.setuptools.dynamic] dependencies = {file = ["requirements/pip.txt"]} diff --git a/src/diffpy/cmi/__init__.py b/src/diffpy/cmi/__init__.py index 073d76e..436f6a8 100644 --- a/src/diffpy/cmi/__init__.py +++ b/src/diffpy/cmi/__init__.py @@ -12,7 +12,10 @@ # See LICENSE.rst for license information. # ############################################################################## -"""Complex modeling infrastructure: a modulare framework for multi-modal modeling of scientific data.""" +""" +Complex modeling infrastructure: a modulare framework for multi-modal +modeling of scientific data. +""" # package version from diffpy.cmi.version import __version__ # noqa diff --git a/src/diffpy/cmi/app.py b/src/diffpy/cmi/app.py new file mode 100644 index 0000000..d3e9277 --- /dev/null +++ b/src/diffpy/cmi/app.py @@ -0,0 +1,53 @@ +import getopt +import sys + + +def usage(): + """Print short help message.""" + print( + """\ + +DiffPy-CMI is our complex modeling framework. It is a highly flexible library +of Python modules for robust modeling of nanostructures in crystals, +nanomaterials, and amorphous materials. + +Docs: https://www.diffpy.org/diffpy.cmi + +Usage: + diffpy-cmi [--version] [--help] + +Options: + -V, --version Show version and exit + -h, --help Show this message and exit +""" + ) + + +def version(): + from diffpy.cmi.version import __version__ + + print(f"diffpy-cmi {__version__}") + + +def main(): + try: + opts, args = getopt.gnu_getopt(sys.argv[1:], "hV", ["help", "version"]) + except getopt.GetoptError as err: + print(f"Error: {err}", file=sys.stderr) + usage() + sys.exit(1) + + for opt, _ in opts: + if opt in ("-h", "--help"): + usage() + return + elif opt in ("-V", "--version"): + version() + return + + # Default behavior (if no arguments) + usage() + + +if __name__ == "__main__": + main()