'Copy a file respecting dry-run and force flags.'

def copy_file(self, infile, outfile, check=True):

    self.ensure_dir(os.path.dirname(outfile))
    logger.info('Copying    %s    to    %s', infile, outfile)
    if (not self.dry_run):
        msg = None
        if check:
            if os.path.islink(outfile):
                msg = ('%s    is    a    symlink' % outfile)
            elif (os.path.exists(outfile) and (not os.path.isfile(outfile))):
                msg = ('%s    is    a    non-regular    file' % outfile)
        if msg:
            raise ValueError((msg + '    which    would    be    overwritten'))
        shutil.copyfile(infile, outfile)
    self.record_as_written(outfile)
