First commit
This commit is contained in:
+61
@@ -0,0 +1,61 @@
|
||||
var os = require('os');
|
||||
var fs = require('fs');
|
||||
var fsx = require('fs-extra')
|
||||
var Download = require('download');
|
||||
var downloadStatus = require('download-status');
|
||||
var crypto = require('crypto');
|
||||
|
||||
var cacheFolder = os.homedir() + '/.haxe_cache';
|
||||
if(!fs.existsSync(cacheFolder)){
|
||||
fs.mkdirSync(cacheFolder);
|
||||
}
|
||||
|
||||
var getHash = function ( data ) {
|
||||
var generator = crypto.createHash('sha1');
|
||||
generator.update( data )
|
||||
return generator.digest('hex')
|
||||
}
|
||||
|
||||
function Cache(){
|
||||
|
||||
this.download = function(url, targetFolder, callback){
|
||||
console.log(url);
|
||||
var hash = getHash(url);
|
||||
var ref = this;
|
||||
if(fs.existsSync(cacheFolder + '/' + hash)){
|
||||
console.log("using cached version");
|
||||
ref.extract(hash,targetFolder,callback);
|
||||
} else {
|
||||
console.log("Downloading...")
|
||||
Download(url,cacheFolder + '/' + hash,{ extract: true, strip: 1 })
|
||||
.then(() => {
|
||||
console.log('done!');
|
||||
ref.extract(hash,targetFolder,callback);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error(err + " : Unable to download or extract " + url);
|
||||
callback(err);
|
||||
});
|
||||
/*Download({ extract: true, strip: 1 })
|
||||
.get( url )
|
||||
.dest( cacheFolder + '/' + hash )
|
||||
.use(downloadStatus())
|
||||
.run( function(err,files){
|
||||
if( err ) {
|
||||
console.error("Unable to download or extract " + url);
|
||||
callback(err);
|
||||
}
|
||||
ref.extract(hash,targetFolder,callback);
|
||||
});*/
|
||||
}
|
||||
}
|
||||
|
||||
this.extract = function(hash, targetFolder, callback){
|
||||
var url = cacheFolder + '/' + hash;
|
||||
fsx.copySync(url, targetFolder);
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = Cache;
|
||||
Reference in New Issue
Block a user