#!/usr/bin/env python
"""Formats docstrings to follow PEP 257."""

import sys
import docformatter


def main():
    """Main entry point."""
    import argparse
    parser = argparse.ArgumentParser(description=docformatter.__doc__,
                                     version=docformatter.__version__)
    parser.add_argument('--in-place', action='store_true',
                        help='make changes to file instead of printing diff')
    parser.add_argument('--no-backup', dest='backup', action='store_false',
                        help='do not write backup files')
    parser.add_argument('files', nargs='+',
                        help='files to format')

    args = parser.parse_args()

    for filename in args.files:
        with open(filename) as input_file:
            source = input_file.read()
            formatted_source = docformatter.format_code(source)

        if args.in_place:
            if args.backup:
                with open(filename + '.backup', 'w') as backup_file:
                    backup_file.write(source)

            with open(filename, 'w') as output_file:
                output_file.write(formatted_source)
        else:
            import difflib
            diff = difflib.unified_diff([l + '\n' for l in source.split('\n')],
                                        [l + '\n' for l in formatted_source.split('\n')],
                                        'before/' + filename,
                                        'after/' + filename)
            sys.stdout.write(''.join(diff))


if __name__ == '__main__':
    sys.exit(main())
