瀏覽代碼

wip decouple python and npm commands

Steven Silvester 8 年之前
父節點
當前提交
fa617d64cd
共有 2 個文件被更改,包括 5 次插入85 次删除
  1. 4 7
      setup.py
  2. 1 78
      setupbase.py

+ 4 - 7
setup.py

@@ -43,9 +43,7 @@ from setuptools.command.bdist_egg import bdist_egg
 from setupbase import (
     bdist_egg_disabled,
     find_packages,
-    find_package_data,
-    js_prerelease,
-    NPM
+    find_package_data
 )
 
 # BEFORE importing distutils, remove MANIFEST. distutils doesn't properly
@@ -96,14 +94,13 @@ setup_args = dict(
 
 
 cmdclass = dict(
-    build_ext = js_prerelease(build_ext),
-    sdist  = js_prerelease(sdist, strict=True),
-    jsdeps = NPM,
+    build_ext = build_ext,
+    sdist  = sdist,
     bdist_egg = bdist_egg if 'bdist_egg' in sys.argv else bdist_egg_disabled,
 )
 try:
     from wheel.bdist_wheel import bdist_wheel
-    cmdclass['bdist_wheel'] = js_prerelease(bdist_wheel, strict=True)
+    cmdclass['bdist_wheel'] = bdist_wheel
 except ImportError:
     pass
 

+ 1 - 78
setupbase.py

@@ -14,7 +14,6 @@ import pipes
 import sys
 
 from distutils import log
-from distutils.cmd import Command
 from setuptools.command.bdist_egg import bdist_egg
 from subprocess import check_call
 
@@ -64,86 +63,10 @@ def find_package_data():
     Find package_data.
     """
     return {
-        'jupyterlab': ['build/*', 'lab.html', 'package.json', 'index.template.js', 'webpack.config.js']
+        'jupyterlab': ['static/*', 'lab.html', 'package.json', 'index.template.js', 'webpack.config.js']
     }
 
 
-def js_prerelease(command, strict=False):
-    """decorator for building minified js/css prior to another command"""
-    class DecoratedCommand(command):
-        def run(self):
-            jsdeps = self.distribution.get_command_obj('jsdeps')
-            if not is_repo and all(os.path.exists(t) for t in jsdeps.targets):
-                # sdist, nothing to do
-                command.run(self)
-                return
-
-            try:
-                self.distribution.run_command('jsdeps')
-            except Exception as e:
-                missing = [t for t in jsdeps.targets if not os.path.exists(t)]
-                if strict or missing:
-                    log.warn('rebuilding js and css failed')
-                    if missing:
-                        log.error('missing files: %s' % missing)
-                    raise e
-                else:
-                    log.warn('rebuilding js and css failed (not a problem)')
-                    log.warn(str(e))
-            command.run(self)
-    return DecoratedCommand
-
-
-def update_package_data(distribution):
-    """update build_py options to get package_data changes"""
-    build_py = distribution.get_command_obj('build_py')
-    build_py.finalize_options()
-
-
-class NPM(Command):
-    description = 'install package.json dependencies using npm'
-
-    user_options = []
-
-    # Representative files that should exist after a successful build
-    targets = [
-        os.path.join(here, 'jupyterlab', 'build', 'main.css'),
-        os.path.join(here, 'jupyterlab', 'build', 'main.bundle.js'),
-    ]
-
-    def initialize_options(self):
-        pass
-
-    def finalize_options(self):
-        pass
-
-    def has_npm(self):
-        try:
-            run(['npm', '--version'])
-            return True
-        except:
-            return False
-
-    def run(self):
-        has_npm = self.has_npm()
-        if not has_npm:
-            log.error("`npm` unavailable. If you're running this command using sudo, make sure `npm` is available to sudo")
-        log.info("Installing build dependencies with npm. This may take a while...")
-        main = os.path.join(here, 'jupyterlab')
-        run(['npm', 'install'], cwd=here)
-        run(['npm', 'run', 'build:main'], cwd=here)
-
-        for t in self.targets:
-            if not os.path.exists(t):
-                msg = 'Missing file: %s' % t
-                if not has_npm:
-                    msg += '\nnpm is required to build the development version'
-                raise ValueError(msg)
-
-        # update package data in case this created new files
-        update_package_data(self.distribution)
-
-
 class bdist_egg_disabled(bdist_egg):
     """Disabled version of bdist_egg
     Prevents setup.py install performing setuptools' default easy_install,