# -*- coding: utf-8 -*-
# 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.
"""The setuptools setup file."""

from __future__ import print_function

from setuptools import setup

setup(
    name='cros_config_host',
    version='1',
    author='Simon Glass',
    author_email='sjg@chromium.org',
    url='README.md',
    packages=['cros_config_host'],
    package_data={'cros_config_host': [
        'cros_config_schema.yaml',
        'power_manager_prefs_schema.yaml',
        'cros_config_test_schema.yaml',
    ]},
    entry_points={
        'console_scripts': [
            '{0} = cros_config_host.{0}:main'.format(script)
            for script in (
                'cros_config_host',
                'cros_config_schema',
                'cros_config_test_schema'
            )
        ],
    },
    description='Access to the model configuration from the host',
)
