123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/usr/bin/env python
- '''
- Taken from flask-appconfig
- '''
- import json
- import os
- from xdg import BaseDirectory
- def get_conf(prefix='LARIGIRA_'):
- '''This is where everyone should get configuration from'''
- conf_dir = BaseDirectory.save_config_path('larigira')
- conf = {}
- conf['CONTINOUS_AUDIOSPEC'] = dict(kind='mpd', howmany=1)
- conf['MPD_HOST'] = os.getenv('MPD_HOST', 'localhost')
- conf['MPD_PORT'] = int(os.getenv('MPD_PORT', '6600'))
- conf['CACHING_TIME'] = 10
- conf['DB_URI'] = os.path.join(conf_dir, 'db.json')
- conf['SCRIPTS_PATH'] = os.path.join(conf_dir, 'scripts')
- conf['BOOTSTRAP_SERVE_LOCAL'] = True
- conf['SECRET_KEY'] = 'Please replace me!'
- conf['MPD_WAIT_START'] = True
- conf['MPD_WAIT_START_RETRYSECS'] = 5
- conf['CHECK_SECS'] = 20 # period for checking playlist length
- conf['EVENT_TICK_SECS'] = 30 # period for scheduling events
- conf['DEBUG'] = False
- conf['LOG_CONFIG'] = False
- conf['TMPDIR'] = os.getenv('TMPDIR', '/tmp/')
- conf['FILE_PATH_SUGGESTION'] = () # tuple of paths
- conf.update(from_envvars(prefix=prefix))
- return conf
- def from_envvars(prefix=None, envvars=None, as_json=True):
- """Load environment variables in a dictionary
- Values are parsed as JSON. If parsing fails with a ValueError,
- values are instead used as verbatim strings.
- :param prefix: If ``None`` is passed as envvars, all variables from
- ``environ`` starting with this prefix are imported. The
- prefix is stripped upon import.
- :param envvars: A dictionary of mappings of environment-variable-names
- to Flask configuration names. If a list is passed
- instead, names are mapped 1:1. If ``None``, see prefix
- argument.
- :param as_json: If False, values will not be parsed as JSON first.
- """
- conf = {}
- if prefix is None and envvars is None:
- raise RuntimeError('Must either give prefix or envvars argument')
- # if it's a list, convert to dict
- if isinstance(envvars, list):
- envvars = {k: None for k in envvars}
- if not envvars:
- envvars = {k: k[len(prefix):] for k in os.environ.keys()
- if k.startswith(prefix)}
- for env_name, name in envvars.items():
- if name is None:
- name = env_name
- if env_name not in os.environ:
- continue
- if as_json:
- try:
- conf[name] = json.loads(os.environ[env_name])
- except ValueError:
- conf[name] = os.environ[env_name]
- else:
- conf[name] = os.environ[env_name]
- return conf
|