/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/export/__init__.py

  • Committer: Jelmer Vernooij
  • Date: 2018-05-19 13:16:11 UTC
  • mto: (6968.4.3 git-archive)
  • mto: This revision was merged to the branch mainline in revision 6972.
  • Revision ID: jelmer@jelmer.uk-20180519131611-l9h9ud41j7qg1m03
Move tar/zip to breezy.archive.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
import warnings
25
25
 
26
26
from .. import (
 
27
    archive,
27
28
    errors,
28
29
    pyutils,
29
30
    trace,
30
31
    )
31
32
 
32
 
# Maps format name => export function
33
 
_exporters = {}
34
 
# Maps filename extensions => export format name
35
 
_exporter_extensions = {}
36
 
 
37
 
 
38
 
def register_exporter(format, extensions, func, override=False):
39
 
    """Register an exporter.
40
 
 
41
 
    :param format: This is the name of the format, such as 'tgz' or 'zip'
42
 
    :param extensions: Extensions which should be used in the case that a
43
 
                       format was not explicitly specified.
44
 
    :type extensions: List
45
 
    :param func: The function. It will be called with (tree, dest, root)
46
 
    :param override: Whether to override an object which already exists.
47
 
                     Frequently plugins will want to provide functionality
48
 
                     until it shows up in mainline, so the default is False.
49
 
    """
50
 
    global _exporters, _exporter_extensions
51
 
 
52
 
    if (format not in _exporters) or override:
53
 
        _exporters[format] = func
54
 
 
55
 
    for ext in extensions:
56
 
        if (ext not in _exporter_extensions) or override:
57
 
            _exporter_extensions[ext] = format
58
 
 
59
 
 
60
 
def register_lazy_exporter(scheme, extensions, module, funcname):
61
 
    """Register lazy-loaded exporter function.
62
 
 
63
 
    When requesting a specific type of export, load the respective path.
64
 
    """
65
 
    def _loader(tree, dest, root, subdir, force_mtime, fileobj):
66
 
        func = pyutils.get_named_object(module, funcname)
67
 
        return func(tree, dest, root, subdir, force_mtime=force_mtime,
68
 
            fileobj=fileobj)
69
 
 
70
 
    register_exporter(scheme, extensions, _loader)
71
 
 
72
 
 
73
33
def get_stream_export_generator(tree, name=None, format=None, root=None,
74
34
        subdir=None, per_file_timestamps=False):
75
35
    """Returns a generator that exports the given tree as a stream.
100
60
    global _exporters
101
61
 
102
62
    if format is None and name is not None:
103
 
        format = get_format_from_filename(name)
 
63
        format = archive.format_registry.get_format_from_filename(name)
104
64
 
105
65
    if format is None:
106
66
        # Default to tar
143
103
                yield temp.read()
144
104
 
145
105
 
146
 
def get_format_from_filename(name):
147
 
    global _exporter_extensions
148
 
 
149
 
    for ext in _exporter_extensions:
150
 
        if name.endswith(ext):
151
 
            return _exporter_extensions[ext]
152
 
 
153
 
 
154
106
def get_export_generator(tree, dest=None, format=None, root=None, subdir=None,
155
107
                         per_file_timestamps=False, fileobj=None):
156
108
    """Returns a generator that exports the given tree.
183
135
    global _exporters
184
136
 
185
137
    if format is None and dest is not None:
186
 
        format = get_format_from_filename(dest)
 
138
        format = archive.format_registry.get_format_from_filename(dest)
187
139
 
188
140
    if format is None:
189
141
        # Default to 'dir'
295
247
 
296
248
register_lazy_exporter('dir', [], 'breezy.export.dir_exporter',
297
249
                       'dir_exporter_generator')
298
 
register_lazy_exporter('tar', ['.tar'], 'breezy.export.tar_exporter',
299
 
                       'plain_tar_exporter_generator')
300
 
register_lazy_exporter('tgz', ['.tar.gz', '.tgz'],
301
 
                       'breezy.export.tar_exporter',
302
 
                       'tgz_exporter_generator')
303
 
register_lazy_exporter('tbz2', ['.tar.bz2', '.tbz2'],
304
 
                       'breezy.export.tar_exporter', 'tbz_exporter_generator')
305
 
register_lazy_exporter('tlzma', ['.tar.lzma'], 'breezy.export.tar_exporter',
306
 
                       'tar_lzma_exporter_generator')
307
 
register_lazy_exporter('txz', ['.tar.xz'], 'breezy.export.tar_exporter',
308
 
                       'tar_xz_exporter_generator')
309
 
register_lazy_exporter('zip', ['.zip'], 'breezy.export.zip_exporter',
310
 
                       'zip_exporter_generator')