/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
4988.10.3 by John Arbash Meinel
Merge bzr.dev 5007, resolve conflict, update NEWS
1
# Copyright (C) 2006-2010 Canonical Ltd
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
16
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
17
"""Report on version of breezy"""
6379.6.7 by Jelmer Vernooij
Move importing from future until after doc string, otherwise the doc string will disappear.
18
6379.6.3 by Jelmer Vernooij
Use absolute_import.
19
from __future__ import absolute_import
20
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
21
import os
6579.2.1 by Vincent Ladeuil
Support utf-8 platform names
22
import platform
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
23
import sys
24
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
25
import breezy
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
26
from . import (
2323.6.7 by Martin Pool
Don't warn about old wt format when getting bzr's version
27
    config,
6207.3.3 by jelmer at samba
Fix tests and the like.
28
    controldir,
2323.6.7 by Martin Pool
Don't warn about old wt format when getting bzr's version
29
    errors,
30
    osutils,
2566.1.1 by Martin Pool
Show bzr.log location in bzr --version output.
31
    trace,
2323.6.7 by Martin Pool
Don't warn about old wt format when getting bzr's version
32
    )
6973.6.2 by Jelmer Vernooij
Fix more tests.
33
from .sixish import text_type
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
34
35
2785.1.2 by bialix at ukr
bugfix for #131100
36
def show_version(show_config=True, show_copyright=True, to_file=None):
37
    if to_file is None:
38
        to_file = sys.stdout
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
39
    to_file.write("Breezy (brz) %s\n" % breezy.__version__)
40
    # is breezy itself in a branch?
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
41
    src_tree = _get_brz_source_tree()
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
42
    if src_tree:
43
        src_revision_id = src_tree.last_revision()
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
44
        to_file.write("  from brz checkout %s\n" % (src_tree.basedir,))
6969.2.2 by Jelmer Vernooij
Don't print revno if it is unknown.
45
        try:
46
            revno = src_tree.branch.revision_id_to_revno(src_revision_id)
47
        except errors.GhostRevisionsHaveNoRevno:
48
            pass
49
        else:
50
            to_file.write("    revision: %s\n" % (revno,))
2911.6.3 by Blake Winton
Implemented suggestions from John Arbash Meinel.
51
        to_file.write("    revid: %s\n" % (src_revision_id,))
52
        to_file.write("    branch nick: %s\n" % (src_tree.branch.nick,))
2785.1.6 by Alexander Belchenko
show path to python dll instead of bzr.exe for standalone application
53
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
54
    to_file.write("  Python interpreter: ")
2785.1.6 by Alexander Belchenko
show path to python dll instead of bzr.exe for standalone application
55
    # show path to python interpreter
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
56
    # (brz.exe use python interpreter from pythonXY.dll
57
    # but sys.executable point to brz.exe itself)
58
    # however, sys.frozen exists if running from brz.exe
4834.1.2 by Gordon Tyler
Added comment pointing to docs on sys.frozen.
59
    # see http://www.py2exe.org/index.cgi/Py2exeEnvironment
7143.15.2 by Jelmer Vernooij
Run autopep8.
60
    if getattr(sys, 'frozen', None) is None:  # if not brz.exe
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
61
        to_file.write(sys.executable + ' ')
2785.1.6 by Alexander Belchenko
show path to python dll instead of bzr.exe for standalone application
62
    else:
63
        # pythonXY.dll
64
        basedir = os.path.dirname(sys.executable)
65
        python_dll = "python%d%d.dll" % sys.version_info[:2]
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
66
        to_file.write(os.path.join(basedir, python_dll) + ' ')
2785.1.6 by Alexander Belchenko
show path to python dll instead of bzr.exe for standalone application
67
    # and now version of python interpreter
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
68
    to_file.write(breezy._format_version_tuple(sys.version_info))
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
69
    to_file.write('\n')
2785.1.6 by Alexander Belchenko
show path to python dll instead of bzr.exe for standalone application
70
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
71
    to_file.write("  Python standard library:" + ' ')
72
    to_file.write(os.path.dirname(os.__file__) + '\n')
7045.1.1 by Jelmer Vernooij
Fix another 300 tests.
73
    platform_str = platform.platform(aliased=1)
74
    if not isinstance(platform_str, text_type):
75
        platform_str = platform_str.decode('utf-8')
76
    to_file.write("  Platform: %s\n" % platform_str)
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
77
    to_file.write("  breezy: ")
78
    if len(breezy.__path__) > 1:
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
79
        # print repr, which is a good enough way of making it clear it's
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
80
        # more than one element (eg ['/foo/bar', '/foo/brz'])
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
81
        to_file.write(repr(breezy.__path__) + '\n')
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
82
    else:
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
83
        to_file.write(breezy.__path__[0] + '\n')
2606.1.1 by Martin Pool
Show bzr version, python version, etc when running tests
84
    if show_config:
7143.15.2 by Jelmer Vernooij
Run autopep8.
85
        config_dir = osutils.normpath(
86
            config.config_dir())  # use native slashes
6973.6.2 by Jelmer Vernooij
Fix more tests.
87
        if not isinstance(config_dir, text_type):
3224.5.1 by Andrew Bennetts
Lots of assorted hackery to reduce the number of imports for common operations. Improves 'rocks', 'st' and 'help' times by ~50ms on my laptop.
88
            config_dir = config_dir.decode(osutils.get_user_encoding())
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
89
        to_file.write("  Breezy configuration: %s\n" % (config_dir,))
90
        to_file.write("  Breezy log file: ")
91
        to_file.write(trace._brz_log_filename + '\n')
2606.1.1 by Martin Pool
Show bzr version, python version, etc when running tests
92
    if show_copyright:
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
93
        to_file.write('\n')
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
94
        to_file.write(breezy.__copyright__ + '\n')
6650.1.1 by Jelmer Vernooij
Update homepage URL.
95
        to_file.write("https://www.breezy-vcs.org/\n")
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
96
        to_file.write('\n')
7143.15.2 by Jelmer Vernooij
Run autopep8.
97
        to_file.write(
98
            "brz comes with ABSOLUTELY NO WARRANTY.  brz is free software, and\n")
99
        to_file.write(
100
            "you may use, modify and redistribute it under the terms of the GNU\n")
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
101
        to_file.write("General Public License version 2 or later.\n")
102
    to_file.write('\n')
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
103
104
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
105
def _get_brz_source_tree():
106
    """Return the WorkingTree for brz source, if any.
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
107
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
108
    If brz is not being run from its working tree, returns None.
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
109
    """
110
    try:
6207.3.3 by jelmer at samba
Fix tests and the like.
111
        control = controldir.ControlDir.open_containing(__file__)[0]
2323.6.7 by Martin Pool
Don't warn about old wt format when getting bzr's version
112
        return control.open_workingtree(recommend_upgrade=False)
2234.7.1 by Wouter van Heyst
(James Westby) Handle bzr residing in a non-workingtree nested in a repository (#77306)
113
    except (errors.NotBranchError, errors.UnknownFormatError,
114
            errors.NoWorkingTree):
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
115
        return None