|
|
@@ -1,15 +1,22 @@
|
|
|
package com.x.server.console.action;
|
|
|
|
|
|
import java.io.File;
|
|
|
+import java.nio.file.Files;
|
|
|
+import java.nio.file.Path;
|
|
|
+import java.nio.file.Paths;
|
|
|
import java.util.Date;
|
|
|
+import java.util.stream.Stream;
|
|
|
+
|
|
|
+import org.apache.commons.io.FileUtils;
|
|
|
+import org.apache.commons.io.filefilter.FileFilterUtils;
|
|
|
+import org.apache.commons.io.filefilter.IOFileFilter;
|
|
|
+import org.apache.commons.io.filefilter.WildcardFileFilter;
|
|
|
|
|
|
import com.x.base.core.project.config.Config;
|
|
|
import com.x.base.core.project.logger.Logger;
|
|
|
import com.x.base.core.project.logger.LoggerFactory;
|
|
|
import com.x.base.core.project.tools.JarTools;
|
|
|
|
|
|
-import org.apache.commons.io.FileUtils;
|
|
|
-
|
|
|
/**
|
|
|
* @author Zhou Rui
|
|
|
*/
|
|
|
@@ -31,11 +38,9 @@ public class UpdateFile extends ActionBase {
|
|
|
logger.print("zip file not exist, path:{}.", path);
|
|
|
return false;
|
|
|
}
|
|
|
- // if (backup) {
|
|
|
- // this.backup();
|
|
|
- // }
|
|
|
logger.print("update from file:{}.", file.getAbsolutePath());
|
|
|
this.unzip(file);
|
|
|
+ this.updateShell();
|
|
|
logger.print("update completed in {} seconds, restart server to continue update.",
|
|
|
((new Date()).getTime() - start.getTime()) / 1000);
|
|
|
return true;
|
|
|
@@ -45,32 +50,31 @@ public class UpdateFile extends ActionBase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // private void backup() throws Exception {
|
|
|
- // File dir = Config.dir_local_backup(true);
|
|
|
- // String tag = DateTools.compact(new Date());
|
|
|
- // File dest = new File(dir, tag + ".zip");
|
|
|
- // logger.print("backup current version to {}.", dest.getAbsolutePath());
|
|
|
- // List<File> files = new ArrayList<>();
|
|
|
- // files.add(Config.dir_commons());
|
|
|
- // files.add(Config.dir_config());
|
|
|
- // files.add(Config.dir_configSample());
|
|
|
- // files.add(Config.dir_localSample());
|
|
|
- // files.add(Config.dir_jvm());
|
|
|
- // files.add(Config.dir_servers());
|
|
|
- // files.add(Config.dir_store());
|
|
|
- // files.add(Config.dir_dynamic());
|
|
|
- // files.add(Config.dir_custom());
|
|
|
- // files.add(new File(Config.base(), "console.jar"));
|
|
|
- // files.add(new File(Config.base(), "index.html"));
|
|
|
- // files.add(new File(Config.base(), "version.o2"));
|
|
|
- // FileFilter fileFilter = new RegexFileFilter(
|
|
|
- // "^(start_|stop_|console_|service_)(aix|windows|linux|macos).(sh|bat)$");
|
|
|
- // for (File _f : new File(Config.base()).listFiles(fileFilter)) {
|
|
|
- // files.add(_f);
|
|
|
- // }
|
|
|
- // JarTools.jar(files, dest);
|
|
|
- // logger.print("backup current version completed.");
|
|
|
- // }
|
|
|
+ private void updateShell() throws Exception {
|
|
|
+ IOFileFilter filter = FileFilterUtils.or(new WildcardFileFilter("start_*.sh"),
|
|
|
+ new WildcardFileFilter("start_*.bat"), new WildcardFileFilter("stop_*.sh"),
|
|
|
+ new WildcardFileFilter("stop_*.bat"), new WildcardFileFilter("console_*.sh"),
|
|
|
+ new WildcardFileFilter("console_*.bat"), new WildcardFileFilter("service_*.bat"));
|
|
|
+ try (Stream<Path> stream = Files.list(Config.dir_local_update().toPath().resolve(Paths.get("o2server")))) {
|
|
|
+ stream.filter(o -> filter.accept(o.toFile())).forEach(o -> {
|
|
|
+ try {
|
|
|
+ copy(o);
|
|
|
+ Files.delete(o);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void copy(Path source) throws Exception {
|
|
|
+ Path target = Paths.get(Config.base(), source.getFileName().toString());
|
|
|
+ if (Files.exists(target)) {
|
|
|
+ Files.write(target, Files.readAllLines(source));
|
|
|
+ } else {
|
|
|
+ Files.copy(source, target);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
private void unzip(File file) throws Exception {
|
|
|
File dir = Config.dir_local_update(true);
|