Procházet zdrojové kódy

Move command-line implementation to dulwich.cli, so it can at least be tested.

Jelmer Vernooij před 4 roky
rodič
revize
c6d1b87aa1
3 změnil soubory, kde provedl 26 přidání a 15 odebrání
  1. 2 0
      .gitignore
  2. 3 0
      NEWS
  3. 21 15
      dulwich/cli.py

+ 2 - 0
.gitignore

@@ -23,3 +23,5 @@ dulwich.egg-info/
 htmlcov/
 docs/api/*.txt
 .mypy_cache/
+.eggs
+dulwich.dist-info

+ 3 - 0
NEWS

@@ -14,6 +14,9 @@
    back a 401. The client can then retry with credentials.
    (Jelmer Vernooij, #691)
 
+ * Install dulwich script from entry_points, making it slightly easier
+   to use on Windows. (Jelmer Vernooij, #540)
+
 0.20.2	2020-06-01
 
  * Brown bag release to fix uploads of Windows wheels.

+ 21 - 15
bin/dulwich → dulwich/cli.py

@@ -42,10 +42,6 @@ def signal_quit(signal, frame):
     import pdb
     pdb.set_trace()
 
-if 'DULWICH_PDB' in os.environ:
-    signal.signal(signal.SIGQUIT, signal_quit)
-signal.signal(signal.SIGINT, signal_int)
-
 from dulwich import porcelain
 from dulwich.client import get_transport_and_path
 from dulwich.errors import ApplyDeltaError
@@ -702,15 +698,25 @@ commands = {
     "write-tree": cmd_write_tree,
     }
 
-if len(sys.argv) < 2:
-    print("Usage: %s <%s> [OPTIONS...]" % (sys.argv[0], "|".join(commands.keys())))
-    sys.exit(1)
 
-cmd = sys.argv[1]
-try:
-    cmd_kls = commands[cmd]
-except KeyError:
-    print("No such subcommand: %s" % cmd)
-    sys.exit(1)
-# TODO(jelmer): Return non-0 on errors
-cmd_kls().run(sys.argv[2:])
+def main(argv=None):
+    if len(argv) < 1:
+        print("Usage: %s <%s> [OPTIONS...]" % (sys.argv[0], "|".join(commands.keys())))
+        return 1
+
+    cmd = argv[0]
+    try:
+        cmd_kls = commands[cmd]
+    except KeyError:
+        print("No such subcommand: %s" % cmd)
+        return 1
+    # TODO(jelmer): Return non-0 on errors
+    return cmd_kls().run(sys.argv[1:])
+
+
+if __name__ == '__main__':
+    if 'DULWICH_PDB' in os.environ:
+        signal.signal(signal.SIGQUIT, signal_quit)
+    signal.signal(signal.SIGINT, signal_int)
+
+    sys.exit(main(sys.argv[1:]))