1
# Copyright (C) 2005-2011 Canonical Ltd
1
# Copyright (C) 2005-2010 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 brz tree."""
19
from __future__ import absolute_import
21
from .lazy_import import lazy_import
17
"""Commands for generating snapshot information about a bzr tree."""
19
from bzrlib.lazy_import import lazy_import
23
21
lazy_import(globals(), """
26
26
version_info_formats,
29
from breezy.i18n import gettext
35
from .commands import Command
36
from .option import Option, RegistryOption
37
from .sixish import text_type
31
from bzrlib.commands import Command
32
from bzrlib.option import Option, RegistryOption
40
35
def _parse_version_info_format(format):
47
42
return version_info_formats.get_builder(format)
49
44
formats = version_info_formats.get_builder_formats()
50
raise errors.BzrCommandError(
51
gettext('No known version info format {0}.'
52
' Supported types are: {1}').format(format, formats))
45
raise errors.BzrCommandError('No known version info format %s.'
46
' Supported types are: %s'
55
50
class cmd_version_info(Command):
79
74
takes_options = [RegistryOption('format',
80
'Select the output format.',
82
lazy_registry=('breezy.version_info_formats',
75
'Select the output format.',
77
lazy_registry=('bzrlib.version_info_formats',
84
79
Option('all', help='Include all possible information.'),
85
80
Option('check-clean', help='Check if tree is clean.'),
86
81
Option('include-history',
87
82
help='Include the revision-history.'),
88
83
Option('include-file-revisions',
89
84
help='Include the last revision for each file.'),
90
Option('template', type=text_type,
91
help='Template for the output.'),
85
Option('template', type=str, help='Template for the output.'),
94
87
takes_args = ['location?']
96
encoding_type = 'replace'
89
encoding_type = 'exact'
98
91
def run(self, location=None, format=None,
99
92
all=False, check_clean=False, include_history=False,
100
include_file_revisions=False, template=None,
103
if revision and len(revision) > 1:
104
raise errors.BzrCommandError(
105
gettext('brz version-info --revision takes exactly'
106
' one revision specifier'))
93
include_file_revisions=False, template=None):
108
95
if location is None:
111
98
if format is None:
112
99
format = version_info_formats.format_registry.get()
115
103
wt = workingtree.WorkingTree.open_containing(location)[0]
116
104
except errors.NoWorkingTree:
117
105
b = branch.Branch.open(location)
123
110
include_history = True
124
111
check_clean = True
125
include_file_revisions = True
127
include_history = True
128
include_file_revisions = True
129
if '{clean}' in template:
132
if revision is not None:
133
revision_id = revision[0].as_revision_id(b)
112
include_file_revisions=True
137
114
builder = format(b, working_tree=wt,
138
check_for_clean=check_clean,
139
include_revision_history=include_history,
140
include_file_revisions=include_file_revisions,
141
template=template, revision_id=revision_id)
142
builder.generate(self.outf)
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())