| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #! /usr/bin/env python3
- # __ __ _
- # ___\ \/ /_ __ __ _| |_
- # / _ \\ /| '_ \ / _` | __|
- # | __// \| |_) | (_| | |_
- # \___/_/\_\ .__/ \__,_|\__|
- # |_| XML parser
- #
- # Copyright (c) 2017 Rhodri James <[email protected]>
- # Copyright (c) 2017 Sebastian Pipping <[email protected]>
- # Licensed under the MIT license:
- #
- # Permission is hereby granted, free of charge, to any person obtaining
- # a copy of this software and associated documentation files (the
- # "Software"), to deal in the Software without restriction, including
- # without limitation the rights to use, copy, modify, merge, publish,
- # distribute, sublicense, and/or sell copies of the Software, and to permit
- # persons to whom the Software is furnished to do so, subject to the
- # following conditions:
- #
- # The above copyright notice and this permission notice shall be included
- # in all copies or substantial portions of the Software.
- #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- # NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- # USE OR OTHER DEALINGS IN THE SOFTWARE.
- import argparse
- import difflib
- import sys
- def _read_lines(filename):
- try:
- with open(filename) as f:
- return f.readlines()
- except UnicodeDecodeError:
- with open(filename, encoding='utf_16') as f:
- return f.readlines()
- def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('first', metavar='FILE')
- parser.add_argument('second', metavar='FILE')
- config = parser.parse_args()
- first = _read_lines(config.first)
- second = _read_lines(config.second)
- diffs = list(difflib.unified_diff(first, second, fromfile=config.first,
- tofile=config.second))
- if diffs:
- sys.stdout.writelines(diffs)
- sys.exit(1)
- if __name__ == '__main__':
- main()
|