Add flag to optionally overwrite files with create

This commit is contained in:
Rene Pfeuffer
2019-08-29 17:22:50 +02:00
parent b65b787763
commit f02dec5cc6
6 changed files with 156 additions and 31 deletions

View File

@@ -8,9 +8,14 @@ import sonia.scm.repository.Repository;
import java.io.File;
import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
import static sonia.scm.AlreadyExistsException.alreadyExists;
import static sonia.scm.ContextEntry.ContextBuilder.entity;
public class GitModifyCommand extends AbstractGitCommand implements ModifyCommand {
private final GitWorkdirFactory workdirFactory;
@@ -48,10 +53,18 @@ public class GitModifyCommand extends AbstractGitCommand implements ModifyComman
}
@Override
public void create(String toBeCreated, File file) throws IOException {
public void create(String toBeCreated, File file, boolean overwrite) throws IOException {
Path targetFile = new File(workDir, toBeCreated).toPath();
Files.createDirectories(targetFile.getParent());
Files.copy(file.toPath(), targetFile);
if (overwrite) {
Files.copy(file.toPath(), targetFile, REPLACE_EXISTING);
} else {
try {
Files.copy(file.toPath(), targetFile);
} catch (FileAlreadyExistsException e) {
throw alreadyExists(entity("file", toBeCreated).in("branch", request.getBranch()).in(context.getRepository()));
}
}
try {
getClone().add().addFilepattern(toBeCreated).call();
} catch (GitAPIException e) {