1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
 
1
# Copyright (C) 2005-2011 Canonical Ltd
 
3
3
# This program is free software; you can redistribute it and/or modify
 
4
4
# it under the terms of the GNU General Public License as published by
 
 
14
14
# along with this program; if not, write to the Free Software
 
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
17
 
"""Commands for generating snapshot information about a bzr tree."""
 
19
 
from bzrlib.lazy_import import lazy_import
 
 
17
"""Commands for generating snapshot information about a brz tree."""
 
 
19
from __future__ import absolute_import
 
 
21
from .lazy_import import lazy_import
 
21
23
lazy_import(globals(), """
 
26
27
    version_info_formats,
 
 
30
from breezy.i18n import gettext
 
31
 
from bzrlib.commands import Command
 
32
 
from bzrlib.option import Option, RegistryOption
 
 
33
from .commands import Command
 
 
34
from .option import Option, RegistryOption
 
 
35
from .sixish import text_type
 
35
38
def _parse_version_info_format(format):
 
 
42
45
        return version_info_formats.get_builder(format)
 
44
47
        formats = version_info_formats.get_builder_formats()
 
45
 
        raise errors.BzrCommandError('No known version info format %s.'
 
46
 
                                     ' Supported types are: %s'
 
 
48
        raise errors.BzrCommandError(
 
 
49
            gettext('No known version info format {0}.'
 
 
50
                    ' Supported types are: {1}').format(format, formats))
 
50
53
class cmd_version_info(Command):
 
 
74
77
    takes_options = [RegistryOption('format',
 
75
 
                            'Select the output format.',
 
77
 
                            lazy_registry=('bzrlib.version_info_formats',
 
 
78
                                    'Select the output format.',
 
 
80
                                    lazy_registry=('breezy.version_info_formats',
 
79
82
                     Option('all', help='Include all possible information.'),
 
80
83
                     Option('check-clean', help='Check if tree is clean.'),
 
81
84
                     Option('include-history',
 
82
85
                            help='Include the revision-history.'),
 
83
86
                     Option('include-file-revisions',
 
84
87
                            help='Include the last revision for each file.'),
 
85
 
                     Option('template', type=str, help='Template for the output.'),
 
 
88
                     Option('template', type=text_type,
 
 
89
                            help='Template for the output.'),
 
87
92
    takes_args = ['location?']
 
89
 
    encoding_type = 'exact'
 
 
94
    encoding_type = 'replace'
 
91
96
    def run(self, location=None, format=None,
 
92
97
            all=False, check_clean=False, include_history=False,
 
93
 
            include_file_revisions=False, template=None):
 
 
98
            include_file_revisions=False, template=None,
 
 
101
        if revision and len(revision) > 1:
 
 
102
            raise errors.BzrCommandError(
 
 
103
                gettext('brz version-info --revision takes exactly'
 
 
104
                        ' one revision specifier'))
 
95
106
        if location is None:
 
 
98
109
        if format is None:
 
99
110
            format = version_info_formats.format_registry.get()
 
103
113
            wt = workingtree.WorkingTree.open_containing(location)[0]
 
104
114
        except errors.NoWorkingTree:
 
105
115
            b = branch.Branch.open(location)
 
110
121
            include_history = True
 
111
122
            check_clean = True
 
112
 
            include_file_revisions=True
 
 
123
            include_file_revisions = True
 
 
125
            include_history = True
 
 
126
            include_file_revisions = True
 
 
127
            if '{clean}' in template:
 
 
130
        if revision is not None:
 
 
131
            revision_id = revision[0].as_revision_id(b)
 
114
135
        builder = format(b, working_tree=wt,
 
115
 
                check_for_clean=check_clean,
 
116
 
                include_revision_history=include_history,
 
117
 
                include_file_revisions=include_file_revisions,
 
119
 
        builder.generate(ui.ui_factory.make_output_stream())
 
 
136
                         check_for_clean=check_clean,
 
 
137
                         include_revision_history=include_history,
 
 
138
                         include_file_revisions=include_file_revisions,
 
 
139
                         template=template, revision_id=revision_id)
 
 
140
        builder.generate(self.outf)