Files
novelWriter/setup.py
T
2020-08-09 20:37:48 +02:00

164 lines
4.4 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import sys
import shutil
import subprocess
import setuptools
from nw import __version__, __url__, __docurl__, __issuesurl__, __sourceurl__
##
# Build the Package
##
buildDocs = False
buildSample = False
if "qthelp" in sys.argv:
buildDocs = True
sys.argv.remove("qthelp")
if "sample" in sys.argv:
buildSample = True
sys.argv.remove("sample")
##
# Qt Assistant Documentation
##
if buildDocs:
buildDir = os.path.join("docs", "build", "qthelp")
helpDir = os.path.join("nw", "assets", "help")
inFile = "novelWriter.qhcp"
outFile = "novelWriter.qhc"
datFile = "novelWriter.qch"
print("")
print("Building Documentation")
print("======================")
print("")
buildFail = False
try:
subprocess.call(["make","-C", "docs", "qthelp"])
except Exception as e:
print("Failed with error:")
print(str(e))
buildFail = True
try:
subprocess.call(["qhelpgenerator", os.path.join(buildDir, inFile)])
except Exception as e:
print("Failed with error:")
print(str(e))
buildFail = True
if not os.path.isdir(helpDir):
try:
os.mkdir(helpDir)
except Exception as e:
print("Failed with error:")
print(str(e))
buildFail = True
try:
if os.path.isfile(os.path.join(helpDir, outFile)):
os.unlink(os.path.join(helpDir, outFile))
if os.path.isfile(os.path.join(helpDir, datFile)):
os.unlink(os.path.join(helpDir, datFile))
os.rename(os.path.join(buildDir, outFile), os.path.join(helpDir, outFile))
os.rename(os.path.join(buildDir, datFile), os.path.join(helpDir, datFile))
except Exception as e:
print("Failed with error:")
print(str(e))
buildFail = True
print("")
if buildFail:
print("Documentation build: FAILED")
else:
print("Documentation build: OK")
print("")
##
# Sample Project ZIP file
##
if buildSample:
srcSample = "sample"
dstSample = os.path.join("nw", "assets", "sample.zip")
if os.path.isdir(srcSample):
if os.path.isfile(dstSample):
os.unlink(dstSample)
from zipfile import ZipFile
with ZipFile(dstSample, "w") as zipObj:
zipObj.write(os.path.join("sample", "nwProject.nwx"), "nwProject.nwx")
for docFile in os.listdir(os.path.join(srcSample, "content")):
srcDoc = os.path.join(srcSample, "content", docFile)
zipObj.write(srcDoc, "content/"+docFile)
else:
print("Error: Could not find sample project source directory.")
sys.exit(1)
if len(sys.argv) == 1:
# Nothing more to do
sys.exit(0)
##
# Build the Package
##
# Read content from files
with open("README.md", "r") as inFile:
longDescription = inFile.read()
with open("requirements.txt", "r") as inFile:
pkgRequirements = inFile.read().strip().splitlines()
setuptools.setup(
name = "novelWriter",
version = __version__,
author = "Veronica Berglyd Olsen",
author_email = "code@vkbo.net",
description = "A markdown-like document editor for writing novels",
long_description = longDescription,
long_description_content_type = "text/markdown",
license = "GNU General Public License v3",
url = __url__,
entry_points = {
"console_scripts" : ["novelWriter-cli=nw:main"],
"gui_scripts" : ["novelWriter=nw:main"],
},
packages = setuptools.find_packages(exclude=["docs","tests","sample"]),
include_package_data = True,
package_data = {"": ["*.conf"]},
project_urls = {
"Bug Tracker": __issuesurl__,
"Documentation": __docurl__,
"Source Code": __sourceurl__,
},
classifiers = [
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: Implementation :: CPython",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Development Status :: 4 - Beta",
"Operating System :: OS Independent",
"Intended Audience :: End Users/Desktop",
"Natural Language :: English",
"Topic :: Text Editors",
],
python_requires = ">=3.6",
install_requires = pkgRequirements,
)