X-Git-Url: http://git.pjr.cc/?p=nodejs-repoproxy.git;a=blobdiff_plain;f=lib%2Fmaintain.js;h=fe19a00e9de7a591adab0c92efd04b51be4c1f46;hp=e336d4ad96a04792f5a6cf3a9d39b0f133742e4f;hb=3933776341028e83d89e0f888fff3e6319230abf;hpb=04f3190a0bcc430af31917456a957ecc80eb160b diff --git a/lib/maintain.js b/lib/maintain.js index e336d4a..fe19a00 100644 --- a/lib/maintain.js +++ b/lib/maintain.js @@ -4,25 +4,35 @@ var url = require("url"); var path = require("path"); var repoapt = require("./repo-apt.js"); var repoyum = require("./repo-yum.js"); +var log = require("./log.js"); function maintainCache() { // TODO i should check that im already running here and exit if i am - console.log("Cache maintainence routine starting..."); + log.debug("Cache maintainence routine starting..."); for(var index in global.repoproxy.repo) { - console.log("start cleanup in ", index); - console.log("cleanup array ", global.repoproxy.repo[index]); + //log.debug("start cleanup in ", index); + //log.debug("cleanup array ", global.repoproxy.repo[index]); switch(global.repoproxy.repo[index]["type"]) { case "apt": - console.log("Scanning '%s' as apt", index); - repoapt.maintain(global.repoproxy.repo[index]); + log.debug("Scanning '%s' as apt", index); + var walkin = path.normalize(global.repoproxy.cacheDir + "/" + index); + walkDir(walkin, function(err, list) { + repoapt.maintain(index, global.repoproxy.repo[index], list); + }) break; case "yum": - console.log("Scanning '%s' as apt", index); - repoyum.maintain(global.repoproxy.repo[index]); + //log.debug("Scanning '%s' as apt", index); + //repoyum.maintain(global.repoproxy.repo[index]); + log.debug("Scanning '%s' as yum", index); + var walkin = path.normalize(global.repoproxy.cacheDir + "/" + index); + walkDir(walkin, function(err, list) { + repoyum.maintain(index, global.repoproxy.repo[index], list); + }) + break; break; } } - console.log("Cache maintainence routine ended..."); + log.debug("Cache maintainence routine ended..."); } exports.startTimer = function() { @@ -33,6 +43,32 @@ exports.startTimer = function() { setInterval(maintainCache, cacheTimer); } -function cleanupRoutine() { +// this code comes frmo http://stackoverflow.com/questions/5827612/node-js-fs-readdir-recursive-directory-search +function walkDir(dir, done) { + var results = []; -} \ No newline at end of file + fs.readdir(dir, function(err, list) { + if (err) return done(err); + var i = 0; + (function next() { + var file = list[i++]; + if (!file) return done(null, results); + file = path.normalize(dir + "/" + file); + fs.stat(file, function(err, stat) { + if (stat && stat.isDirectory()) { + walkDir(file, function(err, res) { + results = results.concat(res); + next(); + }); + } else { + if(!file.match(/.*\.meta.*\.filesize/)) results.push(file); + next(); + } + }); + })(); + }); +}; + + + +exports.walkDir = walkDir;