#! /usr/bin/env python
import os
from abjad.tools import systemtools


def remove_source_file_terminal_blank_lines():
    total_source_file_names_with_blank_lines = 0
    total_blank_lines = 0
    for directory, subdirectory_names, file_names in os.walk('.'):
        for file_name in file_names:
            if file_name.endswith(('.py', '.ly', '.raw', '.rst')):
                file_path = os.path.join(directory, file_name)
                with open(file_path, 'r') as file_pointer:
                    lines = file_pointer.readlines()
                if not lines:
                    continue
                if lines[-1] == '\n':
                    total_source_file_names_with_blank_lines += 1
                    for line in reversed(lines[:]):
                        if line == '\n':
                            total_blank_lines += 1
                            lines.pop(-1)
                        else:
                            break
                    with open(file_path, 'w') as file_pointer:
                        file_pointer.write(''.join(lines))

    total = total_source_file_names_with_blank_lines
    print('Total source file_names with terminal blank lines: {}'.format(total))

    total = total_blank_lines
    print('Total source file-terminal blank lines:       {}'.format(total))
    print()


if __name__ == '__main__':
    systemtools.IOManager.clear_terminal()
    print('Removing source file-terminal blank lines ...')
    print()
    remove_source_file_terminal_blank_lines()
