Index: trunk/src/tools/cr/main.py |
=================================================================== |
--- trunk/src/tools/cr/main.py (revision 235987) |
+++ trunk/src/tools/cr/main.py (working copy) |
@@ -1,94 +0,0 @@ |
-# 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. |
- |
-"""Chromium cr tool main module. |
- |
-Holds the main function and all it's support code. |
-""" |
- |
-import os |
-import sys |
-import cr |
-import cr.auto.user |
-import cr.autocomplete |
-import cr.loader |
- |
-_CONTACT = 'iancottrell@chromium.org' |
- |
- |
-def Main(): |
- """Chromium cr tool main function. |
- |
- This is the main entry point of the cr tool, it finds and loads all the |
- plugins, creates the context and then activates and runs the specified |
- command. |
- """ |
- |
- # Add the users plugin dir to the cr.auto.user package scan |
- user_path = os.path.expanduser(os.path.join('~', '.config', 'cr')) |
- cr.auto.user.__path__.append(user_path) |
- |
- cr.loader.Scan() |
- |
- # Build the command context |
- context = cr.Context( |
- description='The chrome dev build tool.', |
- epilog='Contact ' + _CONTACT + ' if you have issues with this tool.', |
- ) |
- # Install the sub-commands |
- for command in cr.Command.Plugins(): |
- context.AddSubParser(command) |
- |
- # test for the special autocomplete command |
- if context.autocompleting: |
- # After plugins are loaded so pylint: disable=g-import-not-at-top |
- cr.autocomplete.Complete(context) |
- return |
- # Speculative argument processing to add config specific args |
- context.ParseArgs(True) |
- cr.plugin.Activate(context) |
- # At this point we should know what command we are going to use |
- command = cr.Command.GetActivePlugin(context) |
- # Do some early processing, in case it changes the build dir |
- if command: |
- command.EarlyArgProcessing(context) |
- # Update the activated set again, in case the early processing changed it |
- cr.plugin.Activate(context) |
- # Load the build specific configuration |
- found_build_dir = cr.base.client.LoadConfig(context) |
- # Final processing or arguments |
- context.ParseArgs() |
- cr.plugin.Activate(context) |
- # If we did not get a command before, it might have been fixed. |
- if command is None: |
- command = cr.Command.GetActivePlugin(context) |
- # If the verbosity level is 3 or greater, then print the environment here |
- if context.verbose >= 3: |
- context.DumpValues(context.verbose > 3) |
- if command is None: |
- print context.Substitute('No command specified.') |
- exit(1) |
- if command.requires_build_dir: |
- if not found_build_dir: |
- if not context.Find('CR_OUT_FULL'): |
- print context.Substitute( |
- 'No build directory specified. Please use cr init to make one.') |
- else: |
- print context.Substitute( |
- 'Build {CR_BUILD_DIR} not a valid build directory') |
- exit(1) |
- if context.Find('CR_VERSION') != cr.base.client.VERSION: |
- print context.Substitute( |
- 'Build {CR_BUILD_DIR} is for the wrong version of cr') |
- print 'Please run cr init to reset it' |
- exit(1) |
- cr.Platform.Prepare(context) |
- if context.verbose >= 1: |
- print context.Substitute( |
- 'Running cr ' + command.name + ' for {CR_BUILD_DIR}') |
- # Invoke the given command |
- command.Run(context) |
- |
-if __name__ == '__main__': |
- sys.exit(Main()) |