Bug 1460402 - Create a new class to manage pip install r?ahal draft
authorSylvestre Ledru <sledru@mozilla.com>
Thu, 10 May 2018 19:05:30 +0200
changeset 794009 c3ff29fc5dfb4dc1b867f7bdf66b511e939f8d79
parent 793895 aabfe960ab59fea2e85896b1f8050786e16ab23b
child 794010 d1523f128f639284a8f4be34b78285929d7fed92
push id109563
push userbmo:sledru@mozilla.com
push dateFri, 11 May 2018 08:19:13 +0000
reviewersahal
bugs1460402
milestone62.0a1
Bug 1460402 - Create a new class to manage pip install r?ahal MozReview-Commit-ID: JnscCmC4gBt
python/mozlint/mozlint/util/__init__.py
python/mozlint/mozlint/util/pip.py
new file mode 100644
new file mode 100644
--- /dev/null
+++ b/python/mozlint/mozlint/util/pip.py
@@ -0,0 +1,34 @@
+# 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/.
+
+from __future__ import print_function
+from __future__ import absolute_import
+
+import subprocess
+
+
+def _run_pip(*args):
+    """
+    Helper function that runs pip with subprocess
+    """
+    try:
+        subprocess.check_output(['pip'] + list(args),
+                                stderr=subprocess.STDOUT)
+        return True
+    except subprocess.CalledProcessError as e:
+        print(e.output)
+        return False
+
+
+def reinstall_program(REQ_PATH):
+    """
+    Try to install flake8 at the target version, returns True on success
+    otherwise prints the otuput of the pip command and returns False
+    """
+    if _run_pip('install', '-U',
+                '--require-hashes', '-r',
+                REQ_PATH):
+        return True
+
+    return False