diff --git a/docs/contributing.rst b/docs/contributing.rst index a151f7a0d..971e6ca05 100644 --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -94,9 +94,11 @@ To release a new version of the theme, core team will take the following steps: (with regards to alpha release and development versions). The version increment should reflect these releases and any potentially breaking changes. #. Update the changelog (``docs/changelog.rst``) with the version information. -#. Run ``npm run build`` to rebuild all the theme assets. -#. Run ``python setup.py update_translations`` to compile new translation files and update Transifex -#. Commit that change. +#. Run ``python setup.py update_translations`` to compile new translation files + and update Transifex. +#. Run ``python setup.py build`` to rebuild all the theme assets and the Python + package. +#. Commit these changes. #. Tag the release in git: ``git tag $NEW_VERSION``. #. Push the tag to GitHub: ``git push --tags origin``. #. Upload the package to PyPI: diff --git a/setup.py b/setup.py index c937eacd1..dd6a1494b 100644 --- a/setup.py +++ b/setup.py @@ -5,12 +5,43 @@ """ +import os import subprocess import distutils.cmd +import setuptools.command.build_py from io import open from setuptools import setup +class WebpackBuildCommand(setuptools.command.build_py.build_py): + + """Prefix Python build with Webpack asset build""" + + def run(self): + if not 'CI' in os.environ: + subprocess.run(['node_modules/.bin/webpack', '--config', 'webpack.prod.js'], check=True) + setuptools.command.build_py.build_py.run(self) + + +class WebpackDevelopCommand(distutils.cmd.Command): + + description = "Run Webpack dev server" + + user_options = [] + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def run(self): + subprocess.run( + ["node_modules/.bin/webpack-dev-server", "--open", "--config", "webpack.dev.js"], + check=True + ) + + class UpdateTranslationsCommand(distutils.cmd.Command): description = "Run all localization commands" @@ -47,8 +78,8 @@ def finalize_options(self): pass def run(self): - subprocess.run(['tx', 'push', '--source']) - subprocess.run(['tx', 'pull']) + subprocess.run(['tx', 'push', '--source'], check=True) + subprocess.run(['tx', 'pull'], check=True) setup( @@ -63,6 +94,8 @@ def run(self): cmdclass={ 'update_translations': UpdateTranslationsCommand, 'transifex': TransifexCommand, + 'build_py': WebpackBuildCommand, + 'watch': WebpackDevelopCommand, }, zip_safe=False, packages=['sphinx_rtd_theme'],