Browse Source

Update commands for new schemas structure

Steven Silvester 7 years ago
parent
commit
483776ceb0
1 changed files with 29 additions and 17 deletions
  1. 29 17
      jupyterlab/commands.py

+ 29 - 17
jupyterlab/commands.py

@@ -169,7 +169,7 @@ def install_extension_async(extension, app_dir=None, logger=None, abort_callback
     # Handle any schemas.
     schemaDir = data['jupyterlab'].get('schemaDir', None)
     if schemaDir:
-        dest = pjoin(app_dir, 'schemas')
+        dest = pjoin(app_dir, 'schemas', data['name'].replace('/', os.sep))
         _copy_tar_files(pjoin(target, fname), schemaDir, dest)
 
     # Handle a theme.
@@ -552,6 +552,7 @@ def build_async(app_dir=None, name=None, version=None, logger=None, abort_callba
         raise ValueError('Cannot build extensions in the core app')
 
     _ensure_package(app_dir, name=name, version=version, logger=logger)
+    return
     staging = pjoin(app_dir, 'staging')
 
     extensions = _get_extensions(app_dir)
@@ -827,22 +828,33 @@ def _ensure_package(app_dir, logger=None, name=None, version=None):
     with open(pkg_path, 'w') as fid:
         json.dump(data, fid, indent=4)
 
-    # Copy any missing or outdated schema or theme items.
-    for item in ['schemas', 'themes']:
-        local = pjoin(here, item)
-        if not os.path.exists(local):
-            os.makedirs(local)
-
-        for item_path in os.listdir(local):
-            src = pjoin(local, item_path)
-            dest = pjoin(app_dir, item, item_path)
-            if version_updated or not os.path.exists(dest):
-                if os.path.isdir(src):
-                    if os.path.exists(dest):
-                        shutil.rmtree(dest)
-                    shutil.copytree(src, dest)
-                else:
-                    shutil.copy(src, dest)
+    # Copy any missing or outdated schema items.
+    local = pjoin(here, 'schemas')
+    if not os.path.exists(local):
+        os.makedirs(local)
+
+    for name in data['jupyterlab']['extensions']:
+        src = pjoin(local, name.replace('/', os.sep))
+        if not os.path.exists(src):
+            continue
+        dest = pjoin(local, name.replace('/', os.sep))
+        if version_updated or not os.path.exists(dest):
+            if os.path.exists(dest):
+                shutil.rmtree(dest)
+            shutil.copytree(src, dest)
+
+    # Copy any missing or outdated theme items.
+    local = pjoin(here, 'themes')
+    if not os.path.exists(local):
+        os.makedirs(local)
+
+    for item_path in os.listdir(local):
+        src = pjoin(local, item_path)
+        dest = pjoin(app_dir, 'themes', item_path)
+        if version_updated or not os.path.exists(dest):
+            if os.path.exists(dest):
+                shutil.rmtree(dest)
+            shutil.copytree(src, dest)
 
 
 def _ensure_app_dirs(app_dir, logger):