annotate python/sortdiff.py @ 898:e7ab4cf29f7b

py3
author Jeff Hammel <k0scist@gmail.com>
date Mon, 01 Aug 2022 16:42:02 -0700
parents 84a865a880a8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()