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

...
Kai Reinhard
08.16.2018 ddb545044b8cbfd98b361faea6c78062aa4e3133
...
5 files added
3 files modified
162 ■■■■■ changed files
borgbutler-core/build.gradle 4 ●●●● patch | view | raw | blame | history
borgbutler-core/lombok.config 1 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/Main.java 9 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/config/BorgRepo.java 17 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/config/Configuration.java 14 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java 49 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/JsonUtils.java 65 ●●●●● patch | view | raw | blame | history
gradle/wrapper/gradle-wrapper.properties 3 ●●●● patch | view | raw | blame | history
borgbutler-core/build.gradle
@@ -8,6 +8,10 @@
dependencies {
    compile group: 'commons-io', name: 'commons-io', version: '2.6'
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.8.1'
    compile group: 'org.apache.commons', name: 'commons-exec', version: '1.3'
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.6'
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.6'
    compileOnly "org.projectlombok:lombok:1.18.4"
    testCompileOnly "org.projectlombok:lombok:1.18.4"
}
borgbutler-core/lombok.config
New file
@@ -0,0 +1 @@
lombok.accessors.chain=true
borgbutler-core/src/main/java/de/micromata/borgbutler/Main.java
@@ -1,7 +1,16 @@
package de.micromata.borgbutler;
import de.micromata.borgbutler.config.BorgRepo;
import de.micromata.borgbutler.config.Configuration;
import de.micromata.borgbutler.config.ConfigurationHandler;
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world.");
        Configuration configuration = ConfigurationHandler.getConfiguration();
        BorgRepo repo = new BorgRepo();
        repo.setName("Hetzner-cloud").setPasswordCommand("dslfds").setRepo("sdfls");
        configuration.add(repo);
        ConfigurationHandler.getInstance().write();
    }
}
borgbutler-core/src/main/java/de/micromata/borgbutler/config/BorgRepo.java
New file
@@ -0,0 +1,17 @@
package de.micromata.borgbutler.config;
import lombok.Getter;
import lombok.Setter;
public class BorgRepo {
    @Getter @Setter
    private String name;
    @Getter @Setter
    private String repo;
    @Getter @Setter
    private String rsh;
    @Getter @Setter
    private String password;
    @Getter @Setter
    private String passwordCommand;
}
borgbutler-core/src/main/java/de/micromata/borgbutler/config/Configuration.java
New file
@@ -0,0 +1,14 @@
package de.micromata.borgbutler.config;
import lombok.Getter;
import java.util.List;
public class Configuration {
    @Getter
    private List<BorgRepo> repos;
    public void add(BorgRepo repo) {
        repos.add(repo);
    }
}
borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java
New file
@@ -0,0 +1,49 @@
package de.micromata.borgbutler.config;
import de.micromata.borgbutler.json.JsonUtils;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
public class ConfigurationHandler {
    private static Logger log = LoggerFactory.getLogger(ConfigurationHandler.class);
    private static ConfigurationHandler instance = new ConfigurationHandler();
    private static final String CONFIG_FILENAME = ".borgbutler.json";
    private File configFile;
    private Configuration configuration = new Configuration();
    public static ConfigurationHandler getInstance() {
        return instance;
    }
    public static Configuration getConfiguration() {
        return instance.configuration;
    }
    public void read() {
        try {
            String json = FileUtils.readFileToString(configFile, Charset.forName("UTF-8"));
            this.configuration = JsonUtils.fromJson(Configuration.class, json);
        } catch (IOException ex) {
            log.error("Error while trying to read from config file: " + configFile.getAbsolutePath() + ": " + ex.getMessage(), ex);
            return;
        }
    }
    public void write() {
        String json = JsonUtils.toJson(configuration);
        try {
            FileUtils.write(configFile, json, Charset.forName("UTF-8"));
        } catch (IOException ex) {
            log.error("Error while trying to write config file: " + configFile.getAbsolutePath() + ": " + ex.getMessage(), ex);
        }
    }
    private ConfigurationHandler() {
        configFile = new File(System.getProperty("user.home"), CONFIG_FILENAME);
    }
}
borgbutler-core/src/main/java/de/micromata/borgbutler/json/JsonUtils.java
New file
@@ -0,0 +1,65 @@
package de.micromata.borgbutler.json;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.StringWriter;
public class JsonUtils {
    private static Logger log = LoggerFactory.getLogger(JsonUtils.class);
    public static String toJson(Object obj) {
        return toJson(obj, false);
    }
    /**
     * @param obj
     * @param prettyPrinter If true, the json output will be pretty printed (human readable with new lines and indenting).
     * @return
     */
    public static String toJson(Object obj, boolean prettyPrinter) {
        if (obj == null) {
            return "";
        }
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        try {
            if (prettyPrinter) {
                return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
            } else {
                StringWriter writer = new StringWriter();
                objectMapper.writeValue(writer, obj);
                return writer.toString();
            }
        } catch (IOException ex) {
            log.error(ex.getMessage(), ex);
            return "";
        }
    }
    public static <T> T fromJson(Class<T> clazz, String json) {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        try {
            return objectMapper.readValue(json, clazz);
        } catch (IOException ex) {
            log.error(ex.getMessage(), ex);
            return null;
        }
    }
    public static <T> T fromJson(final TypeReference<T> type, final String json) {
        try {
            T data = new ObjectMapper().readValue(json, type);
            return data;
        } catch (Exception ex) {
            log.error("Json: '" + json + "': " + ex.getMessage(), ex);
        }
        return null;
    }
}
gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,6 @@
#Fri Dec 07 23:41:31 CET 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip