EDDN/setup.py
Athanasius 548f7c3cb3 setup.py: Get 'extra' files in place - monitor, schemas, systemd files
* 'monitor' files are for the web page showing status/stats.
* 'schema' files are a publically available copy of the schemas in-use.
* 'systemd' files are the start-<service> script and its config file.
2021-06-14 16:30:11 +01:00

125 lines
3.4 KiB
Python

import glob
import os
import re
import shutil
from setuptools import setup, find_packages
VERSIONFILE = "src/eddn/conf/Version.py"
verstr = "unknown"
try:
verstrline = open(VERSIONFILE, "rt").read()
VSRE = r"^__version__ = ['\"]([^'\"]*)['\"]"
mo = re.search(VSRE, verstrline, re.M)
if mo:
verstr = mo.group(1)
except EnvironmentError:
print "unable to find version in %s" % (VERSIONFILE,)
raise RuntimeError("if %s exists, it is required to be well-formed" % (VERSIONFILE,))
# Location of start-eddn-service script and its config file
START_SCRIPT_BIN='%s/.local/bin' % ( os.environ['HOME'] )
# Location of web files
SHARE_EDDN_FILES='%s/.local/share/eddn' % ( os.environ['HOME'] )
setup(
name='eddn',
version=verstr,
description='Elite: Dangerous Data Network',
long_description="""\
The Elite Dangerous Data Network allows ED players to share data. Not affiliated with Frontier Developments.
""",
author='EDCD (https://edcd.github.io/)',
author_email='edcd@miggy.org',
url='https://github.com/EDCD/EDDN',
packages=find_packages(
'src',
exclude=["*.tests"]
),
package_dir = {'':'src'},
# This includes them for the running code, but that doesn't help
# serve them up for reference.
data_files=[
(
'eddn/schemas', glob.glob("schemas/*.json")
)
],
# Yes, we pin versions. With python2.7 the latest pyzmq will NOT
# work, for instance.
install_requires=[
"argparse",
"bottle==0.12.15",
"enum34==1.1.6",
"gevent==1.3.7",
"jsonschema==2.6.0",
"pyzmq==17.1.2",
"strict_rfc3339==0.7",
"simplejson==3.16.0",
"mysql-connector-python==8.0.17"
],
entry_points={
'console_scripts': [
'eddn-gateway = eddn.Gateway:main',
'eddn-relay = eddn.Relay:main',
'eddn-monitor = eddn.Monitor:main',
],
}
)
# Ensure the systemd-required start files are in place
if not os.path.isdir(START_SCRIPT_BIN):
# We're still using Python 2.7, so no pathlib
os.chdir('/')
for pc in START_SCRIPT_BIN[1:].split('/'):
try:
os.mkdir(pc)
except OSError:
pass
os.chdir(pc)
if not os.path.isdir(START_SCRIPT_BIN):
print "%s can't be created, aborting!!!" % (START_SCRIPT_BIN)
exit(-1)
for f in ( 'contrib/systemd/start-eddn-service', 'contrib/systemd/eddn_config'):
shutil.copy(f, START_SCRIPT_BIN)
# Ensure the latest monitor files are in place
if not os.path.isdir(SHARE_EDDN_FILES):
# We're still using Python 2.7, so no pathlib
os.chdir('/')
for pc in SHARE_EDDN_FILES[1:].split('/'):
try:
os.mkdir(pc)
except OSError:
pass
os.chdir(pc)
if not os.path.isdir(SHARE_EDDN_FILES):
print "%s can't be created, aborting!!!" % (SHARE_EDDN_FILES)
exit(-1)
# Copy the monitor (Web page) files
try:
shutil.rmtree('%s/monitor' % ( SHARE_EDDN_FILES ))
except OSError:
pass
shutil.copytree('contrib/monitor', '%s/monitor' % ( SHARE_EDDN_FILES ))
# And a copy of the schemas too
try:
shutil.rmtree('%s/schemas' % ( SHARE_EDDN_FILES ))
except OSError:
pass
shutil.copytree('schemas', '%s/schemas' % ( SHARE_EDDN_FILES ))
# You still need to make an override config file
print "You now NEED to create and populate %s/config.json" % ( SHARE_EDDN_FILES )