Merge branch 'master' into kotlin_rewrite
# Conflicts: # src/main/java/de/chaos/swlnmngr/Main.java # src/main/java/de/chaos/swlnmngr/UpdateChecker.java
Dieser Commit ist enthalten in:
Commit
abafded876
12
pom.xml
12
pom.xml
@ -118,12 +118,6 @@
|
||||
<artifactId>json</artifactId>
|
||||
<version>20211205</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.22</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-cli</groupId>
|
||||
<artifactId>commons-cli</artifactId>
|
||||
@ -150,9 +144,9 @@
|
||||
<version>2.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.vatbub</groupId>
|
||||
<artifactId>mslinks</artifactId>
|
||||
<version>1.0.6.2</version>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.11.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
|
@ -2,7 +2,6 @@ package de.chaos.swlnmngr;
|
||||
|
||||
import de.chaos.swlnmngr.config.CLIConfig;
|
||||
import de.chaos.swlnmngr.route.Router;
|
||||
import lombok.Getter;
|
||||
import org.apache.logging.log4j.Level;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@ -13,7 +12,6 @@ import java.util.Arrays;
|
||||
public class Main {
|
||||
|
||||
private static final Logger logger = LogManager.getLogger(Main.class);
|
||||
@Getter
|
||||
private static String[] allArgs;
|
||||
|
||||
public static void main(String[] args) {
|
||||
@ -36,4 +34,8 @@ public class Main {
|
||||
public static Logger getLogger() {
|
||||
return logger;
|
||||
}
|
||||
|
||||
public static String[] getAllArgs() {
|
||||
return allArgs;
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,8 @@ import de.chaos.swlnmngr.Main;
|
||||
import org.apache.commons.cli.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
public class CLIConfig {
|
||||
|
||||
@ -12,6 +14,7 @@ public class CLIConfig {
|
||||
public static final File CONFIG;
|
||||
public static final File INSTALL_DIR;
|
||||
public static final String[] ARGS;
|
||||
public static final boolean INSTALL_DIR_IS_SET;
|
||||
|
||||
static {
|
||||
Options options = new Options();
|
||||
@ -43,8 +46,21 @@ public class CLIConfig {
|
||||
NO_UPDATE = cli.hasOption("u");
|
||||
if(cli.hasOption("i")) {
|
||||
INSTALL_DIR = new File(cli.getOptionValue("i"));
|
||||
INSTALL_DIR_IS_SET = true;
|
||||
} else {
|
||||
INSTALL_DIR = new File(System.getProperty("user.home"), ".swlnmngr/").toPath().normalize().toFile();
|
||||
try {
|
||||
INSTALL_DIR = new File(CLIConfig.class.getProtectionDomain()
|
||||
.getCodeSource()
|
||||
.getLocation()
|
||||
.toURI()
|
||||
.getPath())
|
||||
.getCanonicalFile()
|
||||
.getParentFile();
|
||||
INSTALL_DIR_IS_SET = false;
|
||||
} catch (IOException | URISyntaxException e) {
|
||||
Main.getLogger().error(e.getMessage(), e);
|
||||
throw new SecurityException(e);
|
||||
}
|
||||
}
|
||||
if(cli.hasOption("c")) {
|
||||
CONFIG = new File(cli.getOptionValue("c"));
|
||||
|
@ -2,7 +2,6 @@ package de.chaos.swlnmngr.route.routes;
|
||||
|
||||
import de.chaos.swlnmngr.Main;
|
||||
import de.chaos.swlnmngr.config.CLIConfig;
|
||||
import mslinks.ShellLink;
|
||||
import org.apache.commons.lang.SystemUtils;
|
||||
import org.json.JSONObject;
|
||||
import org.json.JSONTokener;
|
||||
@ -12,16 +11,13 @@ import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.nio.file.attribute.FileAttribute;
|
||||
import java.nio.file.attribute.PosixFilePermission;
|
||||
import java.util.Objects;
|
||||
|
||||
public class InstallRoute implements Route {
|
||||
|
||||
private static final String[] defaultFiles = new String[] {"default_swlnmngr.bat", "default_swlnmngr.sh"};
|
||||
private static final String[] defaultFiles = new String[] {"default_swlnmngr.bat", "default_swlnmngr.sh", "default_swlnmngr_admin.bat"};
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
@ -31,9 +27,12 @@ public class InstallRoute implements Route {
|
||||
@Override
|
||||
public boolean route(String[] args) {
|
||||
File installDir = CLIConfig.INSTALL_DIR;
|
||||
if (!CLIConfig.INSTALL_DIR_IS_SET) {
|
||||
installDir = new File(System.getProperty("user.home", ".swlnmngr"));
|
||||
}
|
||||
if(!installDir.exists()) {
|
||||
try {
|
||||
Files.createDirectories(CLIConfig.INSTALL_DIR.toPath());
|
||||
Files.createDirectories(installDir.toPath());
|
||||
} catch (IOException e) {
|
||||
Main.getLogger().error("Could not create Install Directory", e);
|
||||
return false;
|
||||
@ -43,8 +42,8 @@ public class InstallRoute implements Route {
|
||||
for (String defaultFile : defaultFiles) {
|
||||
String normalName = defaultFile.replace("default_", "");
|
||||
try {
|
||||
Files.copy(Objects.requireNonNull(InstallRoute.class.getResourceAsStream("/" + defaultFile)), new File(CLIConfig.INSTALL_DIR, normalName).toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
new File(CLIConfig.INSTALL_DIR, normalName).setExecutable(true, true);
|
||||
Files.copy(Objects.requireNonNull(InstallRoute.class.getResourceAsStream("/" + defaultFile)), new File(installDir, normalName).toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
new File(installDir, normalName).setExecutable(true, true);
|
||||
} catch (IOException e) {
|
||||
Main.getLogger().error("Could not create File", e);
|
||||
return false;
|
||||
@ -53,18 +52,16 @@ public class InstallRoute implements Route {
|
||||
|
||||
if(SystemUtils.IS_OS_UNIX) {
|
||||
try {
|
||||
Files.deleteIfExists(new File(CLIConfig.INSTALL_DIR, "swlnmngr").toPath());
|
||||
Files.createSymbolicLink(new File(CLIConfig.INSTALL_DIR, "swlnmngr").toPath(), new File(CLIConfig.INSTALL_DIR, "swlnmngr.sh").toPath());
|
||||
Files.deleteIfExists(new File(installDir, "swlnmngr").toPath());
|
||||
Files.createSymbolicLink(new File(installDir, "swlnmngr").toPath(), new File(installDir, "swlnmngr.sh").toPath());
|
||||
} catch (IOException e) {
|
||||
Main.getLogger().error("Could not create SymLink", e);
|
||||
return false;
|
||||
}
|
||||
} else if(SystemUtils.IS_OS_WINDOWS) {
|
||||
try {
|
||||
ShellLink link = ShellLink.createLink(new File(CLIConfig.INSTALL_DIR, "swlnmngr.bat").getAbsolutePath(), new File(CLIConfig.INSTALL_DIR, "swlnmngr.lnk").getAbsolutePath()).setWorkingDir(CLIConfig.INSTALL_DIR.getAbsolutePath());
|
||||
link.getHeader().getLinkFlags().setRunAsUser();
|
||||
link.saveTo(new File(CLIConfig.INSTALL_DIR, "swlnmngr.lnk").getAbsolutePath());
|
||||
Files.writeString(new File(CLIConfig.INSTALL_DIR, "swlnmngr.bat").toPath(), Files.readString(new File(CLIConfig.INSTALL_DIR, "swlnmngr.bat").toPath()).replace("${iDir}", CLIConfig.INSTALL_DIR.getAbsolutePath()), StandardCharsets.UTF_8, StandardOpenOption.TRUNCATE_EXISTING);
|
||||
Files.writeString(new File(installDir, "swlnmngr.bat").toPath(), Files.readString(new File(installDir, "swlnmngr.bat").toPath()).replace("${iDir}", installDir.getAbsolutePath()), StandardCharsets.UTF_8, StandardOpenOption.TRUNCATE_EXISTING);
|
||||
Files.writeString(new File(installDir, "swlnmngr_admin.bat").toPath(), Files.readString(new File(installDir, "swlnmngr_admin.bat").toPath()).replace("${iDir}", installDir.getAbsolutePath()), StandardCharsets.UTF_8, StandardOpenOption.TRUNCATE_EXISTING);
|
||||
} catch (IOException e) {
|
||||
Main.getLogger().error("Could not create Link", e);
|
||||
return false;
|
||||
@ -109,7 +106,7 @@ public class InstallRoute implements Route {
|
||||
try {
|
||||
File jar = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI());
|
||||
Main.getLogger().debug(jar);
|
||||
Files.copy(jar.toPath(), new File(CLIConfig.INSTALL_DIR, "SteamWarLinkManager.jar").toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
Files.copy(jar.toPath(), new File(installDir, "SteamWarLinkManager.jar").toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
} catch (URISyntaxException e) {
|
||||
Main.getLogger().error("Could parse Jar Location", e);
|
||||
return false;
|
||||
|
@ -2,6 +2,7 @@ package de.chaos.swlnmngr.route.routes;
|
||||
|
||||
import de.chaos.swlnmngr.Main;
|
||||
import de.chaos.swlnmngr.config.Config;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@ -36,7 +37,13 @@ public class LinkRoute implements Route {
|
||||
}
|
||||
File link = new File(projectDir, "lib");
|
||||
try {
|
||||
Files.deleteIfExists(link.toPath());
|
||||
if(link.exists()) {
|
||||
if(link.isDirectory()) {
|
||||
FileUtils.deleteDirectory(link);
|
||||
} else {
|
||||
FileUtils.delete(link);
|
||||
}
|
||||
}
|
||||
Main.getLogger().debug(libsFile);
|
||||
Main.getLogger().debug(link);
|
||||
Path linkPath = Files.createSymbolicLink(link.toPath(), libsFile.toPath());
|
||||
|
@ -1,5 +1,17 @@
|
||||
@echo off
|
||||
:: Variables
|
||||
SET JavaHome=java
|
||||
SET Home=${iDir}
|
||||
|
||||
:: Code
|
||||
title Request Admin
|
||||
|
||||
Net session >nul 2>&1 || (PowerShell start -verb runas '%~0' & exit)
|
||||
|
||||
title SteamWarLinkManager
|
||||
set args=--help
|
||||
set /p args=Arguments:
|
||||
echo %args%
|
||||
java -jar ${iDir}\SteamWarLinkManager.jar %args% %*
|
||||
pause
|
||||
%JavaHome% -jar ${iDir}\SteamWarLinkManager.jar %args% %* -i %Home%
|
||||
pause
|
||||
exit
|
5
src/main/resources/default_swlnmngr_admin.bat
Normale Datei
5
src/main/resources/default_swlnmngr_admin.bat
Normale Datei
@ -0,0 +1,5 @@
|
||||
@echo off
|
||||
|
||||
title Admin
|
||||
runas /noprofile /savecred /user:Admin ${iDir}\swlnmngr.bat
|
||||
exit
|
In neuem Issue referenzieren
Einen Benutzer sperren