# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Configuration for the app."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import os


class Config(object):
  """Contains site-configured variables."""
  cidb_cred_dir = os.environ.get('CIDB_CRED_DIR', 'creds/cidb.dbg')
  debug = os.environ.get('DEBUG', 'True') == 'True'
  is_service = os.environ.get('IS_SERVICE', 'False') == 'True'

  def __init__(self):
    """Initializer."""
    self.users = {
        "admin": os.environ.get('ADMIN_PASSWORD_HASH')
    }
