Browse Source

install command line interface via `setuptools.setup(entry_points=…)`

Fabian Peter Hammerle 4 years ago
parent
commit
76a716b940
4 changed files with 20 additions and 18 deletions
  1. 3 0
      CHANGELOG.md
  2. 2 4
      setup.py
  3. 12 0
      tests/test_cli.py
  4. 3 14
      tooncher/_cli.py

+ 3 - 0
CHANGELOG.md

@@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
 ## Unreleased
+### Changed
+- install command line interface via `setuptools.setup(entry_points=…)`
+
 ### Removed
 - `argcomplete`
 

+ 2 - 4
setup.py

@@ -1,11 +1,9 @@
-import glob
-
 import setuptools
 
 setuptools.setup(
     name="tooncher",
     use_scm_version=True,
-    packages=["tooncher"],
+    packages=setuptools.find_packages(),
     description="automates toontown rewritten's login process",
     author="Fabian Peter Hammerle",
     author_email="fabian.hammerle@gmail.com",
@@ -13,7 +11,7 @@ setuptools.setup(
     download_url="https://github.com/fphammerle/tooncher/tarball/0.3.1",
     keywords=["game", "launcher", "toontown rewritten", "ttr"],
     classifiers=[],
-    scripts=glob.glob("scripts/*"),
+    entry_points={"console_scripts": ["tooncher = tooncher._cli:main"]},
     install_requires=["pyyaml"],
     setup_requires=["setuptools_scm"],
     tests_require=["pytest"],

+ 12 - 0
tests/test_cli.py

@@ -0,0 +1,12 @@
+import subprocess
+
+
+def test_cli_help():
+    proc_info = subprocess.run(
+        ["tooncher", "--help"],
+        check=True,
+        stdout=subprocess.PIPE,
+        stderr=subprocess.PIPE,
+    )
+    assert b"optional arguments:" in proc_info.stdout
+    assert not proc_info.stderr

+ 3 - 14
scripts/tooncher → tooncher/_cli.py

@@ -1,8 +1,6 @@
-#!/usr/bin/env python3
-
 import os
-import sys
 
+import argparse
 import yaml
 
 import tooncher
@@ -37,8 +35,6 @@ def run(username, config_path, engine_path=None, validate_ssl_certs=True,
 
 
 def _init_argparser():
-
-    import argparse
     argparser = argparse.ArgumentParser(description=None)
     argparser.add_argument('username')
     argparser.add_argument(
@@ -79,14 +75,7 @@ def _init_argparser():
     return argparser
 
 
-def main(argv):
-
+def main() -> None:
     argparser = _init_argparser()
-    args = argparser.parse_args(argv)
-
+    args = argparser.parse_args()
     run(**vars(args))
-
-    return 0
-
-if __name__ == "__main__":
-    sys.exit(main(sys.argv[1:]))