src/cm/utils/system.py
author Simon Descarpentries <sid@sopinspace.com>
Tue, 06 May 2014 13:52:01 +0200
changeset 651 9bbc657f6837
parent 0 40c8f766c9b8
permissions -rw-r--r--
Replace DISABLE_TRACKING and TRACKING_HTML by a TRACKING_ID variable in configuration files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
# taken from plone
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
import os
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
bin_search_path = [
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
    '/usr/bin',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
    '/usr/local/bin',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
    ]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
class MissingBinary(Exception): pass
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
def bin_search(binary):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
    """search the bin_search_path  for a given binary
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
    returning its fullname or None"""
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
    result = None
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
    mode   = os.R_OK | os.X_OK
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
    for p in bin_search_path:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
        path = os.path.join(p, binary)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
        if os.access(path, mode) == 1:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
            result = path
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
            break
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
    else:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
        raise MissingBinary('Unable to find binary "%s"' % binary)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
    return result