| Index: tools/clang/scripts/extract_edits.py
|
| diff --git a/tools/clang/scripts/extract_edits.py b/tools/clang/scripts/extract_edits.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..b0df9c3541d90f985ce0bbd8d07c04b25a1aa1f8
|
| --- /dev/null
|
| +++ b/tools/clang/scripts/extract_edits.py
|
| @@ -0,0 +1,65 @@
|
| +#!/usr/bin/env python
|
| +# Copyright (c) 2016 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.
|
| +"""Script to extract edits from clang tool output.
|
| +
|
| +If a clang tool emits edits, then the edits should look like this:
|
| + ...
|
| + ==== BEGIN EDITS ====
|
| + <edit1>
|
| + <edit2>
|
| + ...
|
| + ==== END EDITS ====
|
| + ...
|
| +
|
| +extract_edits.py takes input that is concatenated from multiple tool invocations
|
| +and extract just the edits. In other words, given the following input:
|
| + ...
|
| + ==== BEGIN EDITS ====
|
| + <edit1>
|
| + <edit2>
|
| + ==== END EDITS ====
|
| + ...
|
| + ==== BEGIN EDITS ====
|
| + <yet another edit1>
|
| + <yet another edit2>
|
| + ==== END EDITS ====
|
| + ...
|
| +extract_edits.py would emit the following output:
|
| + <edit1>
|
| + <edit2>
|
| + <yet another edit1>
|
| + <yet another edit2>
|
| +
|
| +This python script is mainly needed on Windows.
|
| +On unix this script can be replaced with running sed as follows:
|
| +
|
| + $ cat run_tool.debug.out \
|
| + | sed '/^==== BEGIN EDITS ====$/,/^==== END EDITS ====$/{//!b};d'
|
| + | sort | uniq
|
| +"""
|
| +
|
| +
|
| +import sys
|
| +
|
| +
|
| +def main():
|
| + unique_lines = set()
|
| + inside_marker_lines = False
|
| + for line in sys.stdin:
|
| + line = line.rstrip("\n\r")
|
| + if line == '==== BEGIN EDITS ====':
|
| + inside_marker_lines = True
|
| + continue
|
| + if line == '==== END EDITS ====':
|
| + inside_marker_lines = False
|
| + continue
|
| + if inside_marker_lines and line not in unique_lines:
|
| + unique_lines.add(line)
|
| + print line
|
| + return 0
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(main())
|
|
|