X-Git-Url: http://git.pjr.cc/?p=nodejs-repoproxy.git;a=blobdiff_plain;f=lib%2Frepo-yum.js;h=4de23b97f9022418b89e8aa94cfe498d2b572d5e;hp=18b383a4e6285f939a45e64931f3c57bc69f6ad2;hb=9ce3e2a4e56f91fdc7d6295d3d064f2739955404;hpb=04f3190a0bcc430af31917456a957ecc80eb160b diff --git a/lib/repo-yum.js b/lib/repo-yum.js index 18b383a..4de23b9 100644 --- a/lib/repo-yum.js +++ b/lib/repo-yum.js @@ -1,5 +1,78 @@ -function maintain(details) { - console.log("doing yum clean for ", details); +var fs = require("fs"); +var http = require("http"); +var url = require("url"); +var path = require("path"); +var cache = require("./cache.js"); +var log = require("./log.js"); + + + +function maintain(name, repoinfo, files) { + log.info("Starting maintenance routine for yum repo %s (%s)", name, repoinfo.url); + + var metaAge = 24*3600*1000*(repoinfo.updateinterval); + var expireAge = 24*3600*1000*(repoinfo.expiretime); + + function fileCheck(i) { + log.debug("checking file: ", files[i]); + + // we look for repodata/repomd.xml file, if this is past maturity, we clean that whole directory + if(files[i].match(/.*repodata\/repomd\.xml$/)) { + log.debug("Found repomd.xml file: ", files[i]); + + // strip the repomd file to get the dir + var repomddir = files[i].replace(/repomd\.xml$/, ""); + log.debug("repomd dir is:", repomddir); + + + // do the file stat + fs.stat(files[i], function(err, stats) { + log.debug("stats for file was: ", stats); + var curtime = new Date().getTime(); + var ctime = stats.ctime.getTime(); + log.debug("curtime is ", curtime); + log.debug("ctime is ", ctime); + + var age = curtime - ctime; + log.debug("age is (%d) for (%d)", age, metaAge); + if(age < metaAge) { + // TODO: cleanup repomd directory + cache.moveToCleanup(repomddir); + log.info("Sending repomd directory to trash for cleanup (%s)", repomddir); + } + }) + + } else { + // STUFF!!! + fs.stat(files[i], function(err, stats) { + log.debug("stats for file was: ", stats); + var curtime = new Date().getTime(); + var atime = stats.atime.getTime(); + log.debug("curtime is ", curtime); + log.debug("ctime is ", atime); + + var age = curtime - atime; + //log.debug("age is (%d) for (%d)", age, expireAge); + if(age > expireAge) { + // TODO: cleanup singular file + // TODO: cleanup meta too, fuck me + //log.debug("clean up file \n", files[i]); + var metafile = files[i].replace(/(.*)\/(.[^\/]+$)/, "$1/.meta.$2.filesize"); + //log.debug("meta for this file is \n", nfile); + cache.moveToCleanup(files[i]); + cache.moveToCleanup(metafile); + log.info("Sending expired file to trash for cleanup (%s)", files[i]); + } + }) + } + + if(typeof files[i+1] != "undefined") fileCheck(i+1); + } + + if(typeof files[0] != 'undefined') fileCheck(0) + else log.info("Skipping (yum) file check as there are none... apprently?"); + + } exports.maintain = maintain; \ No newline at end of file