mercurial/debugcommands.py
changeset 35562 6580cf751418
parent 35514 5880318624c9
child 35585 35fb3367f72d
--- a/mercurial/debugcommands.py	Sat Apr 01 17:12:48 2017 +0900
+++ b/mercurial/debugcommands.py	Fri Dec 15 09:30:16 2017 +0100
@@ -69,6 +69,7 @@
     templater,
     treediscovery,
     upgrade,
+    url as urlmod,
     util,
     vfs as vfsmod,
 )
@@ -786,6 +787,30 @@
     localrevs = opts['rev']
     doit(localrevs, remoterevs)
 
+_chunksize = 4 << 10
+
+@command('debugdownload',
+    [
+        ('o', 'output', '', _('path')),
+    ],
+    norepo=True)
+def debugdownload(ui, url, output=None, **opts):
+    """download a resource using Mercurial logic and config
+    """
+    fh = urlmod.open(ui, url, output)
+
+    dest = ui
+    if output:
+        dest = open(output, "wb", _chunksize)
+    try:
+        data = fh.read(_chunksize)
+        while data:
+            dest.write(data)
+            data = fh.read(_chunksize)
+    finally:
+        if output:
+            dest.close()
+
 @command('debugextensions', cmdutil.formatteropts, [], norepo=True)
 def debugextensions(ui, **opts):
     '''show information about active extensions'''