def get_hook_message(<EOL>start,<EOL>postfix='<STR_LIT>',<EOL>end_msg=None,<EOL>end_len=<NUM_LIT:0>,<EOL>end_color=None,<EOL>use_color=None,<EOL>cols=<NUM_LIT>,<EOL>):
if bool(end_msg) == bool(end_len):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if end_msg is not None and (end_color is None or use_color is None):<EOL><INDENT>raise ValueError(<EOL>'<STR_LIT>',<EOL>)<EOL><DEDENT>if end_len:<EOL><INDENT>return start + '<STR_LIT:.>' * (cols - len(start) - end_len - <NUM_LIT:1>)<EOL><DEDENT>else:<EOL><INDENT>return '<STR_LIT>'.format(<EOL>start,<EOL>'<STR_LIT:.>' * (cols - len(start) - len(postfix) - len(end_msg) - <NUM_LIT:1>),<EOL>postfix,<EOL>color.format_color(end_msg, end_color, use_color),<EOL>)<EOL><DEDENT>
Prints a message for running a hook.

    This currently supports three approaches:

    # Print `start` followed by dots, leaving 6 characters at the end
    >>> print_hook_message('start', end_len=6)
    start...............................................................

    # Print `start` followed by dots with the end message colored if coloring
    # is specified and a newline afterwards
    >>> print_hook_message(
        'start',
        end_msg='end',
        end_color=color.RED,
        use_color=True,
    )
    start...................................................................end

    # Print `start` followed by dots, followed by the `postfix` message
    # uncolored, followed by the `end_msg` colored if specified and a newline
    # afterwards
    >>> print_hook_message(
        'start',
        postfix='postfix ',
        end_msg='end',
        end_color=color.RED,
        use_color=True,
    )
    start...........................................................postfix end