# HG changeset patch # User Jeff Hammel # Date 1310163601 25200 # Node ID f522620c6a78c09f908b95ac19f81e6fd3ad560e # Parent 542b46ac4e28936da830371ed34536bc59d702a0 now works properly with tarballs diff -r 542b46ac4e28 -r f522620c6a78 carton.py --- a/carton.py Fri Jul 08 15:04:15 2011 -0700 +++ b/carton.py Fri Jul 08 15:20:01 2011 -0700 @@ -143,13 +143,18 @@ # remote tarball raise NotImplementedError else: + assert os.path.exists(source), "%s does not exist" % source + # local directory or tarball - # TODO: check for a tarball - source_buffer = StringIO() - source_tar = tarfile.open(mode="w:gz", fileobj=source_buffer) - source_tar.add(source, arcname=os.path.basename(source)) - source_tar.close() - buffer = source_buffer.getvalue() + if (not os.path.isdir(source)) and tarfile.is_tarfile(source): + # check for a tarball + buffer = file(source).read() + else: + source_buffer = StringIO() + source_tar = tarfile.open(mode="w:gz", fileobj=source_buffer) + source_tar.add(source, arcname=os.path.basename(source)) + source_tar.close() + buffer = source_buffer.getvalue() # could use git, hg, etc repos. but probably shouldn't diff -r 542b46ac4e28 -r f522620c6a78 tests/doctest.txt --- a/tests/doctest.txt Fri Jul 08 15:04:15 2011 -0700 +++ b/tests/doctest.txt Fri Jul 08 15:20:01 2011 -0700 @@ -14,7 +14,7 @@ Invoke carton:: >>> os.chdir(directory) - >>> packages = [os.path.join(here, i) for i in 'packageB', 'packageA'] + >>> packages = [os.path.join(here, i) for i in 'packageC.tar.gz', 'packageB', 'packageA'] >>> carton.main(['foo'] + packages) >>> os.listdir('.') ['foo.py'] @@ -29,7 +29,7 @@ >>> os.path.isdir('foo') True >>> sorted(os.listdir(os.path.join('foo', 'src'))) - ['packageA', 'packageB'] + ['packageA', 'packageB', 'packageC'] Clean up:: diff -r 542b46ac4e28 -r f522620c6a78 tests/packageA/setup.py --- a/tests/packageA/setup.py Fri Jul 08 15:04:15 2011 -0700 +++ b/tests/packageA/setup.py Fri Jul 08 15:20:01 2011 -0700 @@ -9,7 +9,7 @@ version = '0.0' -deps = ['packageB'] +deps = ['packageB', 'packageC'] setup(name='packageA', version=version, diff -r 542b46ac4e28 -r f522620c6a78 tests/packageC.tar.gz Binary file tests/packageC.tar.gz has changed