Skip to content
Snippets Groups Projects
setup.py 3.15 KiB
from setuptools import setup, find_packages
import os
import re
import subprocess
import sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'src')))
import sakia


def which(program):
    """
    Detect whether or not a program is installed.
    Thanks to http://stackoverflow.com/a/377028/70191
    """
    def is_exe(fpath):
        return os.path.exists(fpath) and os.access(fpath, os.X_OK)

    fpath, _ = os.path.split(program)
    if fpath:
        if is_exe(program):
            return program
    else:
        for path in os.environ['PATH'].split(os.pathsep):
            exe_file = os.path.join(path, program)
            if is_exe(exe_file):
                return exe_file

    return None



path = os.path.abspath(os.path.join(os.path.dirname(__file__)))

subprocess.call(
    "python {0}/gen_resources.py".format(path), shell=True
)
subprocess.call(
    "python {0}/gen_translations.py".format(path), shell=True
)

EDITABLE_REQUIREMENT = re.compile(r'^-e (?P<link>(?P<vcs>git|svn|hg|bzr).+#egg=(?P<package>.+)-(?P<version>\d(?:\.\d)*))$')

install_requires = []
dependency_links = []
data_files = [('sakia', ['src/sakia/root_servers.yml', 'src/sakia/g1_license.html'])]

for requirement in (l.strip() for l in open('requirements.txt')):
    match = EDITABLE_REQUIREMENT.match(requirement)
    if match:
        assert which(match.group('vcs')) is not None, \
            "VCS '%(vcs)s' must be installed in order to install %(link)s" % match.groupdict()
        install_requires.append("%(package)s==%(version)s" % match.groupdict())
        dependency_links.append(match.group('link'))
    else:
        install_requires.append(requirement)

sql_files = []
for file in os.listdir(os.path.join("src", "sakia", "data", "repositories")):
    if file.endswith(".sql"):
        sql_file = os.path.basename(file)
        sql_files.append('src/sakia/data/repositories/{:}'.format(sql_file))
data_files.append(('sakia/data/repositories/', sql_files))


setup(
    name='sakia',

    version=sakia.__version__,
    author="inso",

    author_email="insomniak.fr@gmail.com",

    description="A [duniter](https://github.com/duniter/duniter) Python client",

    long_description=open('README.md').read(),
    long_description_content_type="text/markdown",

    # Active la prise en compte du fichier MANIFEST.in
    include_package_data=True,
    url='https://github.com/duniter/sakia',

    classifiers=[
        "Programming Language :: Python",
        "Development Status :: 4 - Beta",
        "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
        "Natural Language :: French",
        "Operating System :: OS Independent",
        "Programming Language :: Python :: 3.5",
        "Topic :: Communications",
    ],
    install_requires=install_requires,
    dependency_links=dependency_links,
    packages=find_packages('src', exclude=["*.tests", "*.tests.*", "tests.*", "tests"]),
    package_dir={'sakia': 'src/sakia',
                 'i18n_rc': 'src/i18n_rc',
                 'icons_rc': 'src/icons_rc'},
    entry_points={
              'console_scripts': [
                  'sakia = sakia.main:main'
              ]
          },
    data_files=data_files
)