code: function statFile(file, source) {
    return function(cb) {
      var abs = join(source, file);
      stat(abs, function(err, stats) {
        if (err) return cb(err);
  
        var manifest = {
          name: file,
          abs: abs,
          mtime: Math.floor(stats.mtime.getTime() / 1000),
          mode: '' + parseInt(stats.mode.toString(8), 10),
          size: '' + stats.size // do we need this?
        };
  
        if (stats.isDirectory()) return cb();
        if (stats.isSymbolicLink()) return fs.readlink(abs, finish('link'));
        calculateHash(abs, finish('hash'));
  
        function finish(key) {
          return function(err, val) {
            if (err) return cb(err);
            manifest[key] = val;
            cb(null, manifest);
          };
        }
      });
    };
  }
docs: Get a file manifest
  
  @param {String} file
  @param {String} source
  @return {Function}