cloudcmd/lib/server/appcache.js

78 lines
No EOL
1.8 KiB
JavaScript

var fs = require('fs');
var crypto = require('crypto');
/* varible contain all watched file names
* {name: true}
*/
var FileNames = {};
/* function thet use for crossplatform
* access to fs.watch or fs.watchFile function
*/
var fs_watch = null;
var on_fs_watch = null;
var firstFileRead_b = true;
var Manifest = '';
setWatachFunctions();
function setWatachFunctions(){
if(process.platform === 'win32'){
/* good on windows */
fs_watch = fs.watch;
on_fs_watch = onWatch;
}
else{
/* good on linux */
fs_watch = fs.watchFile;
on_fs_watch = onWatchFile;
}
}
exports.watch = function(pFileName){
console.log(pFileName + ' is watched');
if(!FileNames[pFileName]){
try{
fs_watch(pFileName, on_fs_watch(pFileName));
}
catch(pError){
console.log(pError);
}
Manifest += pFileName + '\n';
FileNames[pFileName] = true;
}
else if(firstFileRead_b){
processManifest();
firstFileRead_b = false;
}
};
function onWatch (pFileName){
return function(pEvent, pFileName){
console.log('file ' + pFileName + 'is changed');
};
}
function onWatchFile(pFileName){
return function(pCurr, pPrev){
console.log(pCurr);
if(pCurr.mtime !== pCurr.pPrev.mtime)
console.log('file ' + pFileName + 'is changed');
};
}
function processManifest(){
Manifest = 'CACHE MANIFEST\n' +
'#' + new Date() + '\n' +
'CACHE:\n' +
Manifest +
'NETWORK:\n' +
'*';
console.log(Manifest);
fs.writeFile('cloudcmd.appcache', Manifest, function(){
console.log('cloudcmd.appcache refreshed');
});
}