| borgbutler-core/build.gradle | ●●●●● patch | view | raw | blame | history | |
| borgbutler-core/lombok.config | ●●●●● 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/BorgRepo.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/main/java/de/micromata/borgbutler/json/JsonUtils.java | ●●●●● patch | view | raw | blame | history | |
| gradle/wrapper/gradle-wrapper.properties | ●●●●● 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