/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: Gustav Hartvigsson
  • Date: 2021-01-09 21:36:27 UTC
  • Revision ID: gustav.hartvigsson@gmail.com-20210109213627-h1xwcutzy9m7a99b
Added 'Case Preserving Working Tree Use Cases' from Canonical Wiki

* Addod a page from the Canonical Bazaar wiki
  with information on the scmeatics of case
  perserving filesystems an a case insensitive
  filesystem works.
  
  * Needs re-work, but this will do as it is the
    same inforamoton as what was on the linked
    page in the currint documentation.

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)