code: function done(err, files) {
      // On processing errors notify the watcher (if listening) that square is idle.
      if (err && self.writable) {
        self.logger.error(err);
        return fn(err);
      }
  
      // Stop our cache, it will be activated again when we need it
      self.cache.stop();
  
      // Merge the results array to a key=>value object
      files = (files || []).reduce(function reduceFiles(memo, collection) {
        memo[collection.basename] = collection;
        return memo;
      }, {});
  
      // Building is done, call callback if available.
      self.logger.info('Successfully generated %s', Object.keys(files).join(', ').green);
      if (err && !args.function) self.critical(err);
      if (args.function) args.function.call(self, err, files, extensions);
    }
docs: Callback function for when the build is finished.
  
  @param {Error} err