From 1ea92c74e72f0269ff176e08018d672363e59dc8 Mon Sep 17 00:00:00 2001 From: dave Date: Thu, 17 Jun 2021 22:34:18 -0700 Subject: [PATCH] initial commit --- .dockerignore | 5 ----- Dockerfile | 18 ------------------ Makefile | 20 -------------------- README.md | 15 +++++++-------- hasmodule/__init__.py | 1 + hasmodule/cli.py | 31 +++++++++++++++++++++++++++++++ package/__init__.py | 0 package/cli.py | 34 ---------------------------------- setup.py | 14 ++++++-------- 9 files changed, 45 insertions(+), 93 deletions(-) delete mode 100644 .dockerignore delete mode 100644 Dockerfile delete mode 100644 Makefile create mode 100644 hasmodule/__init__.py create mode 100644 hasmodule/cli.py delete mode 100644 package/__init__.py delete mode 100644 package/cli.py diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 8500e31..0000000 --- a/.dockerignore +++ /dev/null @@ -1,5 +0,0 @@ -/testenv/ -build/* -dist/* -*.egg-info/* -__pycache__ diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 3cb02a2..0000000 --- a/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM ubuntu:focal - -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y python3-pip && \ - rm -rf /var/lib/apt/lists/* - -ADD requirements.txt /tmp/requirements.txt - -RUN pip3 install -r /tmp/requirements.txt - -ADD . /tmp/code/ - -RUN cd /tmp/code && \ - python3 setup.py install - -USER nobody - -ENTRYPOINT ["packagecli"] diff --git a/Makefile b/Makefile deleted file mode 100644 index 0970dbc..0000000 --- a/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -DOCKERIMAGE := dockermirror:5000/dpedu/package -DOCKEROPTS := -BINARY := dist/package-0.0.0-py3-none-any.whl - -.PHONY: $(BINARY) -$(BINARY): - python3 setup.py bdist_wheel - -.PHONY: image -image: - docker build -t $(DOCKERIMAGE) $(DOCKEROPTS) . - -.PHONY: push -push: image - docker push $(DOCKERIMAGE) - -.PHONY: testenv -testenv: - virtualenv -p python3 testenv - testenv/bin/pip3 install -r requirements.txt diff --git a/README.md b/README.md index 6f0d2b9..9b17bb5 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,10 @@ -package -======= +has-module +========== -Base git repo for a python project +Simple tool for checking if a python module is installed. -You'll want to edit: +`has-module module_name [version]` -* Rename `package` directory -* name, description, package module, and scripts in `setup.py` -* docker image name in `Makefile` -* entrypoint script name in `Dockerfile` +* If the python module named by `$module_name` is not installed, return exit code 1. +* If `$version` is supplied and the installed module's version doesn't match it, return exit code 1. +* Otherwise, the module was successfully imported and the exit code will be 0. diff --git a/hasmodule/__init__.py b/hasmodule/__init__.py new file mode 100644 index 0000000..b3c06d4 --- /dev/null +++ b/hasmodule/__init__.py @@ -0,0 +1 @@ +__version__ = "0.0.1" \ No newline at end of file diff --git a/hasmodule/cli.py b/hasmodule/cli.py new file mode 100644 index 0000000..bff7322 --- /dev/null +++ b/hasmodule/cli.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python + +from sys import exit +import argparse + + +def check(module, version=None): + m = __import__(module) + if version is not None: + assert m.__version__ == version, "Wrong version" + + +def main(): + parser = argparse.ArgumentParser(description="simple tool for checking if a python module is installed") + + parser.add_argument('module', help='python module to test for') + parser.add_argument('version', nargs='?', help='version string to check against module.__version__') + + args = parser.parse_args() + + try: + check(args.module, args.version) + except Exception as e: + # module is missing or wrong version + print(str(e)) + exit(1) + exit(0) + + +if __name__ == '__main__': + main() diff --git a/package/__init__.py b/package/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/package/cli.py b/package/cli.py deleted file mode 100644 index a42e626..0000000 --- a/package/cli.py +++ /dev/null @@ -1,34 +0,0 @@ - -import logging -import argparse -import logging - - -def cmd_foo(args, parser): - pass - - -def cmd_bar(args, parser): - pass - - -def get_args(): - parser = argparse.ArgumentParser() - - sp_action = parser.add_subparsers(dest="action", help="action to take") - - p_foo = sp_action.add_parser("foo", help="foo action") - p_foo.set_defaults(func=cmd_foo) - p_foo.add_argument("-c", "--config", help="config file path") - - sp_bar = sp_action.add_subparsers(dest="bar", help="bar action") - sp_bar.set_defaults(func=cmd_bar) - sp_bar.add_argument("-s", "--shutdown", action="store_true", help="shutdown on program exit") - - return parser.parse_args(), parser - - -def main(): - logging.basicConfig(level=logging.INFO) - args, parser = get_args() - args.func(args, parser) diff --git a/setup.py b/setup.py index ca45cdc..4df144c 100644 --- a/setup.py +++ b/setup.py @@ -2,26 +2,24 @@ from setuptools import setup - - -__version__ = "0.0.0" +from hasmodule import __version__ with open("requirements.txt") as f: deps = f.read().split() -setup(name='package', +setup(name='hasmodule', version=__version__, - description='description', - url='', + description='simple tool for checking if a python module is installed', + url='https://git.davepedu.com/dave/has-module', author='dpedu', author_email='dave@davepedu.com', - packages=['package'], + packages=['hasmodule'], install_requires=deps, entry_points={ "console_scripts": [ - "packagecli = package.cli:main", + "has-module = hasmodule.cli:main", ] }, zip_safe=False)