1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/usr/bin/env python
- from __future__ import absolute_import
- import os
- import sys
- from glob import glob
- from subprocess import Popen
- from sentry.lint.engine import check_files, get_js_files
- text_type = type(u'')
- # git usurbs your bin path for hooks and will always run system python
- if 'VIRTUAL_ENV' in os.environ:
- site_packages = glob(
- '%s/lib/*/site-packages' % os.environ['VIRTUAL_ENV'])[0]
- sys.path.insert(0, site_packages)
- def js_format(file_list=None):
- """
- We only format JavaScript code as part of this pre-commit hook. It is not part
- of the lint engine.
- """
- project_root = os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)
- prettier_path = os.path.join(project_root, 'node_modules', '.bin', 'prettier')
- if not os.path.exists(prettier_path):
- from click import echo
- echo('!! Skipping JavaScript formatting because prettier is not installed.')
- return False
- js_file_list = get_js_files(file_list)
- has_errors = False
- if file_list:
- status = Popen([prettier_path, '--write', '--single-quote', '--bracket-spacing=false', '--print-width=90']
- + js_file_list).wait()
- has_errors = status != 0
- return has_errors
- def main():
- from flake8.hooks import run
- gitcmd = "git diff-index --cached --name-only HEAD"
- _, files_modified, _ = run(gitcmd)
- files_modified = [
- text_type(f)
- for f in files_modified
- if os.path.exists(f)
- ]
- # Prettier formatting must take place before linting
- js_format(files_modified)
- return check_files(files_modified)
- if __name__ == '__main__':
- sys.exit(main())
|