#!/usr/bin/env python
# This file is part of Tryton.  The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import unittest
import sys
from setuptools import setup, Command
import re
import os
import ConfigParser


class SQLiteTest(Command):
    """
    Run the tests on SQLite
    """
    description = "Run tests on SQLite"

    user_options = []

    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        os.environ['TRYTOND_DATABASE_URI'] = 'sqlite://'
        os.environ['DB_NAME'] = ':memory:'

        from tests import suite
        test_result = unittest.TextTestRunner(verbosity=3).run(suite())

        if test_result.wasSuccessful():
            sys.exit(0)
        sys.exit(-1)


def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()


config = ConfigParser.ConfigParser()
config.readfp(open('tryton.cfg'))
info = dict(config.items('tryton'))
for key in ('depends', 'extras_depend', 'xml'):
    if key in info:
        info[key] = info[key].strip().splitlines()
major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
major_version = int(major_version)
minor_version = int(minor_version)

requires = []
for dep in info.get('depends', []):
    if not re.match(r'(ir|res|webdav)(\W|$)', dep):
        requires.append(
            'trytond_%s >= %s.%s, < %s.%s' % (
                dep, major_version, minor_version, major_version,
                minor_version + 1
            )
        )
requires.append(
    'trytond >= %s.%s, < %s.%s' % (
        major_version, minor_version, major_version, minor_version + 1
    )
)

test_requirements = ['docutils', 'markdown']

setup(
    name='fio_nereid_cms',
    version=info.get('version', '0.0.1'),
    description='Tryton Nereid CMS',
    author='Fulfil.IO Inc., Openlabs Technologies & Consulting (P) Limited',
    author_email='info@fulfil.io',
    url='http://www.fulfil.io/',
    package_dir={'trytond.modules.nereid_cms': '.'},
    packages=[
        'trytond.modules.nereid_cms',
        'trytond.modules.nereid_cms.tests',
    ],
    package_data={
        'trytond.modules.nereid_cms': info.get('xml', []) + [
            'tryton.cfg', 'locale/*.po', '*.odt', 'icons/*.svg', 'view/*.xml',
        ],
    },
    classifiers=[
        'Development Status :: 4 - Beta',
        'Environment :: Plugins',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Natural Language :: English',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Framework :: Tryton',
        'Topic :: Office/Business',
    ],
    license='BSD',
    install_requires=requires,
    tests_require=test_requirements,
    zip_safe=False,
    entry_points="""
    [trytond.modules]
    nereid_cms = trytond.modules.nereid_cms
    """,
    test_suite='tests',
    test_loader='trytond.test_loader:Loader',
    cmdclass={
        'test': SQLiteTest,
    },
)
