diff --git a/lib/scanner.js b/lib/scanner.js index 6f2d5dd..210fb34 100644 --- a/lib/scanner.js +++ b/lib/scanner.js @@ -19,29 +19,35 @@ function handleError(err) { return false } -db.general.findOne(function(err, root) { - if (handleError(err)) return - if (!root) root = {} - downloadPackageJson(root, function(err, potentiallyNewJson) { +function updateNPM() { + db.general.findOne(function(err, root) { if (handleError(err)) return - if (potentiallyNewJson) { - log.info("Got new registry, updating...") - var json = JSON.parse(potentiallyNewJson) - for (var name in json) { - var pack = { - name: name, - lastModified: new Date, - info: json[name] + if (!root) root = {} + downloadPackageJson(root, function(err, potentiallyNewJson) { + if (handleError(err)) return + if (potentiallyNewJson) { + log.info("Got new registry, updating...") + var json = JSON.parse(potentiallyNewJson) + for (var name in json) { + var pack = { + name: name, + lastModified: new Date, + info: json[name] + } + db.packages.upsert({name:name}, pack) } - db.packages.upsert({name:name}, pack) + db.general.save(root) + process.nextTick(processPackages) + } else { + processPackages() } - db.general.save(root) - process.nextTick(processPackages) - } else { - processPackages() - } + }) }) -}) +} + +updateNPM() + +var updateNPMTimeout = null, processTimeout = null function processPackages() { log.info("Processing packages...") @@ -85,10 +91,13 @@ function processGits() { }) } else { log.info("gitscan --- Done.") - setTimeout(function() { + clearTimeout(processTimeout) + processTimeout = setTimeout(function() { log.info("gitscan --- Checking for updated git repositories...") processGit(db.gits.find().sort({lastChecked:-1})) },5*60*1000) + clearTimeout(updateNPMTimeout) + updateNPMTimeout = setTimeout(updateNPM, 60*1000) } }) }