~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/cmd_version_info.py

  • Committer: Jelmer Vernooij
  • Date: 2012-01-27 19:05:43 UTC
  • mto: This revision was merged to the branch mainline in revision 6450.
  • Revision ID: jelmer@samba.org-20120127190543-vk350mv4a0c7aug2
Fix weave test.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006 Canonical Ltd
 
1
# Copyright (C) 2005-2011 Canonical Ltd
2
2
#
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
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""Commands for generating snapshot information about a bzr tree."""
18
18
 
 
19
from __future__ import absolute_import
 
20
 
19
21
from bzrlib.lazy_import import lazy_import
 
22
 
20
23
lazy_import(globals(), """
21
24
from bzrlib import (
22
25
    branch,
23
26
    errors,
 
27
    version_info_formats,
24
28
    workingtree,
25
29
    )
 
30
from bzrlib.i18n import gettext
26
31
""")
27
 
from bzrlib import (
28
 
    version_info_formats,
29
 
    )
 
32
 
30
33
from bzrlib.commands import Command
31
34
from bzrlib.option import Option, RegistryOption
32
35
 
41
44
        return version_info_formats.get_builder(format)
42
45
    except KeyError:
43
46
        formats = version_info_formats.get_builder_formats()
44
 
        raise errors.BzrCommandError('No known version info format %s.'
45
 
                                     ' Supported types are: %s'
46
 
                                     % (format, formats))
 
47
        raise errors.BzrCommandError(gettext('No known version info format {0}.'
 
48
                                     ' Supported types are: {1}').format(
 
49
                                     format, formats))
47
50
 
48
51
 
49
52
class cmd_version_info(Command):
50
 
    """Show version information about this tree.
 
53
    __doc__ = """Show version information about this tree.
51
54
 
52
55
    You can use this command to add information about version into
53
56
    source code of an application. The output can be in one of the
72
75
 
73
76
    takes_options = [RegistryOption('format',
74
77
                            'Select the output format.',
75
 
                            version_info_formats.format_registry,
76
 
                            value_switches=True),
 
78
                            value_switches=True,
 
79
                            lazy_registry=('bzrlib.version_info_formats',
 
80
                                           'format_registry')),
77
81
                     Option('all', help='Include all possible information.'),
78
82
                     Option('check-clean', help='Check if tree is clean.'),
79
83
                     Option('include-history',
81
85
                     Option('include-file-revisions',
82
86
                            help='Include the last revision for each file.'),
83
87
                     Option('template', type=str, help='Template for the output.'),
 
88
                     'revision',
84
89
                     ]
85
90
    takes_args = ['location?']
86
91
 
88
93
 
89
94
    def run(self, location=None, format=None,
90
95
            all=False, check_clean=False, include_history=False,
91
 
            include_file_revisions=False, template=None):
 
96
            include_file_revisions=False, template=None,
 
97
            revision=None):
 
98
 
 
99
        if revision and len(revision) > 1:
 
100
            raise errors.BzrCommandError(
 
101
                gettext('bzr version-info --revision takes exactly'
 
102
                        ' one revision specifier'))
92
103
 
93
104
        if location is None:
94
105
            location = '.'
96
107
        if format is None:
97
108
            format = version_info_formats.format_registry.get()
98
109
 
99
 
        wt = None
100
110
        try:
101
111
            wt = workingtree.WorkingTree.open_containing(location)[0]
102
112
        except errors.NoWorkingTree:
103
113
            b = branch.Branch.open(location)
 
114
            wt = None
104
115
        else:
105
116
            b = wt.branch
106
117
 
107
 
        if all or template:
 
118
        if all:
108
119
            include_history = True
109
120
            check_clean = True
110
 
            include_file_revisions=True
 
121
            include_file_revisions = True
 
122
        if template:
 
123
            include_history = True
 
124
            include_file_revisions = True
 
125
            if '{clean}' in template:
 
126
                check_clean = True
 
127
 
 
128
        if revision is not None:
 
129
            revision_id = revision[0].as_revision_id(b)
 
130
        else:
 
131
            revision_id = None
111
132
 
112
133
        builder = format(b, working_tree=wt,
113
134
                check_for_clean=check_clean,
114
135
                include_revision_history=include_history,
115
136
                include_file_revisions=include_file_revisions,
116
 
                template=template)
 
137
                template=template, revision_id=revision_id)
117
138
        builder.generate(self.outf)