preserve_mode=1, preserve_times=1, update=1, level=1):
"""Copy a file respecting verbose and dry-run flags."""
- util.copy_file (infile, outfile,
- preserve_mode, preserve_times,
- update, self.distribution.verbose >= level,
- self.distribution.dry_run)
+ return util.copy_file (infile, outfile,
+ preserve_mode, preserve_times,
+ update, self.distribution.verbose >= level,
+ self.distribution.dry_run)
def copy_tree (self, infile, outfile,
"""Copy an entire directory tree respecting verbose and dry-run
flags."""
- util.copy_tree (infile, outfile,
- preserve_mode, preserve_times, preserve_symlinks,
- update, self.distribution.verbose >= level,
- self.distribution.dry_run)
+ return util.copy_tree (infile, outfile,
+ preserve_mode,preserve_times,preserve_symlinks,
+ update, self.distribution.verbose >= level,
+ self.distribution.dry_run)
def make_file (self, infiles, outfile, func, args,
'update' is true, 'src' will only be copied if 'dst' does not
exist, or if 'dst' does exist but is older than 'src'. If
'verbose' is true, then a one-line summary of the copy will be
- printed to stdout."""
+ printed to stdout.
+
+ Return true if the file was copied (or would have been copied),
+ false otherwise (ie. 'update' was true and the destination is
+ up-to-date)."""
# XXX doesn't copy Mac-specific metadata
dir = os.path.dirname (dst)
if update and not newer (src, dst):
- print "not copying %s (output up-to-date)" % src
- return
+ if verbose:
+ print "not copying %s (output up-to-date)" % src
+ return 0
if verbose:
print "copying %s -> %s" % (src, dir)
if dry_run:
- return
+ return 1
_copy_file_contents (src, dst)
if preserve_mode or preserve_times:
if preserve_times:
os.utime (dst, (st[ST_ATIME], st[ST_MTIME]))
+ return 1
+
# copy_file ()
"""Copy an entire directory tree 'src' to a new location 'dst'. Both
'src' and 'dst' must be directory names. If 'src' is not a
directory, raise DistutilsFileError. If 'dst' does not exist, it
- is created with 'mkpath'. The endresult of the copy is that
+ is created with 'mkpath'. The end result of the copy is that
every file in 'src' is copied to 'dst', and directories under
- 'src' are recursively copied to 'dst'.
+ 'src' are recursively copied to 'dst'. Return the list of files
+ copied (under their output names) -- note that if 'update' is true,
+ this might be less than the list of files considered. Return
+ value is not affected by 'dry_run'.
'preserve_mode' and 'preserve_times' are the same as for
'copy_file'; note that they only apply to regular files, not to
if not dry_run:
mkpath (dst, verbose=verbose)
+ outputs = []
+
for n in names:
src_name = os.path.join (src, n)
dst_name = os.path.join (dst, n)
print "linking %s -> %s" % (dst_name, link_dest)
if not dry_run:
os.symlink (link_dest, dst_name)
+ outputs.append (dst_name)
+
elif os.path.isdir (src_name):
- copy_tree (src_name, dst_name,
- preserve_mode, preserve_times, preserve_symlinks,
- update, verbose, dry_run)
+ outputs[-1:] = \
+ copy_tree (src_name, dst_name,
+ preserve_mode, preserve_times, preserve_symlinks,
+ update, verbose, dry_run)
else:
- copy_file (src_name, dst_name,
- preserve_mode, preserve_times,
- update, verbose, dry_run)
+ if (copy_file (src_name, dst_name,
+ preserve_mode, preserve_times,
+ update, verbose, dry_run)):
+ outputs.append (dst_name)
+
+ return outputs
# copy_tree ()