/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
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
19
import os
6579.2.1 by Vincent Ladeuil
Support utf-8 platform names
20
import platform
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
21
import sys
22
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
23
import breezy
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
24
from . import (
7336.2.1 by Martin
Split non-ini config methods to bedding
25
    bedding,
6207.3.3 by jelmer at samba
Fix tests and the like.
26
    controldir,
2323.6.7 by Martin Pool
Don't warn about old wt format when getting bzr's version
27
    errors,
28
    osutils,
2566.1.1 by Martin Pool
Show bzr.log location in bzr --version output.
29
    trace,
2323.6.7 by Martin Pool
Don't warn about old wt format when getting bzr's version
30
    )
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
31
32
2785.1.2 by bialix at ukr
bugfix for #131100
33
def show_version(show_config=True, show_copyright=True, to_file=None):
34
    if to_file is None:
35
        to_file = sys.stdout
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
36
    to_file.write("Breezy (brz) %s\n" % breezy.__version__)
37
    # is breezy itself in a branch?
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
38
    src_tree = _get_brz_source_tree()
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
39
    if src_tree:
40
        src_revision_id = src_tree.last_revision()
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
41
        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.
42
        try:
43
            revno = src_tree.branch.revision_id_to_revno(src_revision_id)
44
        except errors.GhostRevisionsHaveNoRevno:
45
            pass
46
        else:
47
            to_file.write("    revision: %s\n" % (revno,))
2911.6.3 by Blake Winton
Implemented suggestions from John Arbash Meinel.
48
        to_file.write("    revid: %s\n" % (src_revision_id,))
49
        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
50
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
51
    to_file.write("  Python interpreter: ")
2785.1.6 by Alexander Belchenko
show path to python dll instead of bzr.exe for standalone application
52
    # show path to python interpreter
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
53
    # (brz.exe use python interpreter from pythonXY.dll
54
    # but sys.executable point to brz.exe itself)
55
    # however, sys.frozen exists if running from brz.exe
4834.1.2 by Gordon Tyler
Added comment pointing to docs on sys.frozen.
56
    # see http://www.py2exe.org/index.cgi/Py2exeEnvironment
7143.15.2 by Jelmer Vernooij
Run autopep8.
57
    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.
58
        to_file.write(sys.executable + ' ')
2785.1.6 by Alexander Belchenko
show path to python dll instead of bzr.exe for standalone application
59
    else:
60
        # pythonXY.dll
61
        basedir = os.path.dirname(sys.executable)
62
        python_dll = "python%d%d.dll" % sys.version_info[:2]
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
63
        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
64
    # and now version of python interpreter
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
65
    to_file.write(breezy._format_version_tuple(sys.version_info))
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
66
    to_file.write('\n')
2785.1.6 by Alexander Belchenko
show path to python dll instead of bzr.exe for standalone application
67
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
68
    to_file.write("  Python standard library:" + ' ')
69
    to_file.write(os.path.dirname(os.__file__) + '\n')
7045.1.1 by Jelmer Vernooij
Fix another 300 tests.
70
    platform_str = platform.platform(aliased=1)
7479.2.1 by Jelmer Vernooij
Drop python2 support.
71
    if not isinstance(platform_str, str):
7045.1.1 by Jelmer Vernooij
Fix another 300 tests.
72
        platform_str = platform_str.decode('utf-8')
73
    to_file.write("  Platform: %s\n" % platform_str)
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
74
    to_file.write("  breezy: ")
75
    if len(breezy.__path__) > 1:
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
76
        # print repr, which is a good enough way of making it clear it's
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
77
        # more than one element (eg ['/foo/bar', '/foo/brz'])
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
78
        to_file.write(repr(breezy.__path__) + '\n')
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
79
    else:
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
80
        to_file.write(breezy.__path__[0] + '\n')
2606.1.1 by Martin Pool
Show bzr version, python version, etc when running tests
81
    if show_config:
7143.15.2 by Jelmer Vernooij
Run autopep8.
82
        config_dir = osutils.normpath(
7336.2.1 by Martin
Split non-ini config methods to bedding
83
            bedding.config_dir())  # use native slashes
7479.2.1 by Jelmer Vernooij
Drop python2 support.
84
        if not isinstance(config_dir, str):
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.
85
            config_dir = config_dir.decode(osutils.get_user_encoding())
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
86
        to_file.write("  Breezy configuration: %s\n" % (config_dir,))
87
        to_file.write("  Breezy log file: ")
88
        to_file.write(trace._brz_log_filename + '\n')
2606.1.1 by Martin Pool
Show bzr version, python version, etc when running tests
89
    if show_copyright:
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
90
        to_file.write('\n')
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
91
        to_file.write(breezy.__copyright__ + '\n')
6650.1.1 by Jelmer Vernooij
Update homepage URL.
92
        to_file.write("https://www.breezy-vcs.org/\n")
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
93
        to_file.write('\n')
7143.15.2 by Jelmer Vernooij
Run autopep8.
94
        to_file.write(
95
            "brz comes with ABSOLUTELY NO WARRANTY.  brz is free software, and\n")
96
        to_file.write(
97
            "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.
98
        to_file.write("General Public License version 2 or later.\n")
99
    to_file.write('\n')
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
100
101
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
102
def _get_brz_source_tree():
103
    """Return the WorkingTree for brz source, if any.
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
104
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
105
    If brz is not being run from its working tree, returns None.
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
106
    """
107
    try:
6207.3.3 by jelmer at samba
Fix tests and the like.
108
        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
109
        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)
110
    except (errors.NotBranchError, errors.UnknownFormatError,
111
            errors.NoWorkingTree):
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
112
        return None