/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
    )
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
33
34
2785.1.2 by bialix at ukr
bugfix for #131100
35
def show_version(show_config=True, show_copyright=True, to_file=None):
36
    if to_file is None:
37
        to_file = sys.stdout
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
38
    to_file.write("Breezy (brz) %s\n" % breezy.__version__)
39
    # is breezy itself in a branch?
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
40
    src_tree = _get_brz_source_tree()
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
41
    if src_tree:
42
        src_revision_id = src_tree.last_revision()
43
        revno = src_tree.branch.revision_id_to_revno(src_revision_id)
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
44
        to_file.write("  from brz checkout %s\n" % (src_tree.basedir,))
2911.6.3 by Blake Winton
Implemented suggestions from John Arbash Meinel.
45
        to_file.write("    revision: %s\n" % (revno,))
46
        to_file.write("    revid: %s\n" % (src_revision_id,))
47
        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
48
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
49
    to_file.write("  Python interpreter: ")
2785.1.6 by Alexander Belchenko
show path to python dll instead of bzr.exe for standalone application
50
    # show path to python interpreter
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
51
    # (brz.exe use python interpreter from pythonXY.dll
52
    # but sys.executable point to brz.exe itself)
53
    # however, sys.frozen exists if running from brz.exe
4834.1.2 by Gordon Tyler
Added comment pointing to docs on sys.frozen.
54
    # see http://www.py2exe.org/index.cgi/Py2exeEnvironment
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
55
    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.
56
        to_file.write(sys.executable + ' ')
2785.1.6 by Alexander Belchenko
show path to python dll instead of bzr.exe for standalone application
57
    else:
58
        # pythonXY.dll
59
        basedir = os.path.dirname(sys.executable)
60
        python_dll = "python%d%d.dll" % sys.version_info[:2]
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
61
        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
62
    # and now version of python interpreter
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
63
    to_file.write(breezy._format_version_tuple(sys.version_info))
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
64
    to_file.write('\n')
2785.1.6 by Alexander Belchenko
show path to python dll instead of bzr.exe for standalone application
65
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
66
    to_file.write("  Python standard library:" + ' ')
67
    to_file.write(os.path.dirname(os.__file__) + '\n')
6579.2.1 by Vincent Ladeuil
Support utf-8 platform names
68
    to_file.write("  Platform: %s\n"
69
                  % platform.platform(aliased=1).decode('utf-8'))
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
70
    to_file.write("  breezy: ")
71
    if len(breezy.__path__) > 1:
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
72
        # print repr, which is a good enough way of making it clear it's
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
73
        # more than one element (eg ['/foo/bar', '/foo/brz'])
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
74
        to_file.write(repr(breezy.__path__) + '\n')
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
75
    else:
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
76
        to_file.write(breezy.__path__[0] + '\n')
2606.1.1 by Martin Pool
Show bzr version, python version, etc when running tests
77
    if show_config:
6015.39.2 by Florian Vichot
Fixed an infinite loop when creating a repo at the root of the filesystem,
78
        config_dir = osutils.normpath(config.config_dir())  # use native slashes
2785.1.5 by Alexander Belchenko
support for non-ascii BZR_HOME in show_version()
79
        if not isinstance(config_dir, unicode):
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.
80
            config_dir = config_dir.decode(osutils.get_user_encoding())
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
81
        to_file.write("  Breezy configuration: %s\n" % (config_dir,))
82
        to_file.write("  Breezy log file: ")
83
        to_file.write(trace._brz_log_filename + '\n')
2606.1.1 by Martin Pool
Show bzr version, python version, etc when running tests
84
    if show_copyright:
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
85
        to_file.write('\n')
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
86
        to_file.write(breezy.__copyright__ + '\n')
6650.1.1 by Jelmer Vernooij
Update homepage URL.
87
        to_file.write("https://www.breezy-vcs.org/\n")
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
88
        to_file.write('\n')
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
89
        to_file.write("brz comes with ABSOLUTELY NO WARRANTY.  brz is free software, and\n")
2911.6.1 by Blake Winton
Change 'print >> f,'s to 'f.write('s.
90
        to_file.write("you may use, modify and redistribute it under the terms of the GNU\n")
91
        to_file.write("General Public License version 2 or later.\n")
92
    to_file.write('\n')
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
93
94
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
95
def _get_brz_source_tree():
96
    """Return the WorkingTree for brz source, if any.
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
97
6622.1.33 by Jelmer Vernooij
Fix more tests (all?)
98
    If brz is not being run from its working tree, returns None.
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
99
    """
100
    try:
6207.3.3 by jelmer at samba
Fix tests and the like.
101
        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
102
        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)
103
    except (errors.NotBranchError, errors.UnknownFormatError,
104
            errors.NoWorkingTree):
1819.1.8 by Martin Pool
Improved reporting of bzrlib revision_id
105
        return None