##// END OF EJS Templates
restore master behavior...
restore master behavior up arrow at the top line first goes to char 0, and only goes to the cell above if already on char 0. Same with down arrow on the bottom line: transition cursor to the end of the line, and only go down a cell if already at the end of the last line. this makes for an unhappy experience in code-mirror's vim mode for j and k keys, but we'll fix that in the next commit

File last commit:

r14903:3a071760
r15835:dc3c98b8
Show More
submodule.py
96 lines | 3.0 KiB | text/x-python | PythonLexer
MinRK
add utils.submodule
r10555 """utilities for checking submodule status"""
#-----------------------------------------------------------------------------
# Copyright (C) 2013 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
import os
import subprocess
import sys
#-----------------------------------------------------------------------------
# Globals
#-----------------------------------------------------------------------------
pjoin = os.path.join
#-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
def ipython_parent():
"""return IPython's parent (i.e. root if run from git)"""
from IPython.utils.path import get_ipython_package_dir
return os.path.abspath(os.path.dirname(get_ipython_package_dir()))
def ipython_submodules(root):
"""return IPython submodules relative to root"""
return [
MinRK
update references for IPython.html
r11035 pjoin(root, 'IPython', 'html', 'static', 'components'),
MinRK
add utils.submodule
r10555 ]
def is_repo(d):
"""is d a git repo?"""
return os.path.exists(pjoin(d, '.git'))
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"):
MinRK
skip submodule check in package managers...
r10683 # frozen via py2exe or similar, don't bother
return 'clean'
MinRK
add utils.submodule
r10555
if not root:
root = ipython_parent()
Thomas Kluyver
Make submodule checks work under Python 3....
r10815
if not is_repo(root):
# not in git, assume clean
return 'clean'
MinRK
add utils.submodule
r10555
submodules = ipython_submodules(root)
for submodule in submodules:
if not os.path.exists(submodule):
return 'missing'
MinRK
unicode sadness on Windows in the submodule check
r14697
# 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')
MinRK
add utils.submodule
r10555 # check with git submodule status
proc = subprocess.Popen('git submodule status',
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True,
cwd=root,
)
status, _ = proc.communicate()
MinRK
unicode sadness on Windows in the submodule check
r14697 status = status.decode("ascii", "replace")
MinRK
add utils.submodule
r10555
for line in status.splitlines():
MinRK
fix line/statys typo in utils.submodule
r14903 if line.startswith('-'):
MinRK
add utils.submodule
r10555 return 'missing'
MinRK
fix line/statys typo in utils.submodule
r14903 elif line.startswith('+'):
MinRK
add utils.submodule
r10555 return 'unclean'
return 'clean'
def update_submodules(repo_dir):
"""update submodules in a repo"""
MinRK
use check_call in update_submodules
r10583 subprocess.check_call("git submodule init", cwd=repo_dir, shell=True)
subprocess.check_call("git submodule update --recursive", cwd=repo_dir, shell=True)
MinRK
add utils.submodule
r10555