fixing meta data aging
[nodejs-repoproxy.git] / lib / repo-yum.js
1 var fs = require("fs");
2 var http = require("http");
3 var url = require("url");
4 var path = require("path");
5
6
7
8 function maintain(name, repoinfo, files) {
9         console.log("doing yum clean for ", repoinfo);
10         
11         var metaAge = 24*3600*1000*(repoinfo.updateinterval);
12         var expireAge = 24*3600*1000*(repoinfo.expiretime);
13         
14         function fileCheck(i) {
15                 console.log("checking file: ", files[i]);
16                 
17                 // we look for repodata/repomd.xml file, if this is past maturity, we clean that whole directory
18                 if(files[i].match(/.*repodata\/repomd\.xml$/)) {
19                         console.log("Found repomd.xml file: ", files[i]);
20                         
21                         // strip the repomd file to get the dir
22                         var repomddir = files[i].replace(/repomd\.xml$/, "");
23                         console.log("repomd dir is:", repomddir);
24
25                         
26                         // do the file stat
27                         fs.stat(files[i], function(err, stats) {
28                                 console.log("stats for file was: ", stats);
29                                 var curtime = new Date().getTime();
30                                 var ctime = stats.ctime.getTime();
31                                 console.log("curtime is ", curtime);
32                                 console.log("ctime is ", ctime);
33                                 
34                                 var age = curtime - ctime;
35                                 console.log("age is (%d) for (%d)", age, metaAge);
36                                 if(age > metaAge) {
37                                         // TODO: cleanup repomd directory
38                                 }
39                         })
40                         
41                 } else {
42                         // STUFF!!!
43                         fs.stat(files[i], function(err, stats) {
44                                 console.log("stats for file was: ", stats);
45                                 var curtime = new Date().getTime();
46                                 var atime = stats.atime.getTime();
47                                 console.log("curtime is ", curtime);
48                                 console.log("ctime is ", atime);
49                                 
50                                 var age = curtime - atime;
51                                 console.log("age is (%d) for (%d)", age, expireAge);
52                                 if(age > expireAge) {
53                                         // TODO: cleanup singular file
54                                         // TODO: cleanup meta too, fuck me
55                                         console.log("clean up file \n", files[i]);
56                                         var metafile = files[i].replace(/(.*)\/(.[^\/]+$)/, "$1/.meta.$2.filesize");
57                                         //console.log("meta for this file is \n", nfile);
58                                         fs.unlink(files[i]);
59                                         fs.unlink(metafile);
60                                 }
61                         })
62                 }
63
64                 if(typeof files[i+1] != "undefined") fileCheck(i+1);                            
65         }
66         
67         if(typeof files[0] != 'undefined') fileCheck(0)
68         else console.log("Skipping (yum) file check as there are none... apprently?");
69
70
71 }
72
73 exports.maintain = maintain;