Source code for drivecasa.casa_env

"""
Convenience routines for manipulating shell environments.
"""
import os

def _append_to_path(env, path, extra_dir):
    """Deal nicely with empty path, minimise boilerplating."""
    env_dirs = env.get(path, '').split(':')
    env_dirs.append(extra_dir)
    env[path] = ':'.join(env_dirs)

def _add_bin_lib_python(env, package_group_dir, include_python=True):
    """Add the bin, lib, (and optionally python-packages) subdirs of
    `package_group_dir` to the relevant environment paths."""
    _append_to_path(env, "PATH", os.path.join(package_group_dir, 'bin'))
    _append_to_path(env, 'LD_LIBRARY_PATH',
                    os.path.join(package_group_dir, 'lib'))
    if include_python:
        _append_to_path(env, 'PYTHONPATH',
                        os.path.join(package_group_dir, 'python-packages'))

[docs]def casapy_env(casa_topdir): """Returns an environment dictionary configured for CASA execution. **Args:** - `casa_topdir`: should either contain the top-level directory containing CASA installation, or be set to None if casa is already available from the default environment. .. note:: It's not a bad idea to always specify the casa dir anyway, so you don't have to rely on the environment paths being set up already. """ casa_env = {} casa_env.update(os.environ) if casa_topdir is not None: _add_bin_lib_python(casa_env, casa_topdir) return casa_env