[Pkg-bazaar-commits] r142 ./bzr-builddeb/people/jdw/merge_upstream: Support repacking over any transport.
James Westby
jw+debian at jameswestby.net
Sun Jul 8 09:42:08 UTC 2007
------------------------------------------------------------
revno: 142
committer: James Westby <jw+debian at jameswestby.net>
branch nick: merge_upstream
timestamp: Sun 2007-07-08 10:42:08 +0100
message:
Support repacking over any transport.
The orig_file of repack_tarball can now be any URI or local path.
Transports are used to open the file.
Remote destinations are still not supported.
modified:
repack_tarball.py
-------------- next part --------------
=== modified file 'repack_tarball.py'
--- a/repack_tarball.py 2007-07-01 14:23:31 +0000
+++ b/repack_tarball.py 2007-07-08 09:42:08 +0000
@@ -28,6 +28,8 @@
BzrCommandError,
NotADirectory,
)
+from bzrlib.transport import get_transport
+from bzrlib import urlutils
def repack_tarball(orig_name, new_name, target_dir=None):
@@ -76,30 +78,36 @@
finally:
tar.close()
else:
- if orig_name.endswith('.tar.gz') or orig_name.endswith('.tgz'):
- shutil.copyfile(orig_name, new_name)
- elif orig_name.endswith('.tar'):
- f = open(orig_name)
- try:
+ base_dir, path = urlutils.split(orig_name)
+ transport = get_transport(base_dir)
+ trans_file = transport.get(path)
+ try:
+ if orig_name.endswith('.tar.gz') or orig_name.endswith('.tgz'):
+ dest = open(new_name, 'wb')
+ try:
+ dest.write(trans_file.read())
+ finally:
+ dest.close()
+ elif orig_name.endswith('.tar'):
gz = gzip.GzipFile(new_name, 'w')
try:
- gz.write(f.read())
+ gz.write(trans_file.read())
finally:
gz.close()
- finally:
- f.close()
- elif orig_name.endswith('.tar.bz2'):
- old_tar = tarfile.open(orig_name, 'r:bz2')
- try:
- new_tar = tarfile.open(new_name, 'w:gz')
+ elif orig_name.endswith('.tar.bz2'):
+ old_tar = tarfile.open(orig_name, 'r|bz2', trans_file)
try:
- for old_member in old_tar.getmembers():
- new_tar.addfile(old_member)
+ new_tar = tarfile.open(new_name, 'w|gz')
+ try:
+ for old_member in old_tar.getmembers():
+ new_tar.addfile(old_member)
+ finally:
+ new_tar.close()
finally:
- new_tar.close()
- finally:
- old_tar.close()
- else:
- raise BzrCommandError('Unsupported format for repack: %s' % orig_name)
- # TODO: handle zip files.
+ old_tar.close()
+ else:
+ raise BzrCommandError('Unsupported format for repack: %s' % orig_name)
+ # TODO: handle zip files.
+ finally:
+ trans_file.close()
More information about the Pkg-bazaar-commits
mailing list