mirror of https://github.com/micromata/borgbackup-butler.git

...
Kai Reinhard
08.55.2018 fd977dfd39e74eb2bb436b8d7eff26c323e0d393
...
2 files added
1 files renamed
4 files modified
111 ■■■■■ changed files
.gitignore 1 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java 59 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/Main.java 11 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/config/BorgRepoConfig.java 4 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/config/Configuration.java 6 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java 4 ●●● patch | view | raw | blame | history
borgbutler-core/src/test/java/de/micromata/borgbutler/BorgCommandsTest.java 26 ●●●●● 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));
        }
    }
}