def command_string_builder(argument_dictionary, prepend, append="",
                           flags_list="", argument_delimiter="-"):
    """This function dynamically builds a shell executable command string, so that
    you don't have to manually build strings using the pythons string
    formatting tools. This function is lazy and somewhat inefficient.

    Args:
        argument_dictionary (dict): A dictionary of command line arguments.
            Should not have any "-" marks. keys are arg names.
        prepend (str): A string value attached to the start of the command
            string. Normally the software name/path.
        append (str): A string value added to the end of the command string.
            Sometimes used for file paths. Defaults to nothing ("").
        flags_list (List[str]): A list of command lines flags without argument
            delimiters. Defaults to nothing ("").
        argument_delimiter (str): By default arguments delimiters are defined
            as "-", here they may be changed to "--" or any other value needed
            by the command.

    Returns:
        str: A fully formatted command string. Not in this implementation
            arguments will be placed in random order.
    """
    argument_list = []
    for key in argument_dictionary:

        formatted_key = "{delim}{key_value} ".format(
            delim=argument_delimiter,
            key_value=key)

        argument_string = "{formatted_key}{value} ".format(
            formatted_key=formatted_key,
            value=str(argument_dictionary[key]))

        argument_list.append(argument_string)

    formatted_command_string = "".join(argument_list)

    if flags_list:
        my_flags = []
        for item in flags_list:
            formatted_flag = "{delim}{flag_value} ".format(delim=argument_delimiter,
                                                           flag_value=item)
            my_flags.append(formatted_flag)
        flags_string = "".join(my_flags)
        formatted_command_string = "{arg_list}{flags}".format(flags=flags_string,
                                                              arg_list=formatted_command_string)

    # prepend
    formatted_command_string = "{prepend} {arg_list}".format(prepend=prepend,
                                                             arg_list=formatted_command_string)

    if append:
        formatted_command_string = "{arg_list} {append}".format(append=append,
                                                                arg_list=formatted_command_string)

    return formatted_command_string