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