You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by kl...@apache.org on 2017/10/05 13:30:47 UTC
mesos git commit: Added helper functions for linters using a virtual
environment.
Repository: mesos
Updated Branches:
refs/heads/master 657a930e1 -> b1570606a
Added helper functions for linters using a virtual environment.
This is used by the Python linter and
will be used by the Javascript linter.
Review: https://reviews.apache.org/r/62333/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/b1570606
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/b1570606
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/b1570606
Branch: refs/heads/master
Commit: b1570606acbea3d78850c57d622fb552ef695499
Parents: 657a930
Author: Armand Grillet <ag...@mesosphere.io>
Authored: Thu Oct 5 15:24:07 2017 +0200
Committer: Kevin Klues <kl...@gmail.com>
Committed: Thu Oct 5 15:30:21 2017 +0200
----------------------------------------------------------------------
support/mesos-style.py | 110 +++++++++++++++++++++++++-------------------
1 file changed, 62 insertions(+), 48 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/b1570606/support/mesos-style.py
----------------------------------------------------------------------
diff --git a/support/mesos-style.py b/support/mesos-style.py
index 9cd1623..bab7f5e 100755
--- a/support/mesos-style.py
+++ b/support/mesos-style.py
@@ -153,7 +153,63 @@ class LinterBase(object):
return error_count
- def main(self, file_list):
+ def should_build_virtualenv(self, modified_files):
+ """
+ Check if we should build the virtual environment required.
+ This is the case if the requirements of the environment
+ have changed or if the support script is run with no
+ arguments (meaning that the entire codebase should be linted).
+ """
+ work_dir = os.path.abspath(self.source_dirs[0])
+
+ if not os.path.isdir(os.path.join(work_dir, '.virtualenv')):
+ print 'Virtualenv not detected... building'
+ return True
+
+ # NOTE: If the file list is empty, we are linting the entire
+ # codebase. We should always rebuild the virtualenv in this case.
+ if len(modified_files) <= 0:
+ return True
+
+ basenames = []
+ if modified_files:
+ basenames = [os.path.basename(path) for path in modified_files]
+
+ if 'pip-requirements.txt' in basenames:
+ print 'The "pip-requirements.txt" file has changed.'
+ return True
+
+ # This is only useful for the Python linter.
+ if 'mesos.bash_completion' in basenames:
+ print 'The "mesos.bash_completion" file has changed.'
+ return True
+
+ return False
+
+ def build_virtualenv(self):
+ """
+ Rebuild the virtualenv by running a bootstrap script.
+ This will exit the program if there is a failure.
+ """
+ work_dir = os.path.abspath(self.source_dirs[0])
+
+ print 'Rebuilding virtualenv...'
+
+ process = subprocess.Popen(
+ [os.path.join(work_dir, 'bootstrap')],
+ stdout=subprocess.PIPE)
+
+ output = ''
+ for line in process.stdout:
+ output += line
+
+ process.wait()
+
+ if process.returncode != 0:
+ sys.stderr.write(output)
+ sys.exit(1)
+
+ def main(self, modified_files):
"""
This function takes a list of files and lints them for the
class of files defined by 'linter_type'.
@@ -176,7 +232,7 @@ class LinterBase(object):
# If file paths are specified, check all file paths that are
# candidates; else check all candidates.
- file_paths = file_list if len(file_list) > 0 else candidates
+ file_paths = modified_files if len(modified_files) > 0 else candidates
# Compute the set intersect of the input file paths and candidates.
# This represents the reduced set of candidates to run lint on.
@@ -336,54 +392,12 @@ class PyLinter(LinterBase):
return num_errors
- def __should_build_virtualenv(self, file_list):
- if not os.path.isdir(self.config['virtualenv_dir']):
- print 'Virtualenv for python linter not detected ... building'
- return True
-
- basenames = []
- if file_list:
- basenames = [os.path.basename(path) for path in file_list]
-
- if 'pip-requirements.txt' in basenames:
- print 'The "pip-requirements.txt" file has changed.'
- return True
-
- if 'mesos.bash_completion' in basenames:
- print 'The "mesos.bash_completion" file has changed.'
- return True
-
- # NOTE: If the file list is empty, we are linting the entire codebase.
- # We should always rebuild the virtualenv in this case.
- if len(file_list) <= 0:
- return True
-
- return False
-
- def __build_virtualenv(self):
- """Rebuild the virtualenv."""
- print 'Rebuilding virtualenv ...'
-
- process = subprocess.Popen(
- [os.path.join(self.config['bootstrap_dir'], 'bootstrap')],
- stdout=subprocess.PIPE)
-
- output = ''
- for line in process.stdout:
- output += line
-
- process.wait()
-
- if process.returncode != 0:
- sys.stderr.write(output)
- sys.exit(1)
-
- def main(self, file_list):
+ def main(self, modified_files):
"""Override main to rebuild our virtualenv if necessary."""
- if self.__should_build_virtualenv(file_list):
- self.__build_virtualenv()
+ if self.should_build_virtualenv(modified_files):
+ self.build_virtualenv()
- return super(PyLinter, self).main(file_list)
+ return super(PyLinter, self).main(modified_files)
if __name__ == '__main__':