Example #1
0
    }, function(packages, done) {
      Cs.debug('2: found: ' + packages.map(function(p) { return p.id; }).join(',') + ' deps = ' + deps);

      if (!deps) return done(null, packages); // nothing to do
      
      var ret = [], seen = {};
      
      function addPackage(packageInfo, done) {
        if (seen[packageInfo.id]) return done();

        ret.push(packageInfo);
        seen[packageInfo.id] = true;
        
        Cs.each(packageInfo.dependencies(), function(packageId, done) {
          PackageInfo.findCompatible(packageId, function(err, curInfo) {
            if (err) return done(err);
            if (!curInfo) done(); // nothing to do if dependency not found
            else addPackage(curInfo, done);
          });
        })(done);
      }
      
      Cs.each(packages, function(curInfo, done) {
        addPackage(curInfo, done);
      })(function(err) {
        if (err) return done(err);
        else return done(null, ret);
      });
      
    // finally filter based on if you have access to see a given package
    }, function(packages, done) {
Example #2
0
      function addPackage(packageInfo, done) {
        if (seen[packageInfo.id]) return done();

        ret.push(packageInfo);
        seen[packageInfo.id] = true;
        
        Cs.each(packageInfo.dependencies(), function(packageId, done) {
          PackageInfo.findCompatible(packageId, function(err, curInfo) {
            if (err) return done(err);
            if (!curInfo) done(); // nothing to do if dependency not found
            else addPackage(curInfo, done);
          });
        })(done);
      }