2018-03-20 04:11:18 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# coding: utf-8
|
|
|
|
from __future__ import print_function
|
|
|
|
|
|
|
|
import io
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
from glob import glob
|
|
|
|
from shutil import rmtree
|
2020-01-19 16:11:18 +00:00
|
|
|
|
2018-03-20 04:11:18 +00:00
|
|
|
try:
|
2020-01-19 16:11:18 +00:00
|
|
|
# need setuptools to build wheel
|
2018-03-20 04:11:18 +00:00
|
|
|
from setuptools import setup, Command
|
2020-01-19 16:11:18 +00:00
|
|
|
|
2018-03-20 04:11:18 +00:00
|
|
|
setuptools_available = True
|
2020-01-19 16:11:18 +00:00
|
|
|
|
2018-03-20 04:11:18 +00:00
|
|
|
except ImportError:
|
2020-01-19 16:11:18 +00:00
|
|
|
# works in a pinch
|
2018-03-20 04:11:18 +00:00
|
|
|
from distutils.core import setup, Command
|
2020-01-19 16:11:18 +00:00
|
|
|
|
2018-03-20 04:11:18 +00:00
|
|
|
setuptools_available = False
|
2020-01-19 16:11:18 +00:00
|
|
|
|
2018-03-20 04:11:18 +00:00
|
|
|
from distutils.spawn import spawn
|
|
|
|
|
2020-01-19 16:11:18 +00:00
|
|
|
if "bdist_wheel" in sys.argv and not setuptools_available:
|
|
|
|
print("cannot build wheel without setuptools")
|
|
|
|
sys.exit(1)
|
|
|
|
|
2018-03-20 04:11:18 +00:00
|
|
|
|
2018-03-20 21:17:35 +00:00
|
|
|
def mglob(dirname, extensions):
|
2020-01-19 16:11:18 +00:00
|
|
|
ret = []
|
|
|
|
for ext in extensions:
|
|
|
|
ret.extend(glob(dirname + "/*." + ext))
|
|
|
|
return ret
|
|
|
|
|
|
|
|
|
|
|
|
NAME = "r0c"
|
|
|
|
VERSION = None
|
|
|
|
data_files = [
|
|
|
|
("share/doc/r0c", ["README.rst", "README.md", "LICENSE"]),
|
|
|
|
("share/doc/r0c/help", mglob("docs", ["md", "rst"])),
|
|
|
|
("share/doc/r0c/clients", glob("clients/*")),
|
2018-03-20 04:11:18 +00:00
|
|
|
]
|
2020-01-19 16:11:18 +00:00
|
|
|
manifest = ""
|
2018-03-20 04:11:18 +00:00
|
|
|
for dontcare, files in data_files:
|
2020-01-19 16:11:18 +00:00
|
|
|
# print(dontcare)
|
|
|
|
for fn in files:
|
|
|
|
manifest += "include {0}\n".format(fn)
|
2018-03-20 04:11:18 +00:00
|
|
|
|
|
|
|
here = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
2020-01-19 16:11:18 +00:00
|
|
|
with open(here + "/MANIFEST.in", "wb") as f:
|
|
|
|
f.write(manifest.encode("utf-8"))
|
2018-03-20 04:11:18 +00:00
|
|
|
|
2018-03-20 21:17:35 +00:00
|
|
|
|
|
|
|
try:
|
2020-01-19 16:11:18 +00:00
|
|
|
LONG_DESCRIPTION = ""
|
|
|
|
LDCT = ""
|
|
|
|
with open(here + "/README.rst", "rb") as f:
|
|
|
|
txt = f.read().decode("utf-8")
|
|
|
|
txt = txt[txt.find("`") :]
|
|
|
|
LONG_DESCRIPTION = txt
|
|
|
|
LDCT = "text/x-rst"
|
2018-03-20 21:17:35 +00:00
|
|
|
except:
|
2020-01-19 16:11:18 +00:00
|
|
|
print("\n### could not open README.rst ###\n")
|
|
|
|
with open(here + "/README.md", "rb") as f:
|
|
|
|
txt = f.read().decode("utf-8")
|
|
|
|
LONG_DESCRIPTION = txt
|
|
|
|
LDCT = "text/markdown"
|
2018-03-20 21:17:35 +00:00
|
|
|
|
2018-03-20 04:11:18 +00:00
|
|
|
|
|
|
|
about = {}
|
|
|
|
if not VERSION:
|
2020-01-19 16:11:18 +00:00
|
|
|
with open(os.path.join(here, NAME, "__version__.py"), "rb") as f:
|
|
|
|
exec(f.read().decode("utf-8"), about)
|
2018-03-20 04:11:18 +00:00
|
|
|
else:
|
2020-01-19 16:11:18 +00:00
|
|
|
about["__version__"] = VERSION
|
2018-03-20 04:11:18 +00:00
|
|
|
|
|
|
|
|
2018-03-20 21:17:35 +00:00
|
|
|
class clean2(Command):
|
2020-01-19 16:11:18 +00:00
|
|
|
description = "Cleans the source tree"
|
|
|
|
user_options = []
|
|
|
|
|
|
|
|
def initialize_options(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def finalize_options(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def run(self):
|
|
|
|
os.system("{0} setup.py clean --all".format(sys.executable))
|
|
|
|
|
|
|
|
try:
|
|
|
|
rmtree("./dist")
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
try:
|
|
|
|
rmtree("./r0c.egg-info")
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
nuke = []
|
|
|
|
for (dirpath, dirnames, filenames) in os.walk("."):
|
|
|
|
for fn in filenames:
|
|
|
|
if (
|
|
|
|
fn.endswith(".rst")
|
|
|
|
or fn.endswith(".pyc")
|
|
|
|
or fn.endswith(".pyo")
|
|
|
|
or fn.endswith(".pyd")
|
|
|
|
or fn.startswith("MANIFEST")
|
|
|
|
):
|
|
|
|
nuke.append(dirpath + "/" + fn)
|
|
|
|
|
|
|
|
for fn in nuke:
|
|
|
|
os.unlink(fn)
|
2018-03-20 21:17:35 +00:00
|
|
|
|
|
|
|
|
|
|
|
class rstconv(Command):
|
2020-01-19 16:11:18 +00:00
|
|
|
description = "Converts markdown to rst"
|
|
|
|
user_options = []
|
|
|
|
|
|
|
|
def initialize_options(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def finalize_options(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def run(self):
|
|
|
|
self.proc_dir(".")
|
|
|
|
self.proc_dir("docs")
|
|
|
|
|
|
|
|
def proc_dir(self, path):
|
|
|
|
import m2r
|
|
|
|
|
|
|
|
for (dirpath, dirnames, filenames) in os.walk(path):
|
|
|
|
|
|
|
|
dirnames.sort()
|
|
|
|
for fn in sorted(filenames):
|
|
|
|
|
|
|
|
fn = dirpath + "/" + fn
|
|
|
|
if not fn.endswith(".md"):
|
|
|
|
continue
|
|
|
|
|
|
|
|
rst_fn = fn[:-3] + ".rst"
|
|
|
|
with open(fn, "rb") as f:
|
|
|
|
md = f.read().decode("utf-8")
|
|
|
|
|
|
|
|
for kw in ["docs/help-"]:
|
|
|
|
md = md.replace(
|
|
|
|
"({0}".format(kw),
|
|
|
|
"(https://github.com/9001/r0c/blob/master/{0}".format(kw),
|
|
|
|
)
|
|
|
|
|
|
|
|
for kw in ["docs", "clients"]:
|
|
|
|
md = md.replace(
|
|
|
|
"({0}/".format(kw), "(https://ocv.me/static/r0c/{0}/".format(kw)
|
|
|
|
)
|
|
|
|
|
|
|
|
md = md.replace("* **[", "* [").replace(")** <-", ") <-")
|
|
|
|
rst = m2r.convert(md)
|
|
|
|
rst = rst.replace(":raw-html-m2r:`<del>", ":sub:`")
|
|
|
|
rst = rst.replace("</del>`", "`")
|
|
|
|
|
|
|
|
with open(rst_fn, "wb") as f:
|
|
|
|
f.write(rst.encode("utf-8"))
|
2018-03-20 21:17:35 +00:00
|
|
|
|
|
|
|
|
2018-03-20 04:11:18 +00:00
|
|
|
if False:
|
2020-01-19 16:11:18 +00:00
|
|
|
data_files = {}
|
|
|
|
for dest, src, masks in [
|
|
|
|
["share/doc/r0c/help", "docs", [".md", ".rst"]],
|
|
|
|
["share/doc/r0c/clients", "clients", [""]],
|
|
|
|
]:
|
|
|
|
|
|
|
|
files = []
|
|
|
|
src = here + "/" + src
|
|
|
|
for (dirpath, dirnames, filenames) in os.walk(src):
|
|
|
|
dirnames.sort()
|
|
|
|
for fn in sorted(filenames):
|
|
|
|
for mask in masks:
|
|
|
|
if fn.endswith(mask):
|
|
|
|
files.append(fn)
|
|
|
|
break
|
|
|
|
|
|
|
|
data_files[dest] = files
|
2018-03-20 04:11:18 +00:00
|
|
|
|
|
|
|
|
|
|
|
args = {
|
2020-01-19 16:11:18 +00:00
|
|
|
"name": NAME,
|
|
|
|
"version": about["__version__"],
|
|
|
|
"description": "retr0chat telnet/vt100 chat server",
|
|
|
|
"long_description": LONG_DESCRIPTION,
|
|
|
|
"long_description_content_type": LDCT,
|
|
|
|
"author": "ed",
|
|
|
|
"author_email": "r0c@ocv.me",
|
|
|
|
"url": "https://github.com/9001/r0c",
|
|
|
|
"license": "MIT",
|
|
|
|
"data_files": data_files,
|
|
|
|
"classifiers": [
|
|
|
|
"Development Status :: 5 - Production/Stable",
|
|
|
|
"License :: OSI Approved :: MIT License",
|
|
|
|
"Programming Language :: Python",
|
|
|
|
"Programming Language :: Python :: 2",
|
|
|
|
"Programming Language :: Python :: 2.6",
|
|
|
|
"Programming Language :: Python :: 2.7",
|
|
|
|
"Programming Language :: Python :: 3",
|
|
|
|
"Programming Language :: Python :: 3.0",
|
|
|
|
"Programming Language :: Python :: 3.1",
|
|
|
|
"Programming Language :: Python :: 3.2",
|
|
|
|
"Programming Language :: Python :: 3.3",
|
|
|
|
"Programming Language :: Python :: 3.4",
|
|
|
|
"Programming Language :: Python :: 3.5",
|
|
|
|
"Programming Language :: Python :: 3.6",
|
|
|
|
"Programming Language :: Python :: 3.7",
|
|
|
|
"Programming Language :: Python :: Implementation :: CPython",
|
|
|
|
"Programming Language :: Python :: Implementation :: PyPy",
|
|
|
|
"Environment :: Console",
|
|
|
|
"Topic :: Communications :: Chat",
|
|
|
|
],
|
|
|
|
"cmdclass": {"rstconv": rstconv, "clean2": clean2},
|
2018-03-20 04:11:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if setuptools_available:
|
2020-01-19 16:11:18 +00:00
|
|
|
args.update(
|
|
|
|
{
|
|
|
|
"install_requires": [],
|
|
|
|
"include_package_data": True,
|
|
|
|
"packages": ["r0c"],
|
|
|
|
"entry_points": {"console_scripts": ["r0c = r0c.__main__:main"]},
|
|
|
|
}
|
|
|
|
)
|
2018-03-20 04:11:18 +00:00
|
|
|
else:
|
2020-01-19 16:11:18 +00:00
|
|
|
args.update({"packages": ["r0c"], "scripts": ["bin/r0c"]})
|
2018-03-20 04:11:18 +00:00
|
|
|
|
|
|
|
|
2020-01-19 16:11:18 +00:00
|
|
|
# import pprint
|
|
|
|
# pprint.PrettyPrinter().pprint(args)
|
|
|
|
# sys.exit(0)
|
2018-03-20 04:11:18 +00:00
|
|
|
|
|
|
|
setup(**args)
|