Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(157)

Side by Side Diff: tools/clang/scripts/extract_edits.py

Issue 2599193002: Split run_tool.py into run_tool.py, extract_edits.py and apply_edits.py (Closed)
Patch Set: Addressed remaining nits. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/clang/scripts/apply_edits.py ('k') | tools/clang/scripts/run_tool.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2016 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 """Script to extract edits from clang tool output.
6
7 If a clang tool emits edits, then the edits should look like this:
8 ...
9 ==== BEGIN EDITS ====
10 <edit1>
11 <edit2>
12 ...
13 ==== END EDITS ====
14 ...
15
16 extract_edits.py takes input that is concatenated from multiple tool invocations
17 and extract just the edits. In other words, given the following input:
18 ...
19 ==== BEGIN EDITS ====
20 <edit1>
21 <edit2>
22 ==== END EDITS ====
23 ...
24 ==== BEGIN EDITS ====
25 <yet another edit1>
26 <yet another edit2>
27 ==== END EDITS ====
28 ...
29 extract_edits.py would emit the following output:
30 <edit1>
31 <edit2>
32 <yet another edit1>
33 <yet another edit2>
34
35 This python script is mainly needed on Windows.
36 On unix this script can be replaced with running sed as follows:
37
38 $ cat run_tool.debug.out \
39 | sed '/^==== BEGIN EDITS ====$/,/^==== END EDITS ====$/{//!b};d'
40 | sort | uniq
41 """
42
43
44 import sys
45
46
47 def main():
48 unique_lines = set()
49 inside_marker_lines = False
50 for line in sys.stdin:
51 line = line.rstrip("\n\r")
52 if line == '==== BEGIN EDITS ====':
53 inside_marker_lines = True
54 continue
55 if line == '==== END EDITS ====':
56 inside_marker_lines = False
57 continue
58 if inside_marker_lines and line not in unique_lines:
59 unique_lines.add(line)
60 print line
61 return 0
62
63
64 if __name__ == '__main__':
65 sys.exit(main())
OLDNEW
« no previous file with comments | « tools/clang/scripts/apply_edits.py ('k') | tools/clang/scripts/run_tool.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698