• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python
2# Copyright (c) 2012 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6'''Base class and interface for tools.
7'''
8
9
10class Tool(object):
11  '''Base class for all tools.  Tools should use their docstring (i.e. the
12  class-level docstring) for the help they want to have printed when they
13  are invoked.'''
14
15  #
16  # Interface (abstract methods)
17  #
18
19  def ShortDescription(self):
20    '''Returns a short description of the functionality of the tool.'''
21    raise NotImplementedError()
22
23  def Run(self, global_options, my_arguments):
24    '''Runs the tool.
25
26    Args:
27      global_options: object grit_runner.Options
28      my_arguments: [arg1 arg2 ...]
29
30    Return:
31      0 for success, non-0 for error
32    '''
33    raise NotImplementedError()
34
35  #
36  # Base class implementation
37  #
38
39  def __init__(self):
40    self.o = None
41
42  def SetOptions(self, opts):
43    self.o = opts
44
45  def Out(self, text):
46    '''Always writes out 'text'.'''
47    self.o.output_stream.write(text)
48
49  def VerboseOut(self, text):
50    '''Writes out 'text' if the verbose option is on.'''
51    if self.o.verbose:
52      self.o.output_stream.write(text)
53
54  def ExtraVerboseOut(self, text):
55    '''Writes out 'text' if the extra-verbose option is on.
56    '''
57    if self.o.extra_verbose:
58      self.o.output_stream.write(text)
59