~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/win32/bzr-win32-bdist-postinstall.py

  • Committer: John Arbash Meinel
  • Date: 2007-03-15 22:35:35 UTC
  • mto: This revision was merged to the branch mainline in revision 2363.
  • Revision ID: john@arbash-meinel.com-20070315223535-d3d4964oe1hc8zhg
Add an overzealous test, for Unicode support of _iter_changes.
For both knowns and unknowns.
And include a basic, if suboptimal, fix.
I would rather defer the decoding until we've determined that we are going to return the tuple.
There is still something broken with added files, but I'll get to that.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# (c) Canonical Ltd, 2006
 
2
# written by Alexander Belchenko for bzr project
 
3
#
 
4
# This script will be executed after installation of bzrlib package
 
5
# and before installer exits.
 
6
# All printed data will appear on the last screen of installation
 
7
# procedure.
 
8
# The main goal of this script is to create special batch file
 
9
# launcher for bzr. Typical content of this batch file is:
 
10
#  @python bzr %*
 
11
#
 
12
# This file works only on Windows 2000/XP. For win98 there is
 
13
# should be "%1 %2 %3 %4 %5 %6 %7 %8 %9" instead of "%*".
 
14
# Or even more complex thing.
 
15
#
 
16
# [bialix]: bzr de-facto does not support win98.
 
17
#           Although it seems to work on. Sometimes.
 
18
# 2006/07/30    added minimal support of win98.
 
19
# 2007/01/30    added *real* support of win98.
 
20
 
 
21
import os
 
22
import sys
 
23
import _winreg
 
24
 
 
25
from bzrlib import win32utils
 
26
 
 
27
 
 
28
def _quoted_path(path):
 
29
    if ' ' in path:
 
30
        return '"' + path + '"'
 
31
    else:
 
32
        return path
 
33
 
 
34
def _win_batch_args():
 
35
    if win32utils.winver == 'Windows NT':
 
36
        return '%*'
 
37
    else:
 
38
        return '%1 %2 %3 %4 %5 %6 %7 %8 %9'
 
39
 
 
40
 
 
41
if "-install" in sys.argv[1:]:
 
42
    # try to detect version number automatically
 
43
    try:
 
44
        import bzrlib
 
45
    except ImportError:
 
46
        ver = ''
 
47
    else:
 
48
        ver = bzrlib.__version__
 
49
 
 
50
    ##
 
51
    # XXX change message for something more appropriate
 
52
    print """Bazaar %s
 
53
 
 
54
Congratulation! Bzr successfully installed.
 
55
 
 
56
""" % ver
 
57
 
 
58
    batch_path = "bzr.bat"
 
59
    prefix = sys.exec_prefix
 
60
    try:
 
61
        ##
 
62
        # try to create
 
63
        scripts_dir = os.path.join(prefix, "Scripts")
 
64
        script_path = _quoted_path(os.path.join(scripts_dir, "bzr"))
 
65
        python_path = _quoted_path(os.path.join(prefix, "python.exe"))
 
66
        args = _win_batch_args()
 
67
        batch_str = "@%s %s %s" % (python_path, script_path, args)
 
68
        # support of win98
 
69
        # if there is no HOME for bzr then set it for Bazaar manually
 
70
        base = os.environ.get('BZR_HOME', None)
 
71
        if base is None:
 
72
            base = win32utils.get_appdata_location()
 
73
        if base is None:
 
74
            base = os.environ.get('HOME', None)
 
75
        if base is None:
 
76
            base = os.path.splitdrive(sys.prefix)[0] + '\\'
 
77
            batch_str = ("@SET BZR_HOME=" + _quoted_path(base) + "\n" +
 
78
                         batch_str)
 
79
 
 
80
        batch_path = os.path.join(scripts_dir, "bzr.bat")
 
81
        f = file(batch_path, "w")
 
82
        f.write(batch_str)
 
83
        f.close()
 
84
        file_created(batch_path)        # registering manually created files for
 
85
                                        # auto-deinstallation procedure
 
86
        ##
 
87
        # inform user where batch launcher is.
 
88
        print "Created:", batch_path
 
89
        print "Use this batch file to run bzr"
 
90
    except Exception, e:
 
91
        print "ERROR: Unable to create %s: %s" % (batch_path, e)
 
92
 
 
93
    ## this hunk borrowed from pywin32_postinstall.py
 
94
    # use bdist_wininst builtins to create a shortcut.
 
95
    # CSIDL_COMMON_PROGRAMS only available works on NT/2000/XP, and
 
96
    # will fail there if the user has no admin rights.
 
97
    if get_root_hkey()==_winreg.HKEY_LOCAL_MACHINE:
 
98
        try:
 
99
            fldr = get_special_folder_path("CSIDL_COMMON_PROGRAMS")
 
100
        except OSError:
 
101
            # No CSIDL_COMMON_PROGRAMS on this platform
 
102
            fldr = get_special_folder_path("CSIDL_PROGRAMS")
 
103
    else:
 
104
        # non-admin install - always goes in this user's start menu.
 
105
        fldr = get_special_folder_path("CSIDL_PROGRAMS")
 
106
 
 
107
    # make Bazaar entry
 
108
    fldr = os.path.join(fldr, 'Bazaar')
 
109
    if not os.path.isdir(fldr):
 
110
        os.mkdir(fldr)
 
111
        directory_created(fldr)
 
112
 
 
113
    # link to documentation
 
114
    docs = os.path.join(sys.exec_prefix, 'Doc', 'Bazaar', 'index.htm')
 
115
    dst = os.path.join(fldr, 'Documentation.lnk')
 
116
    create_shortcut(docs, 'Bazaar Documentation', dst)
 
117
    file_created(dst)
 
118
    print 'Documentation for Bazaar: Start => Programs => Bazaar'
 
119
 
 
120
    # bzr in cmd shell
 
121
    if os.name == 'nt':
 
122
        cmd = os.environ.get('COMSPEC', 'cmd.exe')
 
123
        args = "/K bzr help"
 
124
    else:
 
125
        # minimal support of win98
 
126
        cmd = os.environ.get('COMSPEC', 'command.com')
 
127
        args = "bzr help"
 
128
    dst = os.path.join(fldr, 'Start bzr.lnk')
 
129
    create_shortcut(cmd,
 
130
                    'Start bzr in cmd shell',
 
131
                    dst,
 
132
                    args,
 
133
                    os.path.join(sys.exec_prefix, 'Scripts'))
 
134
    file_created(dst)