Callback function to write the output from the script.

    @param input: A tuple containing two things:
                | 1. None or Tuple of file mode and destination filepath
                | 2. The output of the jaide command that will be either
                |    written to sys.stdout or to a file, depending on the
                |    first index in the tuple.
                |
                | If the first index of the tuple *is not* another tuple,
                | the output will be written to sys.stdout. If the first
                | index *is* a tuple, that tuple is further broken down
                | into the mode ('single' for single file or 'multiple'
                | for one file for each IP), and the destination filepath.
    @type input: tuple

    @returns: None

def write_out(input):
    """ Callback function to write the output from the script.

    @param input: A tuple containing two things:
                | 1. None or Tuple of file mode and destination filepath
                | 2. The output of the jaide command that will be either
                |    written to sys.stdout or to a file, depending on the
                |    first index in the tuple.
                |
                | If the first index of the tuple *is not* another tuple,
                | the output will be written to sys.stdout. If the first
                | index *is* a tuple, that tuple is further broken down
                | into the mode ('single' for single file or 'multiple'
                | for one file for each IP), and the destination filepath.
    @type input: tuple

    @returns: None
    """
    # peel off the to_file metadata from the output.
    to_file, output = input
    if to_file != "quiet":
        try:
            # split the to_file metadata into it's separate parts.
            mode, dest_file = to_file
        except TypeError:
            # just dump the output if we had an internal problem with getting
            # the metadata.
            click.echo(output)
        else:
            ip = output.split('device: ')[1].split('\n')[0].strip()
            if mode in ['m', 'multiple']:
                # put the IP in front of the filename if we're writing each
                # device to its own file.
                dest_file = path.join(path.split(dest_file)[0], ip + "_" +
                                      path.split(dest_file)[1])
            try:
                out_file = open(dest_file, 'a+b')
            except IOError as e:
                print(color("Could not open output file '%s' for writing. "
                            "Output would have been:\n%s" %
                            (dest_file, output), 'red'))
                print(color('Here is the error for opening the output file:' +
                            str(e), 'red'))
            else:
                click.echo(output, nl=False, file=out_file)
                print(color('%s output appended to: %s' % (ip, dest_file)))
                out_file.close()