Merge pull request #78 from takluyver/rm-submodules-mod

Remove git submodule utility functions
Matthias Bussonnier 11 years ago
commit ef20b759bd

@ -75,7 +75,6 @@ from jupyter_client import KernelManager
from jupyter_client.kernelspec import KernelSpecManager, NoSuchKernel, NATIVE_KERNEL_NAME
from jupyter_client.session import Session
from nbformat.sign import NotebookNotary
from . import submodule
from traitlets import (
Dict, Unicode, Integer, List, Bool, Bytes, Instance,
TraitError, Type,
@ -970,13 +969,8 @@ class NotebookApp(JupyterApp):
def init_components(self):
"""Check the components submodule, and warn if it's unclean"""
status = submodule.check_submodule_status()
if status == 'missing':
self.log.warn("components submodule missing, running `git submodule update`")
submodule.update_submodules(submodule.repo_parent())
elif status == 'unclean':
self.log.warn("components submodule unclean, you may see 404s on static/components")
self.log.warn("run `setup.py submodule` or `git submodule update` to update")
# TODO: this should still check, but now we use bower, not git submodule
pass
def init_kernel_specs(self):
"""Check that the IPython kernel is present, if available"""

@ -1,90 +0,0 @@
"""utilities for checking submodule status"""
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.
import os
import subprocess
import sys
pjoin = os.path.join
def repo_parent():
"""return IPython's parent (i.e. root if run from git)"""
import jupyter_notebook
return os.path.abspath(os.path.dirname(jupyter_notebook.__file__))
def submodule_path(root):
"""return submodule path relative to root"""
return [
pjoin(root, 'jupyter_notebook', 'static', 'components'),
]
def is_repo(d):
"""is d a git repo?"""
if not os.path.exists(pjoin(d, '.git')):
return False
proc = subprocess.Popen('git status',
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True,
cwd=d,
)
status, _ = proc.communicate()
return status == 0
def check_submodule_status(root=None):
"""check submodule status
Has three return values:
'missing' - submodules are absent
'unclean' - submodules have unstaged changes
'clean' - all submodules are up to date
"""
if hasattr(sys, "frozen"):
# frozen via py2exe or similar, don't bother
return 'clean'
if not root:
root = repo_parent()
if not is_repo(root):
# not in git, assume clean
return 'clean'
submodules = submodule_path(root)
for submodule in submodules:
if not os.path.exists(submodule):
return 'missing'
# Popen can't handle unicode cwd on Windows Python 2
if sys.platform == 'win32' and sys.version_info[0] < 3 \
and not isinstance(root, bytes):
root = root.encode(sys.getfilesystemencoding() or 'ascii')
# check with git submodule status
proc = subprocess.Popen('git submodule status',
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True,
cwd=root,
)
status, _ = proc.communicate()
status = status.decode("ascii", "replace")
for line in status.splitlines():
if line.startswith('-'):
return 'missing'
elif line.startswith('+'):
return 'unclean'
return 'clean'
def update_submodules(repo_dir):
"""update submodules in a repo"""
subprocess.check_call("git submodule init", cwd=repo_dir, shell=True)
subprocess.check_call("git submodule update --recursive", cwd=repo_dir, shell=True)
Loading…
Cancel
Save