aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/command_base.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/servo/command_base.py')
-rw-r--r--python/servo/command_base.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/python/servo/command_base.py b/python/servo/command_base.py
index 185b716165d..80811e30a04 100644
--- a/python/servo/command_base.py
+++ b/python/servo/command_base.py
@@ -121,6 +121,44 @@ class CommandBase(object):
self._cargo_build_id = open(filename).read().strip()
return self._cargo_build_id
+ def get_binary_path(self, release, dev):
+ base_path = path.join("components", "servo", "target")
+ release_path = path.join(base_path, "release", "servo")
+ dev_path = path.join(base_path, "debug", "servo")
+
+ # Prefer release if both given
+ if release and dev:
+ dev = False
+
+ release_exists = path.exists(release_path)
+ dev_exists = path.exists(dev_path)
+
+ if not release_exists and not dev_exists:
+ print("No Servo binary found. Please run './mach build' and try again.")
+ sys.exit()
+
+ if release and release_exists:
+ return release_path
+
+ if dev and dev_exists:
+ return dev_path
+
+ if not dev and not release and release_exists and dev_exists:
+ print("You have multiple profiles built. Please specify which "
+ "one to run with '--release' or '--dev'.")
+ sys.exit()
+
+ if not dev and not release:
+ if release_exists:
+ return release_path
+ else:
+ return dev_path
+
+ print("The %s profile is not built. Please run './mach build%s' "
+ "and try again." % ("release" if release else "dev",
+ " --release" if release else ""))
+ sys.exit()
+
def build_env(self, gonk=False, hosts_file_path=None):
"""Return an extended environment dictionary."""
env = os.environ.copy()