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
26
version_info_formats,
29
from breezy.i18n import gettext
31
from bzrlib.commands import Command
32
from bzrlib.option import Option, RegistryOption
35
from .commands import Command
36
from .option import Option, RegistryOption
37
from .sixish import text_type
35
40
def _parse_version_info_format(format):
42
47
return version_info_formats.get_builder(format)
44
49
formats = version_info_formats.get_builder_formats()
45
raise errors.BzrCommandError('No known version info format %s.'
46
' Supported types are: %s'
50
raise errors.BzrCommandError(
51
gettext('No known version info format {0}.'
52
' Supported types are: {1}').format(format, formats))
50
55
class cmd_version_info(Command):
74
79
takes_options = [RegistryOption('format',
75
'Select the output format.',
77
lazy_registry=('bzrlib.version_info_formats',
80
'Select the output format.',
82
lazy_registry=('breezy.version_info_formats',
79
84
Option('all', help='Include all possible information.'),
80
85
Option('check-clean', help='Check if tree is clean.'),
81
86
Option('include-history',
82
87
help='Include the revision-history.'),
83
88
Option('include-file-revisions',
84
89
help='Include the last revision for each file.'),
85
Option('template', type=str, help='Template for the output.'),
90
Option('template', type=text_type,
91
help='Template for the output.'),
87
94
takes_args = ['location?']
89
encoding_type = 'exact'
96
encoding_type = 'replace'
91
98
def run(self, location=None, format=None,
92
99
all=False, check_clean=False, include_history=False,
93
include_file_revisions=False, template=None):
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'))
95
108
if location is None:
98
111
if format is None:
99
112
format = version_info_formats.format_registry.get()
103
115
wt = workingtree.WorkingTree.open_containing(location)[0]
104
116
except errors.NoWorkingTree:
105
117
b = branch.Branch.open(location)
110
123
include_history = True
111
124
check_clean = True
112
include_file_revisions=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)
114
137
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())
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)