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