Put command execution related logic into a class so that we can have a mock command executer, for testing/dry-run purposes. De-coupled command execution and logging.

PRESUBMIT=passed
R=asharif
DELTA=425  (217 added, 130 deleted, 78 changed)
OCL=45487-p2
RCL=45495-p2
RDATE=2010/11/29 16:15:34


P4 change: 42606657
diff --git a/v14/setup_chromeos.py b/v14/setup_chromeos.py
index 4f8f3ac..b144607 100755
--- a/v14/setup_chromeos.py
+++ b/v14/setup_chromeos.py
@@ -13,7 +13,7 @@
 import optparse
 import os
 import sys
-from utils import utils
+from utils import command_executer
 
 GCLIENT_FILE = """solutions = [
   { "name"        : "CHROME_DEPS",
@@ -30,9 +30,7 @@
 """
 
 # Common initializations
-(rootdir, basename) = utils.GetRoot(sys.argv[0])
-utils.InitLogger(rootdir, basename)
-
+cmd_executer = command_executer.GetCommandExecuter()
 
 GIT_TAGS_CMD = ("git ls-remote --tags "
                 "ssh://git@gitrw.chromium.org:9222/chromiumos-overlay.git | "
@@ -52,7 +50,7 @@
 
 
 def GetTags():
-  res = utils.RunCommand(GIT_TAGS_CMD, True)
+  res = cmd_executer.RunCommand(GIT_TAGS_CMD, True)
   return res[1].strip().split("\n")
 
 
@@ -80,6 +78,9 @@
                     help="""ChromeOS version. Can be: (1) A release version
 in the format: 'X.X.X.X' (2) 'latest' for the latest release version or (3)
 'top' for top of trunk. Default is 'latest'""")
+  parser.add_option("--minilayout", dest="minilayout", default=False,
+                    help="""Whether to checkout the minilayout 
+(smaller checkout).'""")
 
   options = parser.parse_args()[0]
 
@@ -115,36 +116,41 @@
   # If we check them out outside, we can't do some things, like build tests.
   checkout_chrome_outside_chroot = False
 
+  minilayout = ""
+  if options.minilayout == True:
+    minilayout = " -m minilayout.xml"
   commands = []
   commands.append("mkdir -p " + directory)
   commands.append("cd " + directory)
   commands.append("repo init -u "
                   "ssh://git@gitrw.chromium.org:9222/manifest-internal -b "
-                  + branch)
+                  + branch + minilayout)
   commands.append("repo sync -j10")
   if branch != "master":
     commands.append("repo forall -c 'git checkout -f -b %s %s'"
                     % (branch, version))
-  utils.RunCommands(commands)
+  cmd_executer.RunCommands(commands)
 
   commands = []
   commands.append("cd " + directory + "/src/scripts")
   commands.append("./get_svn_repos.sh")
-  utils.RunCommands(commands)
+  cmd_executer.RunCommands(commands)
 
   # Setup svn credentials for use inside the chroot
-  utils.RunCommand("svn ls --config-option config:auth:password-stores= "
-                   "--config-option "
-                   "servers:global:store-plaintext-passwords=yes "
-                   "--username $USER@google.com "
-                   "svn://svn.chromium.org/leapfrog-internal "
-                   "svn://svn.chromium.org/chrome "
-                   "svn://svn.chromium.org/chrome-internal > /dev/null")
+  cmd_executer.RunCommand("svn ls --config-option config:auth:password-stores= "
+                          "--config-option "
+                          "servers:global:store-plaintext-passwords=yes "
+                          "--username $USER@google.com "
+                          "svn://svn.chromium.org/leapfrog-internal "
+                          "svn://svn.chromium.org/chrome "
+                          "svn://svn.chromium.org/chrome-internal > /dev/null")
 
   if checkout_chrome_outside_chroot:
     # Find Chrome browser version
-    chrome_version = utils.RunCommand("%s/src/scripts/chromeos_version.sh | "
-                                      "grep CHROME_BUILD" % directory, True)
+    chrome_version = cmd_executer.RunCommand("%s/src/scripts/"
+                                             "chromeos_version.sh | "
+                                             "grep CHROME_BUILD"
+                                             % directory, True)
 
     chrome_version = chrome_version[1].strip().split("=")
     if len(chrome_version) == 2:
@@ -153,7 +159,7 @@
       chrome_version = ""
 
     # Checkout chrome
-    utils.RunCommand("mkdir -p %s/chrome_browser/" % directory)
+    cmd_executer.RunCommand("mkdir -p %s/chrome_browser/" % directory)
     gclient_file = GCLIENT_FILE % chrome_version
     StoreFile(os.path.expanduser("%s/chrome_browser/.gclient"
                                  % directory), gclient_file)
@@ -161,7 +167,7 @@
     commands.append("cd " + options.directory)
     commands.append("cd chrome_browser")
     commands.append("gclient sync -v --nohooks --delete_unversioned_trees")
-    utils.RunCommands(commands)
+    cmd_executer.RunCommands(commands)
 
   print "Done"