From a9fdfaa7a1fdd034811e95986298fa150736a8b6 Mon Sep 17 00:00:00 2001 From: Caden Myers Date: Mon, 30 Jun 2025 15:14:19 -0400 Subject: [PATCH 1/6] feat: add CLI to get cmi version --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) 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"]} From 8b64eec5fd0a68aa701846c5619693bc77722078 Mon Sep 17 00:00:00 2001 From: Caden Myers Date: Mon, 30 Jun 2025 15:14:37 -0400 Subject: [PATCH 2/6] feat: add app.py file to get version --- src/diffpy/cmi/app.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/diffpy/cmi/app.py diff --git a/src/diffpy/cmi/app.py b/src/diffpy/cmi/app.py new file mode 100644 index 0000000..24ed628 --- /dev/null +++ b/src/diffpy/cmi/app.py @@ -0,0 +1,7 @@ +from diffpy.cmi.version import __version__ + +def main(): + print(f"diffpy.cmi version: {__version__}") + +if __name__ == "__main__": + main() \ No newline at end of file From c655d3a610962eaa31bcf5a636edfee55cdd1837 Mon Sep 17 00:00:00 2001 From: Caden Myers Date: Mon, 30 Jun 2025 15:17:02 -0400 Subject: [PATCH 3/6] chore: news --- news/create-app.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 news/create-app.rst 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:** + +* From cc0daa3596266833e6c6c290da654598c290fc99 Mon Sep 17 00:00:00 2001 From: Caden Myers Date: Mon, 30 Jun 2025 15:19:06 -0400 Subject: [PATCH 4/6] chore: precommit fixes --- src/diffpy/cmi/__init__.py | 5 ++++- src/diffpy/cmi/app.py | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) 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 index 24ed628..66f18f2 100644 --- a/src/diffpy/cmi/app.py +++ b/src/diffpy/cmi/app.py @@ -1,7 +1,9 @@ from diffpy.cmi.version import __version__ + def main(): print(f"diffpy.cmi version: {__version__}") + if __name__ == "__main__": - main() \ No newline at end of file + main() From 0544dde0f49e7ac195c1c02ac7ae7305a4d899bc Mon Sep 17 00:00:00 2001 From: Caden Myers Date: Mon, 30 Jun 2025 15:40:40 -0400 Subject: [PATCH 5/6] feat: print brief description, doc location, and other flags --- src/diffpy/cmi/app.py | 49 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/src/diffpy/cmi/app.py b/src/diffpy/cmi/app.py index 66f18f2..1b4c6ff 100644 --- a/src/diffpy/cmi/app.py +++ b/src/diffpy/cmi/app.py @@ -1,8 +1,53 @@ -from diffpy.cmi.version import __version__ +import getopt +import sys + + +def usage(): + """Print short help message.""" + print( + """\ +diffpy.cmi – Complex Modeling Infrastructure + +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(): - print(f"diffpy.cmi version: {__version__}") + 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__": From f2a07811f5b8f74e4599cf3624147b033928adb4 Mon Sep 17 00:00:00 2001 From: Caden Myers Date: Mon, 30 Jun 2025 15:42:57 -0400 Subject: [PATCH 6/6] chore: remove redundant info --- src/diffpy/cmi/app.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/diffpy/cmi/app.py b/src/diffpy/cmi/app.py index 1b4c6ff..d3e9277 100644 --- a/src/diffpy/cmi/app.py +++ b/src/diffpy/cmi/app.py @@ -6,7 +6,6 @@ def usage(): """Print short help message.""" print( """\ -diffpy.cmi – Complex Modeling Infrastructure DiffPy-CMI is our complex modeling framework. It is a highly flexible library of Python modules for robust modeling of nanostructures in crystals,