-
Notifications
You must be signed in to change notification settings - Fork 83
/
Copy pathsetup.py
139 lines (125 loc) · 3.99 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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import re
import sys
import subprocess
from setuptools import setup
from setuptools.command.sdist import sdist as base_sdist
class sdist(base_sdist):
"""
Regular sdist class plus compilation of front end assets
"""
def compile_assets(self):
"""
Compile the front end assets
"""
try:
# Move into client dir
curdir = os.path.abspath(os.curdir)
client_path = os.path.join(os.path.dirname(__file__), 'longclaw', 'client')
os.chdir(client_path)
subprocess.check_call(['npm', 'install'])
subprocess.check_call(['npm', 'run', 'build'])
os.chdir(curdir)
except (OSError, subprocess.CalledProcessError) as err:
print('Error compiling assets: {}'.format(err))
raise SystemExit(1)
def run(self):
self.compile_assets()
base_sdist.run(self)
def get_version(*file_paths):
"""Retrieves the version from longclaw/__init__.py"""
filename = os.path.join(os.path.dirname(__file__), *file_paths)
version_file = open(filename).read()
version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]",
version_file, re.M)
if version_match:
return version_match.group(1)
raise RuntimeError('Unable to find version string.')
version = get_version("longclaw", "__init__.py")
if sys.argv[-1] == 'publish':
try:
import wheel
print("Wheel version: ", wheel.__version__)
except ImportError:
print('Wheel library missing. Please run "pip install wheel"')
sys.exit()
os.system('python setup.py sdist bdist_wheel')
os.system('python -m twine upload --verbose dist/*')
sys.exit()
if sys.argv[-1] == 'tag':
print("Tagging the version on git:")
os.system("git tag -a %s -m 'version %s'" % (version, version))
os.system("git push --tags")
sys.exit()
try:
readme = open('README.rst').read()
history = open('CHANGELOG.rst').read().replace('.. :changelog:', '')
except IOError:
# Protects against running python from a different dir to setup.py,
# e.g. on travis
readme = ''
history = ''
setup(
name='longclaw',
version=version,
description="""A shop for wagtail cms""",
long_description=readme + '\n\n' + history,
author='James Ramm',
author_email='[email protected]',
url='https://github.com/JamesRamm/longclaw',
packages=[
'longclaw',
],
include_package_data=True,
install_requires=[
'django>=2.2,<3.0',
'wagtail>=2.11,<2.14',
'django-countries==5.5',
'django-extensions==2.2.1',
'djangorestframework==3.11.2',
'django-ipware==2.1.0',
'django-polymorphic==2.0.3',
],
extras_require={
"testing": [
"bumpversion==0.6.0",
"wheel==0.38.1",
"setuptools==65.5.1",
"coverage>=4.5.2",
"mock==2.0.0",
"flake8>=3.6.0",
"tox>=3.5.3",
"codecov>=2.0.15",
"# Additional test requirements go here",
"factory_boy>=2.11.1",
"wagtail-factories>=1.1.0",
],
},
license="MIT",
zip_safe=False,
keywords='longclaw',
classifiers=[
'Development Status :: 3 - Alpha',
'Framework :: Django',
'Framework :: Django :: 2.0',
'Framework :: Wagtail',
'Framework :: Wagtail :: 2',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Natural Language :: English',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.7'
'Programming Language :: Python :: 3.8'
'Programming Language :: Python :: 3.9'
'Programming Language :: Python :: 3.10'
],
entry_points="""
[console_scripts]
longclaw=longclaw.bin.longclaw:main
""",
cmdclass={
'sdist': sdist
}
)