/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 bzrlib/cmd_version_info.py

  • Committer: Marius Kruger
  • Date: 2010-07-10 21:28:56 UTC
  • mto: (5384.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 5385.
  • Revision ID: marius.kruger@enerweb.co.za-20100710212856-uq4ji3go0u5se7hx
* Update documentation
* add NEWS

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011 Canonical Ltd
 
1
# Copyright (C) 2005-2010 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
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
16
16
 
17
 
"""Commands for generating snapshot information about a brz tree."""
18
 
 
19
 
from __future__ import absolute_import
20
 
 
21
 
from .lazy_import import lazy_import
 
17
"""Commands for generating snapshot information about a bzr tree."""
 
18
 
 
19
from bzrlib.lazy_import import lazy_import
22
20
 
23
21
lazy_import(globals(), """
24
 
from breezy import (
 
22
from bzrlib import (
25
23
    branch,
 
24
    errors,
 
25
    ui,
26
26
    version_info_formats,
27
27
    workingtree,
28
28
    )
29
 
from breezy.i18n import gettext
30
29
""")
31
30
 
32
 
from . import (
33
 
    errors,
34
 
    )
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
38
33
 
39
34
 
40
35
def _parse_version_info_format(format):
47
42
        return version_info_formats.get_builder(format)
48
43
    except KeyError:
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'
 
47
                                     % (format, formats))
53
48
 
54
49
 
55
50
class cmd_version_info(Command):
61
56
 
62
57
    For example::
63
58
 
64
 
      brz version-info --custom \\
 
59
      bzr version-info --custom \\
65
60
        --template="#define VERSION_INFO \\"Project 1.2.3 (r{revno})\\"\\n"
66
61
 
67
62
    will produce a C header file with formatted string containing the
77
72
    """
78
73
 
79
74
    takes_options = [RegistryOption('format',
80
 
                                    'Select the output format.',
81
 
                                    value_switches=True,
82
 
                                    lazy_registry=('breezy.version_info_formats',
83
 
                                                   'format_registry')),
 
75
                            'Select the output format.',
 
76
                            value_switches=True,
 
77
                            lazy_registry=('bzrlib.version_info_formats',
 
78
                                           'format_registry')),
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.'),
92
 
                     'revision',
 
85
                     Option('template', type=str, help='Template for the output.'),
93
86
                     ]
94
87
    takes_args = ['location?']
95
88
 
96
 
    encoding_type = 'replace'
 
89
    encoding_type = 'exact'
97
90
 
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,
101
 
            revision=None):
102
 
 
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):
107
94
 
108
95
        if location is None:
109
96
            location = '.'
111
98
        if format is None:
112
99
            format = version_info_formats.format_registry.get()
113
100
 
 
101
        wt = None
114
102
        try:
115
103
            wt = workingtree.WorkingTree.open_containing(location)[0]
116
104
        except errors.NoWorkingTree:
117
105
            b = branch.Branch.open(location)
118
 
            wt = None
119
106
        else:
120
107
            b = wt.branch
121
108
 
122
 
        if all:
 
109
        if all or template:
123
110
            include_history = True
124
111
            check_clean = True
125
 
            include_file_revisions = True
126
 
        if template:
127
 
            include_history = True
128
 
            include_file_revisions = True
129
 
            if '{clean}' in template:
130
 
                check_clean = True
131
 
 
132
 
        if revision is not None:
133
 
            revision_id = revision[0].as_revision_id(b)
134
 
        else:
135
 
            revision_id = None
 
112
            include_file_revisions=True
136
113
 
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,
 
118
                template=template)
 
119
        builder.generate(ui.ui_factory.make_output_stream())