Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1471)

Unified Diff: tools/cr/cr/commands/run.py

Issue 99483002: [cr tool] Adding the run command (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/cr/cr/commands/run.py
diff --git a/tools/cr/cr/commands/run.py b/tools/cr/cr/commands/run.py
new file mode 100644
index 0000000000000000000000000000000000000000..9b57d9439c3c6107edf6b7ff71a5e6b8a225d6d4
--- /dev/null
+++ b/tools/cr/cr/commands/run.py
@@ -0,0 +1,50 @@
+# Copyright 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""A module for the run command."""
+
+import cr
+
+
+class RunCommand(cr.Command):
+ """The implementation of the run command.
+
+ This first uses Builder to bring the target up to date.
+ It then uses Installer to install the target (if needed), and
+ finally it uses Runner to run the target.
+ You can use skip version to not perform any of these steps.
+ """
+
+ def __init__(self):
+ super(RunCommand, self).__init__()
+ self.help = 'Invoke a target'
+
+ def AddArguments(self, subparsers):
+ parser = super(RunCommand, self).AddArguments(subparsers)
+ cr.Builder.AddArguments(self, parser)
+ cr.Installer.AddArguments(self, parser)
+ cr.Runner.AddArguments(self, parser)
+ cr.Target.AddArguments(self, parser, allow_multiple=True)
+ self.ConsumeArgs(parser, 'the binary')
+ return parser
+
+ def Run(self, context):
+ targets = cr.Target.GetTargets(context)
+ test_targets = [target for target in targets if target.is_test]
bulach 2013/12/02 18:30:20 nit: I've seen some people prefer this for simple
+ run_targets = [target for target in targets if not target.is_test]
+ if cr.Installer.Skipping(context):
+ # No installer, only build test targets
+ build_targets = test_targets
+ else:
+ build_targets = targets
+ if build_targets:
+ cr.Builder.Build(context, build_targets, [])
+ # See if we can use restart when not installing
+ if cr.Installer.Skipping(context):
+ cr.Runner.Restart(context, targets, context.remains)
+ else:
+ cr.Runner.Kill(context, run_targets, [])
+ cr.Installer.Reinstall(context, run_targets, [])
+ cr.Runner.Invoke(context, targets, context.remains)
+
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698