summaryrefslogtreecommitdiff
path: root/demoscript/Util.py
blob: 85e14b4cd98de2c7c9baa082a20e8a84de7ba50a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# **********************************************************************
#
# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.
#
# This copy of Ice is licensed to you under the terms described in the
# ICE_LICENSE file included in this distribution.
#
# **********************************************************************

#
# Timeout after the initial spawn.
#
initialTimeout = 10
#
# Default timeout on subsequent expect calls.
#
defaultTimeout = 5

#
# Default value of --Ice.Default.Host
#
host = "127.0.0.1"

#
# Echo the commands.
#
debug = False

import sys, getopt, pexpect, os

def usage():
    print "usage: " + sys.argv[0] + " --fast --trace --debug --host host --mode=[debug|release]"
    sys.exit(2)
try:
    opts, args = getopt.getopt(sys.argv[1:], "", ["fast", "trace", "debug", "host=", "mode="])
except getopt.GetoptError:
    usage()

fast = False
trace = False
mode = 'release'
for o, a in opts:
    if o == "--debug":
        debug = True
    if o == "--trace":
        trace = True
    if o == "--host":
        host = a
    if o == "--fast":
        fast = True
    if o == "--mode":
        mode = a
        if mode != 'debug' or mode != 'release':
            print "usage: " + sys.argv[0] + " --trace --debug --host host --mode=[debug|release]"
            sys.exit(2)

if host != "":
    defaultHost = " --Ice.Default.Host=%s" % (host)
else:
    defaultHost = None

def isCygwin():
    # The substring on sys.platform is required because some cygwin
    # versions return variations like "cygwin_nt-4.01".
    return sys.platform[:6] == "cygwin"

def isWin32():
    return sys.platform == "win32" or isCygwin()

def isDarwin():
   return sys.platform == "darwin"

def mono():
    if isWin32():
        return ""
    else:
        return "mono "

def getIceBox():
    if isWin32():
        if mode == 'release':
            return "icebox"
        else:
            return "iceboxd"
    return "icebox"

# Automatically adds default host, and uses our default timeout for
# expect.
class spawn(pexpect.spawn):
    def __init__(self, command):
        if defaultHost:
            command = '%s %s' % (command, defaultHost)
        if debug:
            print '(%s)' % (command)
        self.expectFirst = True
        if trace:
            logfile = sys.stdout
        else:
            logfile = None
        pexpect.spawn.__init__(self, command, logfile = logfile)
    def expect(self, pattern, timeout = defaultTimeout, searchwindowsize=None):
        if self.expectFirst and timeout == defaultTimeout:
            timeout = initialTimeout
            self.expectFirst = False
        return pexpect.spawn.expect(self, pattern, timeout, searchwindowsize)
    def wait(self):
        try:
            return pexpect.spawn.wait(self)
        except pexpect.ExceptionPexpect, e:
            return self.exitstatus

def cleanDbDir(path):
    for filename in [ os.path.join(path, f) for f in os.listdir(path) if f != ".gitignore"]:
        if os.path.isdir(filename):
            cleanDbDir(filename)
            try:
                os.rmdir(filename)
            except OSError:
                # This might fail if the directory is empty (because
                # it itself contains a .gitignore file.
                pass
        else:
            os.remove(filename)