/*
* Copyright (c) 2014 Dennis Fischer.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0+
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors: Dennis Fischer
*/
package de.chaosfisch.uploader;
import com.google.common.base.Charsets;
import com.google.common.base.Strings;
import de.chaosfisch.uploader.cli.CLIUploader;
import de.chaosfisch.uploader.gui.GUIUploader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Date;
import java.util.Map;
import java.util.Properties;
import static com.google.common.io.Files.newReader;
public final class SimpleJavaYoutubeUploader {
private static final Logger LOGGER = LoggerFactory.getLogger(SimpleJavaYoutubeUploader.class);
private static final String COMMANDLINE_ARGUMENT = "-cli";
private SimpleJavaYoutubeUploader() {
}
public static void main(final String[] args) {
Toolkit.getDefaultToolkit();
loadVMOptions();
logVMInfo();
final Path launcherUpdatePath = Paths.get("")
.toAbsolutePath()
.resolve(ApplicationData.VERSION)
.resolve("launcher/");
LOGGER.info(launcherUpdatePath.toString());
if (Files.exists(launcherUpdatePath)) {
LOGGER.info("Launcher update exists");
final Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
LOGGER.info("Copying launcher");
Directories.copyDirectory(launcherUpdatePath, Paths.get("").toAbsolutePath());
LOGGER.info("Deleting existing launcher update");
Directories.delete(launcherUpdatePath);
} catch (InterruptedException | IOException e) {
LOGGER.error("Exception in updating launcher", e);
}
}
});
thread.start();
}
if (-1 == Arrays.binarySearch(args, COMMANDLINE_ARGUMENT)) {
GUIUploader.initialize(args);
} else {
CLIUploader.initialize();
}
}
private static void logVMInfo() {
LOGGER.info("############################# VM INFO #############################");
LOGGER.info("# OS Name: " + System.getProperty("os.name"));
LOGGER.info("# OS Arch: " + System.getProperty("os.arch"));
LOGGER.info("# OS Vers: " + System.getProperty("os.version"));
LOGGER.info("# Java Vers: " + System.getProperty("java.version"));
LOGGER.info("# Java Home: " + System.getProperty("java.home"));
LOGGER.info("# User Name: " + System.getProperty("user.name"));
LOGGER.info("# User Home: " + System.getProperty("user.home"));
LOGGER.info("# Cur dir: " + System.getProperty("user.dir"));
LOGGER.info("# Date: " + new Date().toString());
LOGGER.info("# Data dir: " + ApplicationData.DATA_DIR);
LOGGER.info("# Version: " + ApplicationData.VERSION);
LOGGER.info("####################################################################");
}
private static void loadVMOptions() {
final File file = new File("SimpleJavaYoutubeUploader.vmoptions");
if (!file.exists()) {
return;
}
try {
final Properties custom = new Properties();
custom.load(newReader(file, Charsets.UTF_8));
for (final Map.Entry<Object, Object> entry : custom.entrySet()) {
if (!Strings.isNullOrEmpty(entry.getValue().toString())) {
System.setProperty(entry.getKey().toString(), entry.getValue().toString());
}
}
} catch (final Exception e) {
final Logger logger = LoggerFactory.getLogger(SimpleJavaYoutubeUploader.class);
logger.warn("VMOptions ignored", e);
}
}
}