/*
* SK's Minecraft Launcher
* Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors
* Please see LICENSE.txt for license information.
*/
package com.skcraft.launcher.creator.controller.task;
import com.skcraft.concurrency.ProgressObservable;
import com.skcraft.launcher.LauncherException;
import com.skcraft.launcher.LauncherUtils;
import com.skcraft.launcher.builder.ServerCopyExport;
import com.skcraft.launcher.creator.dialog.DeployServerDialog.DeployOptions;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
public class ServerDeploy implements Callable<ServerDeploy>, ProgressObservable {
private final File srcDir;
private final DeployOptions options;
public ServerDeploy(File srcDir, DeployOptions options) {
this.srcDir = srcDir;
this.options = options;
}
@Override
public ServerDeploy call() throws Exception {
File modsDir = new File(options.getDestDir(), "mods");
if (options.isCleanMods() && modsDir.isDirectory()) {
List<File> failures = new ArrayList<File>();
try {
LauncherUtils.interruptibleDelete(modsDir, failures);
} catch (IOException e) {
Thread.sleep(1000);
LauncherUtils.interruptibleDelete(modsDir, failures);
}
if (failures.size() > 0) {
throw new LauncherException(failures.size() + " failed to delete", "There were " + failures.size() + " failures during cleaning.");
}
}
String[] args = {
"--source", srcDir.getAbsolutePath(),
"--dest", options.getDestDir().getAbsolutePath()
};
ServerCopyExport.main(args);
return this;
}
@Override
public double getProgress() {
return -1;
}
@Override
public String getStatus() {
return "Deploying server files...";
}
}