87 lines
2.7 KiB
Python
Executable File
87 lines
2.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
'''
|
|
Setup script for eopayment
|
|
'''
|
|
|
|
import distutils
|
|
import distutils.core
|
|
from glob import glob
|
|
from os.path import splitext, basename, join as pjoin
|
|
import os
|
|
from unittest import TextTestRunner, TestLoader
|
|
|
|
class TestCommand(distutils.core.Command):
|
|
user_options = [ ]
|
|
|
|
def initialize_options(self):
|
|
self._dir = os.getcwd()
|
|
|
|
def finalize_options(self):
|
|
pass
|
|
|
|
def run(self):
|
|
'''
|
|
Finds all the tests modules in tests/, and runs them.
|
|
'''
|
|
testfiles = [ ]
|
|
for t in glob(pjoin(self._dir, 'tests', '*.py')):
|
|
if not t.endswith('__init__.py'):
|
|
testfiles.append('.'.join(
|
|
['tests', splitext(basename(t))[0]])
|
|
)
|
|
|
|
tests = TestLoader().loadTestsFromNames(testfiles)
|
|
t = TextTestRunner(verbosity = 4)
|
|
t.run(tests)
|
|
|
|
def get_version():
|
|
import glob
|
|
import re
|
|
import os
|
|
|
|
version = None
|
|
for d in glob.glob('*'):
|
|
if not os.path.isdir(d):
|
|
continue
|
|
module_file = os.path.join(d, '__init__.py')
|
|
if not os.path.exists(module_file):
|
|
continue
|
|
for v in re.findall("""__version__ *= *['"](.*)['"]""",
|
|
open(module_file).read()):
|
|
assert version is None
|
|
version = v
|
|
if version:
|
|
break
|
|
assert version is not None
|
|
if os.path.exists('.git'):
|
|
import subprocess
|
|
p = subprocess.Popen(['git','describe','--dirty','--match=v*'],
|
|
stdout=subprocess.PIPE)
|
|
result = p.communicate()[0]
|
|
assert p.returncode == 0, 'git returned non-zero'
|
|
new_version = result.split()[0][1:]
|
|
assert not new_version.endswith('-dirty'), 'git workdir is not clean'
|
|
assert new_version.split('-')[0] == version, '__version__ must match the last git annotated tag'
|
|
version = new_version.replace('-', '.')
|
|
return version
|
|
|
|
distutils.core.setup(name='eopayment',
|
|
version=get_version(),
|
|
license='GPLv3 or later',
|
|
description='Common API to use all French online payment credit card processing services',
|
|
long_description=
|
|
"eopayment is a Python module to interface with French's bank credit card\n"
|
|
"online payment services. Supported services are ATOS/SIP, SystemPay, and\n"
|
|
"SPPLUS.",
|
|
url='http://dev.entrouvert.org/projects/eopayment/',
|
|
author="Entr'ouvert",
|
|
author_email="info@entrouvert.com",
|
|
maintainer="Benjamin Dauvergne",
|
|
maintainer_email="bdauvergne@entrouvert.com",
|
|
packages=['eopayment'],
|
|
requires=[
|
|
'pycrypto (>= 2.5)'
|
|
],
|
|
cmdclass={'test': TestCommand})
|