/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 tools/win32/brz-win32-bdist-postinstall.py

  • Committer: Robert Collins
  • Date: 2005-12-24 02:20:45 UTC
  • mto: (1185.50.57 bzr-jam-integration)
  • mto: This revision was merged to the branch mainline in revision 1550.
  • Revision ID: robertc@robertcollins.net-20051224022045-14efc8dfa0e1a4e9
Start tests for api usage.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# (c) Canonical Ltd, 2006
2
 
# written by Alexander Belchenko for brz project
3
 
#
4
 
# This script will be executed after installation of breezy 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 brz. Typical content of this batch file is:
10
 
#  @python brz %*
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]: brz 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 breezy 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 breezy
45
 
    except ImportError:
46
 
        ver = ''
47
 
    else:
48
 
        ver = breezy.__version__
49
 
 
50
 
    ##
51
 
    # XXX change message for something more appropriate
52
 
    print("""Breezy %s
53
 
 
54
 
Congratulation! Brz successfully installed.
55
 
 
56
 
""" % ver)
57
 
 
58
 
    batch_path = "brz.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, "brz"))
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 brz then set it for Breezy manually
70
 
        base = os.environ.get('brz_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 brz_HOME=" + _quoted_path(base) + "\n" +
78
 
                         batch_str)
79
 
 
80
 
        batch_path = os.path.join(scripts_dir, "brz.bat")
81
 
        with open(batch_path, "w") as f:
82
 
            f.write(batch_str)
83
 
        # registering manually created files for auto-deinstallation procedure
84
 
        file_created(batch_path)
85
 
        ##
86
 
        # inform user where batch launcher is.
87
 
        print("Created:", batch_path)
88
 
        print("Use this batch file to run brz")
89
 
    except Exception as e:
90
 
        print("ERROR: Unable to create %s: %s" % (batch_path, e))
91
 
 
92
 
    ## this hunk borrowed from pywin32_postinstall.py
93
 
    # use bdist_wininst builtins to create a shortcut.
94
 
    # CSIDL_COMMON_PROGRAMS only available works on NT/2000/XP, and
95
 
    # will fail there if the user has no admin rights.
96
 
    if get_root_hkey() == _winreg.HKEY_LOCAL_MACHINE:
97
 
        try:
98
 
            fldr = get_special_folder_path("CSIDL_COMMON_PROGRAMS")
99
 
        except OSError:
100
 
            # No CSIDL_COMMON_PROGRAMS on this platform
101
 
            fldr = get_special_folder_path("CSIDL_PROGRAMS")
102
 
    else:
103
 
        # non-admin install - always goes in this user's start menu.
104
 
        fldr = get_special_folder_path("CSIDL_PROGRAMS")
105
 
 
106
 
    # make Breezy entry
107
 
    fldr = os.path.join(fldr, 'Breezy')
108
 
    if not os.path.isdir(fldr):
109
 
        os.mkdir(fldr)
110
 
        directory_created(fldr)
111
 
 
112
 
    # link to documentation
113
 
    docs = os.path.join(sys.exec_prefix, 'Doc', 'Breezy', 'index.html')
114
 
    dst = os.path.join(fldr, 'Documentation.lnk')
115
 
    create_shortcut(docs, 'Breezy Documentation', dst)
116
 
    file_created(dst)
117
 
    print('Documentation for Breezy: Start => Programs => Breezy')
118
 
 
119
 
    # brz in cmd shell
120
 
    if os.name == 'nt':
121
 
        cmd = os.environ.get('COMSPEC', 'cmd.exe')
122
 
        args = "/K brz help"
123
 
    else:
124
 
        # minimal support of win98
125
 
        cmd = os.environ.get('COMSPEC', 'command.com')
126
 
        args = "brz help"
127
 
    dst = os.path.join(fldr, 'Start brz.lnk')
128
 
    create_shortcut(cmd,
129
 
                    'Start brz in cmd shell',
130
 
                    dst,
131
 
                    args,
132
 
                    os.path.join(sys.exec_prefix, 'Scripts'))
133
 
    file_created(dst)
134
 
 
135
 
    # uninstall shortcut
136
 
    uninst = os.path.join(sys.exec_prefix, 'Removebrz.exe')
137
 
    dst = os.path.join(fldr, 'Uninstall Breezy.lnk')
138
 
    create_shortcut(uninst,
139
 
                    'Uninstall Breezy',
140
 
                    dst,
141
 
                    '-u brz-wininst.log',
142
 
                    sys.exec_prefix,
143
 
                    )
144
 
    file_created(dst)