## wraps local cpplint to produce verbose output without code harness
import cpplint
import sys

def main():
    FILTERS='cpplint --verbose=0 --linelength=100 --filter=-legal/copyright,-build/include_order,-build/c++11,-build/namespaces,-build/class,-build/include,-build/include_subdir,-readability/inheritance,-readability/function,-readability/casting,-readability/namespace,-readability/alt_tokens,-readability/braces,-readability/fn_size,-whitespace/comments,-whitespace/braces,-whitespace/empty_loop_body,-whitespace/indent,-whitespace/newline,-runtime/explicit,-runtime/arrays,-runtime/int,-runtime/references,-runtime/string,-runtime/operator'.split(' ')

    result = False
    files = sys.argv[1:]
    for loopfile in files:
        newargs = FILTERS + [loopfile]
        sys.argv = newargs

        try:
            cpplint.main()
        except SystemExit as e:
            last_result = e.args[0]
            result = result or last_result
            if (last_result):
                write_code_lines(loopfile)
    sys.exit(result)

def write_code_lines(filename):
    with open(filename, 'r') as f:
        linenum = 1
        for line in f:
            if (not '// by md-split' in line):
                sys.stdout.write('%3d  %s' % (linenum, line))
            linenum += 1

if __name__ == '__main__':
  main()
