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

  • Committer: Jelmer Vernooij
  • Date: 2017-07-20 00:00:04 UTC
  • mfrom: (6690.5.2 bundle-guess)
  • Revision ID: jelmer@jelmer.uk-20170720000004-wlknc5gthdk3tokn
Merge lp:~jelmer/brz/bundle-guess.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 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
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 bzr tree."""
18
 
 
19
 
from bzrlib.lazy_import import lazy_import
 
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
20
22
 
21
23
lazy_import(globals(), """
22
 
from bzrlib import (
 
24
from breezy import (
23
25
    branch,
24
26
    errors,
25
 
    ui,
26
27
    version_info_formats,
27
28
    workingtree,
28
29
    )
 
30
from breezy.i18n import gettext
29
31
""")
30
32
 
31
 
from bzrlib.commands import Command
32
 
from bzrlib.option import Option, RegistryOption
 
33
from .commands import Command
 
34
from .option import Option, RegistryOption
33
35
 
34
36
 
35
37
def _parse_version_info_format(format):
42
44
        return version_info_formats.get_builder(format)
43
45
    except KeyError:
44
46
        formats = version_info_formats.get_builder_formats()
45
 
        raise errors.BzrCommandError('No known version info format %s.'
46
 
                                     ' Supported types are: %s'
47
 
                                     % (format, formats))
 
47
        raise errors.BzrCommandError(gettext('No known version info format {0}.'
 
48
                                     ' Supported types are: {1}').format(
 
49
                                     format, formats))
48
50
 
49
51
 
50
52
class cmd_version_info(Command):
56
58
 
57
59
    For example::
58
60
 
59
 
      bzr version-info --custom \\
 
61
      brz version-info --custom \\
60
62
        --template="#define VERSION_INFO \\"Project 1.2.3 (r{revno})\\"\\n"
61
63
 
62
64
    will produce a C header file with formatted string containing the
74
76
    takes_options = [RegistryOption('format',
75
77
                            'Select the output format.',
76
78
                            value_switches=True,
77
 
                            lazy_registry=('bzrlib.version_info_formats',
 
79
                            lazy_registry=('breezy.version_info_formats',
78
80
                                           'format_registry')),
79
81
                     Option('all', help='Include all possible information.'),
80
82
                     Option('check-clean', help='Check if tree is clean.'),
83
85
                     Option('include-file-revisions',
84
86
                            help='Include the last revision for each file.'),
85
87
                     Option('template', type=str, help='Template for the output.'),
 
88
                     'revision',
86
89
                     ]
87
90
    takes_args = ['location?']
88
91
 
90
93
 
91
94
    def run(self, location=None, format=None,
92
95
            all=False, check_clean=False, include_history=False,
93
 
            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('brz version-info --revision takes exactly'
 
102
                        ' one revision specifier'))
94
103
 
95
104
        if location is None:
96
105
            location = '.'
98
107
        if format is None:
99
108
            format = version_info_formats.format_registry.get()
100
109
 
101
 
        wt = None
102
110
        try:
103
111
            wt = workingtree.WorkingTree.open_containing(location)[0]
104
112
        except errors.NoWorkingTree:
105
113
            b = branch.Branch.open(location)
 
114
            wt = None
106
115
        else:
107
116
            b = wt.branch
108
117
 
109
 
        if all or template:
 
118
        if all:
110
119
            include_history = True
111
120
            check_clean = True
112
 
            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
113
132
 
114
133
        builder = format(b, working_tree=wt,
115
134
                check_for_clean=check_clean,
116
135
                include_revision_history=include_history,
117
136
                include_file_revisions=include_file_revisions,
118
 
                template=template)
119
 
        builder.generate(ui.ui_factory.make_output_stream())
 
137
                template=template, revision_id=revision_id)
 
138
        builder.generate(self.outf)