Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/olpcgames/util.py
blob: 57d04567dc8784f8fc965cdbe78c231a4fc77455 (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
"""Abstraction layer for working outside the Sugar environment"""
import logging
log = logging.getLogger( 'olpcgames.util' )
import os.path

NON_SUGAR_ROOT = '~/.olpcgames/'

try:
    from sugar.activity.activity import get_bundle_path as _get_bundle_path
    def get_bundle_path( ):
        """Retrieve bundle path from activity with fix for silly registration bug"""
        path = _get_bundle_path()
        if path.endswith( '.activity.activity' ):
            log.warn( '''Found double .activity suffix in bundle path, truncating: %s''', path )
            path = path[:-9]
        return path
except ImportError:
    log.warn( '''Do not appear to be running under Sugar, stubbing-in get_bundle_path''' )
    def get_bundle_path():
        """Retrieve a substitute data-path for non OLPC systems"""
        return os.path.expanduser( NON_SUGAR_ROOT )

def get_activity_root( ):
    """Return the activity root for data storage operations
    
    If the activity is present, returns the activity's root, 
    otherwise returns NON_SUGAR_ROOT as the directory.
    """
    import olpcgames
    if olpcgames.ACTIVITY:
        return olpcgames.ACTIVITY.get_activity_root()
    else:
        return os.path.expanduser( NON_SUGAR_ROOT )

def data_path(file_name):
    """Return the full path to a file in the data sub-directory of the bundle"""
    return os.path.join(get_bundle_path(), 'data', file_name)
def tmp_path(file_name):
    """Return the full path to a file in the temporary directory"""
    return os.path.join(get_activity_root(), 'tmp', file_name)