1 #!/usr/bin/env python 2 # 3 # Copyright 2007 The Closure Linter Authors. All Rights Reserved. 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS-IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 """Automatically fix simple style guide violations.""" 18 19 __author__ = 'robbyw (at] google.com (Robert Walker)' 20 21 import StringIO 22 import sys 23 24 import gflags as flags 25 26 from closure_linter import error_fixer 27 from closure_linter import runner 28 from closure_linter.common import simplefileflags as fileflags 29 30 FLAGS = flags.FLAGS 31 flags.DEFINE_list('additional_extensions', None, 'List of additional file ' 32 'extensions (not js) that should be treated as ' 33 'JavaScript files.') 34 flags.DEFINE_boolean('dry_run', False, 'Do not modify the file, only print it.') 35 36 37 def main(argv=None): 38 """Main function. 39 40 Args: 41 argv: Sequence of command line arguments. 42 """ 43 if argv is None: 44 argv = flags.FLAGS(sys.argv) 45 46 suffixes = ['.js'] 47 if FLAGS.additional_extensions: 48 suffixes += ['.%s' % ext for ext in FLAGS.additional_extensions] 49 50 files = fileflags.GetFileList(argv, 'JavaScript', suffixes) 51 52 output_buffer = None 53 if FLAGS.dry_run: 54 output_buffer = StringIO.StringIO() 55 56 fixer = error_fixer.ErrorFixer(output_buffer) 57 58 # Check the list of files. 59 for filename in files: 60 runner.Run(filename, fixer) 61 if FLAGS.dry_run: 62 print output_buffer.getvalue() 63 64 65 if __name__ == '__main__': 66 main() 67