Bug 1377049 - Add a pre-push and pre-commit mozlint hooks draft
authorAndrew Halberstadt <ahalberstadt@mozilla.com>
Wed, 28 Jun 2017 10:23:23 -0700
changeset 601766 9bf9362574a1ce8963eb8e5734de396b2c531d2c
parent 601713 9af23c413a1f8d337b19b4f8450e241e91b71136
child 635389 b642de19b1ca239dbdf24f56094480dffa600408
push id66202
push userahalberstadt@mozilla.com
push dateThu, 29 Jun 2017 05:03:03 +0000
bugs1377049
milestone56.0a1
Bug 1377049 - Add a pre-push and pre-commit mozlint hooks This adds pre-push and pre-commit hooks for both hg and git. All four possibilities are implemented in the same file. To enable a pre-push hg hook, add the following to hgrc: [hooks] pre-push.lint = python:/path/to/gecko/tools/lint/hooks.py:hg To enable a pre-commit hg hook, add the following to hgrc: [hooks] pretxncommit.lint = python:/path/to/gecko/tools/lint/hooks.py:hg To enable a pre-push git hook, run the following command: $ ln -s /path/to/gecko/tools/lint/hooks.py .git/hooks/pre-push To enable a pre-commit git hook, run the following command: $ ln -s /path/to/gecko/tools/lint/hooks.py .git/hooks/pre-commit MozReview-Commit-ID: DUxCKN2fiag
tools/lint/hooks.py
new file mode 100644
--- /dev/null
+++ b/tools/lint/hooks.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import os
+import subprocess
+import sys
+
+here = os.path.dirname(os.path.realpath(__file__))
+topsrcdir = os.path.join(here, os.pardir, os.pardir)
+
+
+def run_mozlint(hooktype, args):
+    cmd = [os.path.join(topsrcdir, 'mach'), 'lint']
+
+    if 'commit' in hooktype:
+        cmd.append('--workdir')
+    elif 'push' in hooktype:
+        cmd.append('--outgoing')
+        cmd.extend(args)
+    else:
+        return False
+
+    return subprocess.call(cmd)
+
+
+def hg(ui, repo, **kwargs):
+    hooktype = kwargs['hooktype']
+    return run_mozlint(hooktype, kwargs.get('pats', []))
+
+
+def git(args=sys.argv[1:]):
+    hooktype = os.path.basename(__file__)
+    return run_mozlint(hooktype, args[:1])
+
+
+if __name__ == '__main__':
+    sys.exit(git())