| .gitignore | ●●●●● patch | view | raw | blame | history | |
| borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | ●●●●● patch | view | raw | blame | history | |
| borgbutler-core/src/main/java/de/micromata/borgbutler/Main.java | ●●●●● patch | view | raw | blame | history | |
| borgbutler-core/src/main/java/de/micromata/borgbutler/config/BorgRepoConfig.java | ●●●●● patch | view | raw | blame | history | |
| borgbutler-core/src/main/java/de/micromata/borgbutler/config/Configuration.java | ●●●●● patch | view | raw | blame | history | |
| borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java | ●●●●● patch | view | raw | blame | history | |
| borgbutler-core/src/test/java/de/micromata/borgbutler/BorgCommandsTest.java | ●●●●● patch | view | raw | blame | history |
.gitignore
@@ -36,3 +36,4 @@ *.iml *.iws borgbutler-core/build borgbutler-core/out borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
New file @@ -0,0 +1,59 @@ package de.micromata.borgbutler; import de.micromata.borgbutler.config.BorgRepoConfig; import de.micromata.borgbutler.config.Configuration; import de.micromata.borgbutler.config.ConfigurationHandler; import org.apache.commons.exec.*; import org.apache.commons.exec.environment.EnvironmentUtils; import org.apache.commons.io.output.ByteArrayOutputStream; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.nio.charset.Charset; import java.util.Map; public class BorgCommands { private static Logger log = LoggerFactory.getLogger(BorgCommands.class); public static String info(BorgRepoConfig repoConfig) { try { //CommandLine cmdLine = new CommandLine("/Users/kai/bin/test.sh"); //CommandLine cmdLine = new CommandLine("/Users/kai/bin/borgbackup-hetzner.sh"); CommandLine cmdLine = new CommandLine(ConfigurationHandler.getConfiguration().getBorgCommand()); cmdLine.addArgument("info"); cmdLine.addArgument(repoConfig.getRepo()); DefaultExecutor executor = new DefaultExecutor(); //executor.setExitValue(1); //ExecuteWatchdog watchdog = new ExecuteWatchdog(60000); //executor.setWatchdog(watchdog); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); //ExecuteResultHandler handler = new DefaultExecuteResultHandler(); PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream); executor.setStreamHandler(streamHandler); log.info("Executing '" + cmdLine.getExecutable() + " " + StringUtils.join(cmdLine.getArguments(), " ") + "'..."); executor.execute(cmdLine, getEnvironment(repoConfig)); return (outputStream.toString(Charset.forName("UTF-8"))); } catch (IOException ex) { log.error("Error while executing borg command: " + ex.getMessage(), ex); return null; } } public static Map<String, String> getEnvironment(BorgRepoConfig repoConfig) throws IOException { Configuration config = ConfigurationHandler.getConfiguration(); Map<String, String> env = EnvironmentUtils.getProcEnvironment(); addEnvironmentVariable(env, "BORG_REPO", repoConfig.getRepo()); addEnvironmentVariable(env, "BORG_RSH", repoConfig.getRsh()); addEnvironmentVariable(env, "BORG_PASSPHRASE", repoConfig.getPassphrase()); addEnvironmentVariable(env, "BORG_PASSCOMMAND", repoConfig.getPasswordCommand()); return env; } private static void addEnvironmentVariable(Map<String, String> env, String name, String value) { if (StringUtils.isNotBlank(value)) { EnvironmentUtils.addVariableToEnvironment(env, name + "=" + value); } } } borgbutler-core/src/main/java/de/micromata/borgbutler/Main.java
@@ -1,7 +1,16 @@ package de.micromata.borgbutler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Main { private static Logger log = LoggerFactory.getLogger(Main.class); public static void main(String[] args) { System.out.println("Hello world."); new Main().start(args); } private void start(String[] args) { log.info("Hello Borgbutler..."); } } borgbutler-core/src/main/java/de/micromata/borgbutler/config/BorgRepoConfig.java
File was renamed from borgbutler-core/src/main/java/de/micromata/borgbutler/config/BorgRepo.java @@ -3,7 +3,7 @@ import lombok.Getter; import lombok.Setter; public class BorgRepo { public class BorgRepoConfig { @Getter @Setter private String name; @Getter @Setter @@ -11,7 +11,7 @@ @Getter @Setter private String rsh; @Getter @Setter private String password; private String passphrase; @Getter @Setter private String passwordCommand; } borgbutler-core/src/main/java/de/micromata/borgbutler/config/Configuration.java
@@ -7,9 +7,11 @@ public class Configuration { @Getter private List<BorgRepo> repos = new ArrayList<>(); private String borgCommand = "borg"; @Getter private List<BorgRepoConfig> repos = new ArrayList<>(); public void add(BorgRepo repo) { public void add(BorgRepoConfig repo) { repos.add(repo); } } borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java
@@ -1,7 +1,6 @@ package de.micromata.borgbutler.config; import de.micromata.borgbutler.json.JsonUtils; import lombok.AccessLevel; import lombok.Getter; import org.apache.commons.io.FileUtils; import org.slf4j.Logger; @@ -16,9 +15,8 @@ private static ConfigurationHandler instance = new ConfigurationHandler(); private static final String CONFIG_FILENAME = ".borgbutler.json"; private static final String CONFIG_BACKUP_FILENAME = ".borgbutler-bak.json"; @Getter(AccessLevel.PACKAGE) @Getter private File configFile; @Getter(AccessLevel.PACKAGE) private File backupConfigFile; private Configuration configuration = new Configuration(); borgbutler-core/src/test/java/de/micromata/borgbutler/BorgCommandsTest.java
New file @@ -0,0 +1,26 @@ package de.micromata.borgbutler; import de.micromata.borgbutler.config.BorgRepoConfig; import de.micromata.borgbutler.config.Configuration; import de.micromata.borgbutler.config.ConfigurationHandler; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class BorgCommandsTest { private static Logger log = LoggerFactory.getLogger(BorgCommandsTest.class); @Test void infoTest() { ConfigurationHandler configHandler = ConfigurationHandler.getInstance(); configHandler.read(); Configuration config = ConfigurationHandler.getConfiguration(); if (config.getRepos().size() == 0) { log.info("No repos configured. Please configure repos first in: " + configHandler.getConfigFile().getAbsolutePath()); return; } for (BorgRepoConfig repo : config.getRepos()) { log.info("Processing repo '" + repo + "'"); log.info(BorgCommands.info(repo)); } } }