X-Git-Url: http://git.pjr.cc/?p=nodejs-repoproxy.git;a=blobdiff_plain;f=lib%2Fmaintain.js;h=46c3ddc68aa9cb26869a94817c3199e8eb72a3a9;hp=e336d4ad96a04792f5a6cf3a9d39b0f133742e4f;hb=d7478970127408f056b157f18df74fef7db3f892;hpb=04f3190a0bcc430af31917456a957ecc80eb160b diff --git a/lib/maintain.js b/lib/maintain.js index e336d4a..46c3ddc 100644 --- a/lib/maintain.js +++ b/lib/maintain.js @@ -9,16 +9,25 @@ function maintainCache() { // TODO i should check that im already running here and exit if i am console.log("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]); + //console.log("start cleanup in ", index); + //console.log("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]); + 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]); + //console.log("Scanning '%s' as apt", index); + //repoyum.maintain(global.repoproxy.repo[index]); + console.log("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; } } @@ -33,6 +42,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;