From 19732b785f222871a76f931213587b2c04cc1e10 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Fri, 14 Dec 2018 21:56:53 +0000
Subject: [PATCH] ...
---
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | 41 +++++++++++++++++++++++++++++------------
1 files changed, 29 insertions(+), 12 deletions(-)
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
index cca1438..2b14b34 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -8,9 +8,12 @@
import de.micromata.borgbutler.json.JsonUtils;
import de.micromata.borgbutler.json.borg.*;
import de.micromata.borgbutler.utils.DateUtils;
-import org.apache.commons.exec.*;
+import org.apache.commons.exec.CommandLine;
+import org.apache.commons.exec.DefaultExecutor;
+import org.apache.commons.exec.PumpStreamHandler;
import org.apache.commons.exec.environment.EnvironmentUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,10 +29,10 @@
private static Logger log = LoggerFactory.getLogger(BorgCommands.class);
/**
- * Executes borg info repository
+ * Executes borg info repository.
*
* @param repoConfig
- * @return Parsed repo config returned by Borg command.
+ * @return Parsed repo config returned by Borg command (without archives).
*/
public static Repository info(BorgRepoConfig repoConfig) {
String json = execute(repoConfig, "info", repoConfig.getRepo(), "--json");
@@ -37,27 +40,42 @@
return null;
}
BorgRepoInfo repoInfo = JsonUtils.fromJson(BorgRepoInfo.class, json);
- repoInfo.setOriginalJson(json);
- Repository repository = new Repository();
BorgRepository borgRepository = repoInfo.getRepository();
- repository.setId(borgRepository.getId())
+ Repository repository = new Repository()
+ .setId(borgRepository.getId())
+ .setName(repoConfig.getRepo())
+ .setDisplayName(repoConfig.getDisplayName())
.setLastModified(DateUtils.get(borgRepository.getLastModified()))
.setLocation(borgRepository.getLocation())
- .setName(borgRepository.getName())
.setCache(repoInfo.getCache())
.setEncryption(repoInfo.getEncryption())
.setSecurityDir(repoInfo.getSecurityDir());
return repository;
}
- public static BorgRepoList list(BorgRepoConfig repoConfig) {
- String json = execute(repoConfig, "list", repoConfig.getRepo(), "--json");
+ /**
+ * Executes borg list repository.
+ * The given repository will be cloned and archives will be added.
+ * The field {@link Repository#getLastModified()} of masterRepository will be updated.
+ *
+ * @param masterRepository Repository without archives.
+ * @return Parsed repo config returned by Borg command including archives.
+ */
+ public static Repository list(BorgRepoConfig repoConfig, Repository masterRepository) {
+ String json = execute(repoConfig, "list", masterRepository.getName(), "--json");
if (json == null) {
+ log.error("Can't load archives from repo '" + masterRepository.getName() + "'.");
return null;
}
BorgRepoList repoList = JsonUtils.fromJson(BorgRepoList.class, json);
- repoList.setOriginalJson(json);
- return repoList;
+ if (repoList == null) {
+ log.error("Can't load archives from repo '" + masterRepository.getName() + "'.");
+ return null;
+ }
+ masterRepository.setLastModified(repoList.getRepository().getLastModified());
+ Repository repository = ObjectUtils.clone(masterRepository)
+ .setArchives(repoList.getArchives());
+ return repository;
}
/**
@@ -73,7 +91,6 @@
return null;
}
BorgArchiveInfo archiveInfo = JsonUtils.fromJson(BorgArchiveInfo.class, json);
- archiveInfo.setOriginalJson(json);
return archiveInfo;
}
--
Gitblit v1.10.0