Chromium Code Reviews| 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..ada26c1e53fd285c669d87eea7e83bd4634f77f6 |
| --- /dev/null |
| +++ b/tools/clang/scripts/extract_edits.py |
| @@ -0,0 +1,56 @@ |
| +#!/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. |
| + |
| +Clang tools are expected to emit edits like this: |
|
dcheng
2016/12/27 07:30:14
Not all clang tools, just rewriter tools, right?
Łukasz Anforowicz
2016/12/27 22:33:26
If a clang tool emits edits, then it is a rewriter
|
| + ... |
| + ==== BEGIN EDITS ==== |
| + <edit1> |
| + <edit2> |
| + ... |
| + ==== END EDITS ==== |
| + ... |
| + ... |
| + ==== BEGIN EDITS ==== |
| + <yet another edit1> |
| + <yet another edit2> |
| + ... |
| + ==== END EDITS ==== |
| + ... |
| + |
| +This python script extracts and dedupes lines between the begin/end marker |
| +lines. |
| + |
| +This python script is mainly needed on Windows. |
| +On unix this script can be replaced with running sed as follows: |
| + |
| + $ cat run_tool.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) |
|
danakj
2016/12/23 15:45:06
jw why bother with this, it will make this tool sl
dcheng
2016/12/27 07:30:14
The apply script reads all the edits before dedupi
Łukasz Anforowicz
2016/12/27 22:33:26
I haven't made a change here, but I am open to rem
dcheng
2016/12/28 19:01:36
I don't feel strongly about this, but one easy way
Łukasz Anforowicz
2016/12/28 19:33:07
I am sure that this is lots and lots of lines. I
|
| + print(line) |
|
dcheng
2016/12/27 07:30:14
For consistency, no ()
Łukasz Anforowicz
2016/12/27 22:33:26
Done.
|
| + return 0 |
| + |
| + |
| +if __name__ == '__main__': |
| + sys.exit(main()) |