mirror of
https://github.com/zulip/zulip.git
synced 2025-11-07 23:43:43 +00:00
South doesn't properly deal with removing the Django User model, so this commit redoes our South history to instead start after that migration has already been applied. This allows us to get rid of some annoying hacks. Note that developers and staging will need to run ./manage.py migrate --delete-ghost-migrations zephyr in order to clear out the old versions of the migrations. (imported from commit 7f45ea601b809dde33720f76e7dfb0ab348b0e65)
93 lines
2.3 KiB
Python
Executable File
93 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python
|
|
import os
|
|
import re
|
|
import sys
|
|
import optparse
|
|
import subprocess
|
|
|
|
from os import path
|
|
from collections import defaultdict
|
|
|
|
from humbug_tools import check_output
|
|
|
|
parser = optparse.OptionParser()
|
|
parser.add_option('--full',
|
|
action='store_true',
|
|
help='Check some things we typically ignore')
|
|
(options, args) = parser.parse_args()
|
|
|
|
os.chdir(path.join(path.dirname(__file__), '..'))
|
|
|
|
|
|
# Exclude some directories and files from lint checking
|
|
|
|
exclude_trees = """
|
|
zephyr/static/third
|
|
confirmation
|
|
zephyr/tests/frontend/casperjs
|
|
zephyr/migrations
|
|
node_modules
|
|
""".split()
|
|
|
|
exclude_files = """
|
|
humbug/test_settings.py
|
|
tools/jslint/jslint.js
|
|
""".split()
|
|
|
|
|
|
# Categorize by language all files known to Git
|
|
|
|
git_files = map(str.strip, check_output(['git', 'ls-files']).split('\n'))
|
|
by_lang = defaultdict(list)
|
|
|
|
for filepath in git_files:
|
|
if (not filepath or not path.isfile(filepath)
|
|
or (filepath in exclude_files)
|
|
or any(filepath.startswith(d+'/') for d in exclude_trees)):
|
|
continue
|
|
|
|
_, exn = path.splitext(filepath)
|
|
if not exn:
|
|
# No extension; look at the first line
|
|
with file(filepath) as f:
|
|
if re.match(r'^#!.*\bpython', f.readline()):
|
|
exn = '.py'
|
|
|
|
by_lang[exn].append(filepath)
|
|
|
|
|
|
# Invoke the appropriate lint checker for each language
|
|
|
|
try:
|
|
failed = False
|
|
|
|
# Make the lint output bright red
|
|
sys.stdout.write('\x1B[1;31m')
|
|
sys.stdout.flush()
|
|
|
|
try:
|
|
subprocess.check_call(['tools/node', 'tools/jslint/check-all.js']
|
|
+ by_lang['.js'])
|
|
except subprocess.CalledProcessError:
|
|
failed = True
|
|
|
|
pyflakes = subprocess.Popen(['pyflakes'] + by_lang['.py'],
|
|
stdout = subprocess.PIPE,
|
|
stderr = subprocess.PIPE)
|
|
|
|
# pyflakes writes some output (like syntax errors) to stderr. :/
|
|
for pipe in (pyflakes.stdout, pyflakes.stderr):
|
|
for ln in pipe:
|
|
if options.full or not \
|
|
('imported but unused' in ln or
|
|
("zephyr_mirror_backend.py:" in ln and
|
|
"redefinition of unused 'simplejson' from line" in ln)):
|
|
sys.stdout.write(ln)
|
|
failed = True
|
|
|
|
sys.exit(1 if failed else 0)
|
|
|
|
finally:
|
|
# Restore normal terminal colors
|
|
sys.stdout.write('\x1B[0m')
|