forked from robotframework/robotframework
-
Notifications
You must be signed in to change notification settings - Fork 1
/
setup.py
executable file
·100 lines (90 loc) · 3.77 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/usr/bin/env python
import sys
import os
from os.path import abspath, join, dirname
from subprocess import list2cmdline
from distutils.core import setup
from distutils.command.install_scripts import install_scripts
try:
import setuptools # use setuptools when available
except ImportError:
pass
CURDIR = dirname(abspath(__file__))
with open(join(CURDIR, 'src', 'robot', 'version.py')) as f:
exec(f.read())
VERSION = get_version()
with open(join(CURDIR, 'README.rst')) as f:
LONG_DESCRIPTION = f.read()
base_url = 'https://github.com/robotframework/robotframework/blob/master'
for text in ('INSTALL', 'CONTRIBUTING'):
search = '`<{0}.rst>`__'.format(text)
replace = '`{0}.rst <{1}/{0}.rst>`__'.format(text, base_url)
if search not in LONG_DESCRIPTION:
raise RuntimeError('{} not found from README.rst'.format(search))
LONG_DESCRIPTION = LONG_DESCRIPTION.replace(search, replace)
CLASSIFIERS = """
Development Status :: 5 - Production/Stable
License :: OSI Approved :: Apache Software License
Operating System :: OS Independent
Programming Language :: Python :: 2
Programming Language :: Python :: 3
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: Implementation :: Jython
Programming Language :: Python :: Implementation :: IronPython
Programming Language :: Python :: Implementation :: PyPy
Topic :: Software Development :: Testing
Framework :: Robot Framework
""".strip().splitlines()
KEYWORDS = 'robotframework testing testautomation acceptancetesting atdd bdd'
PACKAGES = ['robot', 'robot.api', 'robot.conf', 'robot.htmldata',
'robot.libdocpkg', 'robot.libraries', 'robot.model',
'robot.output', 'robot.output.console', 'robot.parsing',
'robot.reporting', 'robot.result', 'robot.running',
'robot.running.arguments', 'robot.running.timeouts',
'robot.utils', 'robot.variables', 'robot.writer']
PACKAGE_DATA = [join('htmldata', directory, pattern)
for directory in ('rebot', 'libdoc', 'testdoc', 'lib', 'common')
for pattern in ('*.html', '*.css', '*.js')]
WINDOWS = os.sep == '\\'
if sys.platform.startswith('java'):
SCRIPTS = ['jybot', 'jyrebot']
elif sys.platform == 'cli':
SCRIPTS = ['ipybot', 'ipyrebot']
else:
SCRIPTS = ['pybot']
SCRIPTS = [join('src', 'bin', s) for s in SCRIPTS + ['robot', 'rebot']]
if WINDOWS:
SCRIPTS = [s+'.bat' for s in SCRIPTS]
class custom_install_scripts(install_scripts):
def run(self):
install_scripts.run(self)
if WINDOWS:
self._replace_interpreter_in_bat_files()
def _replace_interpreter_in_bat_files(self):
print("replacing interpreter in robot.bat and rebot.bat.")
interpreter = list2cmdline([sys.executable])
for path in self.get_outputs():
if path.endswith(('robot.bat', 'rebot.bat')):
with open(path, 'r') as input:
replaced = input.read().replace('python', interpreter)
with open(path, 'w') as output:
output.write(replaced)
setup(
name = 'robotframework',
version = VERSION,
author = 'Robot Framework Developers',
author_email = 'robotframework@gmail.com',
url = 'http://robotframework.org',
download_url = 'https://pypi.python.org/pypi/robotframework',
license = 'Apache License 2.0',
description = 'A generic test automation framework',
long_description = LONG_DESCRIPTION,
keywords = KEYWORDS,
platforms = 'any',
classifiers = CLASSIFIERS,
package_dir = {'': 'src'},
package_data = {'robot': PACKAGE_DATA},
packages = PACKAGES,
scripts = SCRIPTS,
cmdclass = {'install_scripts': custom_install_scripts}
)