Add JAR extraction logic, basic dir cleaning
https://www.youtube.com/watch?v=AXwGVXD7qEQ
This commit is contained in:
parent
35ac2244c3
commit
074dd68a66
@ -6,11 +6,13 @@ import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipFile;
|
||||
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -78,10 +80,11 @@ public class LiveAtlasMain extends JavaPlugin {
|
||||
String version = this.getDescription().getVersion();
|
||||
|
||||
try {
|
||||
Path dynmapWebFolderPath = Paths.get(dynmap.getDataFolder().toURI()).resolve("web");
|
||||
File sourceDirectory = Paths.get(this.getDataFolder().toURI()).toFile();
|
||||
File destinationDirectory = dynmapWebFolderPath.toFile();
|
||||
copyDirectory(sourceDirectory, destinationDirectory);
|
||||
File liveAtlasFolderPath = this.getDataFolder();
|
||||
deleteDir(liveAtlasFolderPath);
|
||||
copyJarFile(this.getFile().getAbsoluteFile().toString());
|
||||
File dynmapWebFolderPath = Paths.get(dynmap.getDataFolder().toURI()).resolve("web").toFile();
|
||||
copyDirectory(liveAtlasFolderPath, dynmapWebFolderPath);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("LiveAtlas v" + version + " installation failed", e);
|
||||
}
|
||||
@ -92,6 +95,53 @@ public class LiveAtlasMain extends JavaPlugin {
|
||||
public void onDisable() {
|
||||
}
|
||||
|
||||
public void deleteDir(File file) {
|
||||
File[] list = file.listFiles();
|
||||
if (list != null) {
|
||||
for (File child : list) {
|
||||
deleteDir(child);
|
||||
}
|
||||
}
|
||||
file.delete();
|
||||
}
|
||||
|
||||
public void copyJarFile(String jarfile) throws IOException { /* Open JAR as ZIP */
|
||||
ZipFile zf = null;
|
||||
FileOutputStream fos = null;
|
||||
InputStream ins = null;
|
||||
byte[] buf = new byte[2048];
|
||||
String n = null;
|
||||
|
||||
File f;
|
||||
zf = new ZipFile(jarfile);
|
||||
Enumeration<? extends ZipEntry> e = zf.entries();
|
||||
while (e.hasMoreElements()) {
|
||||
ZipEntry ze = e.nextElement();
|
||||
n = ze.getName();
|
||||
f = new File(this.getDataFolder(), n);
|
||||
if (n.startsWith("io/")) continue;
|
||||
if (n.startsWith("META-INF/")) continue;
|
||||
if (n == "plugin.yml") continue;
|
||||
if (ze.isDirectory()) {
|
||||
f.mkdirs();
|
||||
}
|
||||
else {
|
||||
f.getParentFile().mkdirs();
|
||||
fos = new FileOutputStream(f);
|
||||
ins = zf.getInputStream(ze);
|
||||
int len;
|
||||
while ((len = ins.read(buf)) >= 0) {
|
||||
fos.write(buf, 0, len);
|
||||
}
|
||||
ins.close();
|
||||
ins = null;
|
||||
fos.close();
|
||||
fos = null;
|
||||
}
|
||||
}
|
||||
zf.close();
|
||||
}
|
||||
|
||||
private static void copyDirectory(File sourceDirectory, File destinationDirectory) throws IOException {
|
||||
if (!destinationDirectory.exists()) {
|
||||
destinationDirectory.mkdir();
|
||||
@ -102,9 +152,6 @@ public class LiveAtlasMain extends JavaPlugin {
|
||||
}
|
||||
|
||||
public static void copyDirectoryCompatibityMode(File sourceDirectory, File destinationDirectory) throws IOException {
|
||||
if (sourceDirectory.getName() == "io" || sourceDirectory.getName() == "META-INF") {
|
||||
return;
|
||||
}
|
||||
info(sourceDirectory.getName());
|
||||
if (sourceDirectory.isDirectory()) {
|
||||
copyDirectory(sourceDirectory, destinationDirectory);
|
||||
@ -114,9 +161,6 @@ public class LiveAtlasMain extends JavaPlugin {
|
||||
}
|
||||
|
||||
private static void copyFile(File sourceFile, File destinationFile) throws IOException {
|
||||
if (sourceFile.getName() == "plugin.yml") {
|
||||
return;
|
||||
}
|
||||
try (InputStream in = new FileInputStream(sourceFile);
|
||||
OutputStream out = new FileOutputStream(destinationFile)) {
|
||||
byte[] buf = new byte[1024];
|
||||
@ -126,5 +170,4 @@ public class LiveAtlasMain extends JavaPlugin {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
"preview": "vite preview --port 8082",
|
||||
"test": "jest",
|
||||
"clean": "rimraf dist java/target/resources",
|
||||
"copy": "cpy plugin.yml dist java/target/resources --parents",
|
||||
"copy": "cpy plugin.yml dist java/target/resources --parents && rimraf java/target/resources/assets/*.svg",
|
||||
"build": "npm run clean && vue-tsc --noEmit && vite build --out-dir dist && npm-run-all copy mvn",
|
||||
"lint": "eslint --ext .ts,.vue src",
|
||||
"lint:fix": "eslint -ext .ts,.vue src --fix",
|
||||
|
Loading…
Reference in New Issue
Block a user