Run ``on_plugin_install`` script for specified plugin directory (if
    available).

    **TODO** Add support for Linux, OSX.

    Parameters
    ----------
    plugin_directory : str
        File system to plugin directory.
    ostream :file-like
        Output stream for status messages (default: ``sys.stdout``).

def on_plugin_install(plugin_directory, ostream=sys.stdout):
    '''
    Run ``on_plugin_install`` script for specified plugin directory (if
    available).

    **TODO** Add support for Linux, OSX.

    Parameters
    ----------
    plugin_directory : str
        File system to plugin directory.
    ostream :file-like
        Output stream for status messages (default: ``sys.stdout``).
    '''
    current_directory = os.getcwd()

    plugin_directory = ph.path(plugin_directory).realpath()
    print >> ostream, ('Processing post-install hook for: '
                        '{}'.format(plugin_directory.name))

    hooks_dir_i = plugin_directory.joinpath('hooks/Windows').realpath()
    hook_path_i = hooks_dir_i.joinpath('on_plugin_install.bat')

    if hook_path_i.isfile():
        logger.info('Processing post-install hook for: %s',
                    plugin_directory.name)
        os.chdir(hook_path_i.parent)
        try:
            process = sp.Popen([hook_path_i, sys.executable], shell=True,
                               stdin=sp.PIPE)
            # Emulate return key press in case plugin uses
            # "Press <enter> key to continue..." prompt.
            process.communicate(input='\r\n')
            if process.returncode != 0:
                raise RuntimeError('Process return code == {}'
                                   .format(process.returncode))
            return hook_path_i
        except Exception, exception:
            raise RuntimeError('Error running: {}\n{}'.format(hook_path_i,
                                                              exception))
        finally:
            os.chdir(current_directory)