91 lines
2.7 KiB
Python
91 lines
2.7 KiB
Python
import json
|
|
import os
|
|
import subprocess
|
|
|
|
from setuptools import Command
|
|
from setuptools.command.bdist_egg import bdist_egg
|
|
from setuptools.command.sdist import sdist as base_sdist
|
|
|
|
from wagtail import __semver__
|
|
|
|
|
|
class assets_mixin:
|
|
def compile_assets(self):
|
|
try:
|
|
subprocess.check_call(["npm", "run", "build"])
|
|
except (OSError, subprocess.CalledProcessError) as e:
|
|
print("Error compiling assets: " + str(e)) # noqa: T201
|
|
raise SystemExit(1)
|
|
|
|
def publish_assets(self):
|
|
try:
|
|
subprocess.check_call(["npm", "publish", "client"])
|
|
except (OSError, subprocess.CalledProcessError) as e:
|
|
print("Error publishing front-end assets: " + str(e)) # noqa: T201
|
|
raise SystemExit(1)
|
|
|
|
def bump_client_version(self):
|
|
"""
|
|
Writes the current Wagtail version number into package.json
|
|
"""
|
|
path = os.path.join(".", "client", "package.json")
|
|
input_file = open(path)
|
|
|
|
try:
|
|
package = json.loads(input_file.read().decode("utf-8"))
|
|
except ValueError as e:
|
|
print("Unable to read " + path + " " + e) # noqa: T201
|
|
raise SystemExit(1)
|
|
|
|
package["version"] = __semver__
|
|
|
|
try:
|
|
with open(path, "w", encoding="utf-8") as f:
|
|
f.write(str(json.dumps(package, indent=2, ensure_ascii=False)))
|
|
except OSError as e:
|
|
print( # noqa: T201
|
|
"Error setting the version for front-end assets: " + str(e)
|
|
)
|
|
raise SystemExit(1)
|
|
|
|
|
|
class assets(Command, assets_mixin):
|
|
user_options = []
|
|
|
|
def initialize_options(self):
|
|
pass
|
|
|
|
def finalize_options(self):
|
|
pass
|
|
|
|
def run(self):
|
|
self.bump_client_version()
|
|
self.compile_assets()
|
|
self.publish_assets()
|
|
|
|
|
|
class sdist(base_sdist, assets_mixin):
|
|
def run(self):
|
|
self.compile_assets()
|
|
base_sdist.run(self)
|
|
|
|
|
|
class check_bdist_egg(bdist_egg):
|
|
# If this file does not exist, warn the user to compile the assets
|
|
sentinel_dir = "wagtail/wagtailadmin/static/"
|
|
|
|
def run(self):
|
|
bdist_egg.run(self)
|
|
if not os.path.isdir(self.sentinel_dir):
|
|
print( # noqa: T201
|
|
"\n".join(
|
|
[
|
|
"************************************************************",
|
|
"The front end assets for Wagtail are missing.",
|
|
"To generate the assets, please refer to the documentation in",
|
|
"docs/contributing/developing.md",
|
|
"************************************************************",
|
|
]
|
|
)
|
|
)
|