code: function updatePath(sourcePath, targetPath, options, log) {
      if (sourcePath !== null && typeof sourcePath !== "string") {
          throw new Error("A source path (or null) is required.");
      }
  
      if (!targetPath || typeof targetPath !== "string") {
          throw new Error("A target path is required.");
      }
  
      log = log || function(message) { };
  
      return updatePathInternal(sourcePath, targetPath, options, log);
  }
docs: Updates a target file or directory with a source file or directory. (Directory updates are
  not recursive.)
  
  @param {?string} sourcePath Source file or directory to be used to update the
  destination. If the source is null, then the destination is deleted if it exists.
  @param {string} targetPath Required destination file or directory to be updated. If it does
  not exist, it will be created.
  @param {Object} [options] Optional additional parameters for the update.
  @param {string} [options.rootDir] Optional root directory (such as a project) to which target
  and source path parameters are relative; may be omitted if the paths are absolute. The
  rootDir is always omitted from any logged paths, to make the logs easier to read.
  @param {boolean} [options.all] If true, all files are copied regardless of last-modified times.
  Otherwise, a file is copied if the source's last-modified time is greather than or
  equal to the target's last-modified time, or if the file sizes are different.
  @param {loggingCallback} [log] Optional logging callback that takes a string message
  describing any file operations that are performed.
  @return {boolean} true if any changes were made, or false if the force flag is not set
  and everything was up to date