src/cm/utils/system.py
author Simon Descarpentries <sid@sopinspace.com>
Thu, 13 Mar 2014 18:19:43 +0100
changeset 613 a0b695aace0a
parent 0 40c8f766c9b8
permissions -rw-r--r--
File field of Upload from file is now mandatory. Integrates 1sts IRI improvements in JavaScript test-suite. Continue testing error messages of mandatory fields, up to 704 tests.
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