# Program options processing

import os

import util

def env_flag(name, default=False, env_names_ref=None):
    if env_names_ref != None: env_names_ref.append(name+'=1')
    return bool(os.getenv(name, default))

def get_env_var(name, default=None, env_names_ref=None):
    if env_names_ref != None: env_names_ref.append(name+'=...')
    return os.getenv(name, default)

def get_env_vars(names, prefix=None, env_names_ref=None, on_unset=util.noop):
    vars_ = {}
    for name in names:
        env_name = name
        if prefix != None: env_name = prefix+'_'+env_name
        if env_names_ref != None: env_names_ref.append(env_name+'=...')
        try: vars_[name] = os.environ[env_name]
        except KeyError, e: on_unset(e)
    return vars_

def env_usage(env_names, optional=False):
    str_ = 'env'
    for name in env_names:
        str_ += ' '
        if optional: str_ += '['
        str_ += name
        if optional: str_ += ']'
    return str_
