#! /usr/bin/env python

import os
from abjad.tools import iotools


def _find_initializers():
    public_class_package_initializers = [ ]
    for directory_path, subdirectory_names, file_names in os.walk('.'):
        for file_name in file_names:
            if file_name == '__init__.py':
                directory_name = os.path.basename(directory_path)
                if directory_name[0].isupper():
                    initializer_file_path = os.path.join(directory_path, file_name)
                    public_class_package_initializers.append(initializer_file_path)
    public_class_package_count = len(public_class_package_initializers)
    print 'Total initializers:         {}'.format(public_class_package_count)
    manual_initializer_count = 0
    for initializer_file_path in public_class_package_initializers:
        first_line = file(initializer_file_path, 'r').readlines()[0]
        if 'importtools' not in first_line:
            output = file(initializer_file_path, 'w')
            output.write('from abjad.tools import importtools\n')
            output.write('\n')
            # TODO: make package_root_name detect correct argument automatically
            package_root_path = 'abjad'
            if 'experimental' in initializer_file_path:
                package_root_path = 'experimental'
            output.write(
                'importtools.ImportManager.import_structured_package(\n'
                '    __path__[0],\n'
                '    globals(),\n'
                '    package_root_name={!r})\n'.format(package_root_path)
                )
            output.close()
            manual_initializer_count += 1
    autoloading_initializer_count = public_class_package_count - manual_initializer_count
    print 'Autoloading initializers:   {}'.format(autoloading_initializer_count)
    print 'Manual initializers:        {}'.format(manual_initializer_count)
    print ''


if __name__ == '__main__':
    iotools.clear_terminal()
    print 'This script needs to be ported forward.'
#    print 'Finding and fixing manual class package initializers ...'
#    print ''
#    _find_initializers()
