Mercurial > hg > config
annotate python/sortdiff.py @ 928:84543f2cda0d
restore my real email that companies keep making me change
| author | Jeff Hammel <k0scist@gmail.com> | 
|---|---|
| date | Tue, 14 Oct 2025 14:20:55 -0700 | 
| parents | 84a865a880a8 | 
| children | 
| rev | line source | 
|---|---|
| 
499
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
1 #!/usr/bin/env python | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
2 | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
3 import optparse | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
4 import os | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
5 import sys | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
6 | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
7 def main(args=sys.argv[1:]): | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
8 | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
9 usage = '%prog [options]' | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
10 parser = optparse.OptionParser(usage=usage, description=__doc__) | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
11 options, args = parser.parse_args(args) | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
12 | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
13 lines = sys.stdin.readlines() | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
14 diff = {'+': set(), | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
15 '-': set()} | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
16 for line in lines: | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
17 for key, value in diff.items(): | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
18 if line.startswith(key): | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
19 value.add(line[1:].strip()) | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
20 | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
21 added = diff['+'].difference(diff['-']) | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
22 minus = diff['-'].difference(diff['+']) | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
23 | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
24 print '+++' | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
25 for line in sorted(added): | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
26 print line | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
27 print '---' | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
28 for line in sorted(minus): | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
29 print line | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
30 | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
31 if __name__ == '__main__': | 
| 
 
84a865a880a8
a new way to view diffs based on sorted lines
 
Jeff Hammel <jhammel@mozilla.com> 
parents:  
diff
changeset
 | 
32 main() | 
