setup.py 2.52 KB
import os
import sys
import subprocess
from setuptools import (
    setup,
    find_packages,
    )


here = os.path.abspath(os.path.dirname(__file__))
with open(os.path.join(here, 'README.rst')) as f:
    README = f.read()
with open(os.path.join(here, 'CHANGES.txt')) as f:
    CHANGES = f.read()

line = CHANGES.splitlines()[0]
version = line.split()[0]

requires = [
    'plaster_pastedeploy',
    'pyramid',
    'pyramid_chameleon',
    'pyramid_debugtoolbar',
    'pyramid_tm',
    'waitress',
    'zope.sqlalchemy',
    'psycopg2-binary',
    'pytz',
    'ziggurat-foundations',
    'alembic',
    'colander',
    'deform',
    'pyramid_beaker',
    'pyramid_mailer',
]

customs_require = [
    # 'http://vpn.opensipkd.com/2019/01/opensipkd-jsonrpc-0.1.tgz',
    ]

tests_require = [
    'WebTest >= 1.3.1',  # py3 compat
    'pytest',
    'pytest-cov',
]


def run(cmd):
    if subprocess.call(cmd) != 0:
        sys.exit()


def pip_install(package, upgrade=False):
    cmd = [pip, 'install']
    if upgrade:
        cmd += ['--upgrade']
    if sys.argv[2:]:
        option = sys.argv[2]  # Bisa untuk proxy
        cmd += [option]
    cmd += [package]
    run(cmd)


if sys.argv[1:] and sys.argv[1] == 'develop-use-pip':
    bin_ = os.path.split(sys.executable)[0]
    pip = os.path.join(bin_, 'pip')
    pip_install('pip', True)
    pip_install('setuptools', True)
    requires_ = requires + customs_require
    for package in requires_:
        if sys.argv[2:]:
            cmd = [pip, 'install', sys.argv[2], package]
        else:
            cmd = [pip, 'install', package]
        run(cmd)
    cmd = [sys.executable, sys.argv[0], 'develop']
    subprocess.call(cmd)
    sys.exit()

setup(
    name='web_starter',
    version=version,
    description='Web Starter',
    long_description=README + '\n\n' + CHANGES,
    classifiers=[
        'Programming Language :: Python',
        'Framework :: Pyramid',
        'Topic :: Internet :: WWW/HTTP',
        'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
    ],
    author='',
    author_email='',
    url='',
    keywords='web pyramid pylons',
    packages=find_packages(),
    include_package_data=True,
    zip_safe=False,
    extras_require={
        'testing': tests_require,
    },
    install_requires=requires,
    entry_points={
        'paste.app_factory': [
            'main = web_starter:main',
        ],
        'console_scripts': [
            'initialize_web_starter_db = web_starter.scripts.initialize_db:main',
            'send_email = web_starter.scripts.send_email:main',
        ]
    },
)