77 lines
2.5 KiB
JavaScript
77 lines
2.5 KiB
JavaScript
/*
|
|
This file is the first and only file executed directly from the Java Plugin.
|
|
*/
|
|
var __scboot = null;
|
|
(function(){
|
|
var File = java.io.File
|
|
,FileReader = java.io.FileReader
|
|
,FileOutputStream = java.io.FileOutputStream
|
|
,ZipInputStream = java.util.zip.ZipInputStream
|
|
,jsPlugins = new File('plugins/scriptcraft')
|
|
,initScript = 'lib/scriptcraft.js';
|
|
|
|
var unzip = function(path, logger, plugin) {
|
|
var zis = new ZipInputStream(plugin.getResource(path))
|
|
, entry , reason = null, unzipFile = false, zTime = 0
|
|
, fTime = 0, fout = null, c, newFile;
|
|
|
|
while ( ( entry = zis.nextEntry ) != null ) {
|
|
|
|
newFile = new File(jsPlugins, entry.name);
|
|
if (entry.isDirectory()){
|
|
newFile.mkdirs();
|
|
zis.closeEntry();
|
|
continue;
|
|
}
|
|
reason = null;
|
|
zTime = entry.time;
|
|
unzipFile = false;
|
|
if (!newFile.exists()) {
|
|
reason = 'NE';
|
|
unzipFile = true;
|
|
}else{
|
|
fTime = newFile.lastModified();
|
|
if (zTime > fTime) {
|
|
reason = ((zTime - fTime) / 3600000) + "h";
|
|
unzipFile = true;
|
|
}
|
|
}
|
|
if (unzipFile) {
|
|
logger.info('Unzipping ' + newFile.canonicalPath + ' (' + reason + ')' );
|
|
fout = new FileOutputStream(newFile);
|
|
for (c = zis.read(); c != -1; c = zis.read()) {
|
|
fout.write(c);
|
|
}
|
|
fout.close();
|
|
}
|
|
zis.closeEntry();
|
|
}
|
|
zis.close();
|
|
};
|
|
|
|
__scboot = function ( plugin, engine )
|
|
{
|
|
var logger = plugin.logger, cfg = plugin.config
|
|
,cfgName, initScriptFile = new File(jsPlugins,initScript)
|
|
,zips = ['lib','plugins','modules']
|
|
,i = 0 ,len = zips.length;
|
|
|
|
if (!jsPlugins.exists()){
|
|
logger.info('Directory ' + jsPlugins.canonicalPath + ' does not exist.');
|
|
logger.info('Initializing ' + jsPlugins.canonicalPath + ' directory with contents from plugin archive.');
|
|
jsPlugins.mkdirs();
|
|
}
|
|
|
|
for (i = 0; i < len;i++){
|
|
cfgName = 'extract-js.' + zips[i];
|
|
if (cfg.getBoolean(cfgName)){
|
|
unzip( zips[i] + '.zip',logger,plugin);
|
|
}
|
|
}
|
|
plugin.saveDefaultConfig();
|
|
|
|
engine.eval(new FileReader(initScriptFile));
|
|
__onEnable(engine, plugin, initScriptFile);
|
|
};
|
|
})();
|