diff --git a/src/main/java/de/thehomecraft/Main.java b/src/main/java/de/thehomecraft/Main.java index 01292f4..8bbeaa0 100644 --- a/src/main/java/de/thehomecraft/Main.java +++ b/src/main/java/de/thehomecraft/Main.java @@ -32,13 +32,31 @@ public class Main { } } - public static void main(String[] args) { - if (args.length < 5) { - System.out.println("Useage: TPkgCreator.jar pack "); + public static void main(String[] args) throws Exception { + Scanner scanner = new Scanner(System.in); + if (args.length == 0) { + System.out.println("Usage: TPkgCreator.jar pack "); + System.out.println("Usage: TPkgCreator.jar delete "); + args = scanner.nextLine().split(" "); + } + if (args.length < 1) { + System.out.println("Usage: TPkgCreator.jar pack "); + System.out.println("Usage: TPkgCreator.jar delete "); return; } - if (args[0].equals("pack")) { + if (args[0].equals("delete")) { + new SendSocketMessage().send(args[1], "delete"); + try { + new S3Uploader().deleteRemoteDirectory(args[1]); + } catch (Exception e) { + throw new RuntimeException(e); + } + System.out.println("Successfully deleted "+args[1]); + System.exit(0); + } + + if (args[0].equals("pack") && args.length >= 5) { if (!new File(args[4]).exists() && !args[4].equals("5")) { System.out.println(args[4] + " does not exist"); return; @@ -67,7 +85,7 @@ public class Main { preJson.put("numOfFiles", String.valueOf(numOfFiles)); preJson.put("timeCreated", String.valueOf(Date.from(Instant.now()))); preJson.put("lastTimeChanged", String.valueOf(Date.from(Instant.now()))); - System.out.println(fileList.toString()); + //System.out.println(fileList.toString()); try { preJson.put("fileList", new ObjectMapper().writeValueAsString(fileList)); } catch (JsonProcessingException e) { @@ -82,14 +100,13 @@ public class Main { try { System.out.println("Sending packet creation Command!"); - new SendSocketMessage().send(new ObjectMapper().writeValueAsString(preJson)); + new SendSocketMessage().send(new ObjectMapper().writeValueAsString(preJson), "create"); } catch (JsonProcessingException e) { throw new RuntimeException(e); } - } - + System.exit(0); } } \ No newline at end of file diff --git a/src/main/java/de/thehomecraft/S3/S3Uploader.java b/src/main/java/de/thehomecraft/S3/S3Uploader.java index 71bf9c6..32141fc 100644 --- a/src/main/java/de/thehomecraft/S3/S3Uploader.java +++ b/src/main/java/de/thehomecraft/S3/S3Uploader.java @@ -1,12 +1,18 @@ package de.thehomecraft.S3; -import io.minio.MinioClient; -import io.minio.PutObjectArgs; +import io.minio.*; +import io.minio.messages.DeleteError; +import io.minio.messages.DeleteObject; +import io.minio.messages.Item; import java.io.File; import java.io.FileInputStream; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; + + public class S3Uploader { public void uploadDirectory(File baseDir, File currentDir) throws Exception { MinioClient client = MinioClient.builder() @@ -35,4 +41,51 @@ public class S3Uploader { } } } + + public void deleteRemoteDirectory(String repoName) throws Exception { + String bucketName = "repofiles"; + MinioClient client = MinioClient.builder() + .endpoint("http://192.168.178.24:9000") + .credentials(new CredProvid().s3AccessKey, new CredProvid().s3SecretKey) + .build(); + + System.out.println("Deleting "+repoName); + + String prefix = repoName+"/"; + + // List all objects under the given prefix + Iterable> results = client.listObjects( + ListObjectsArgs.builder() + .bucket(bucketName) + .prefix(prefix) + .recursive(true) + .build() + ); + + boolean foundAny = false; + + for (Result result : results) { + Item item = result.get(); + String objectName = item.objectName(); + + try { + client.removeObject( + RemoveObjectArgs.builder() + .bucket(bucketName) + .object(objectName) + .build() + ); + System.out.println("Deleted: " + objectName); + foundAny = true; + } catch (Exception e) { + System.err.println("Failed to delete: " + objectName + " (" + e.getMessage() + ")"); + } + } + + if (!foundAny) { + System.out.println("No objects found under prefix: " + prefix); + } else { + System.out.println("Finished deleting remote directory: " + prefix); + } + } } diff --git a/src/main/java/de/thehomecraft/socket/SendSocketMessage.java b/src/main/java/de/thehomecraft/socket/SendSocketMessage.java index 4dc753a..d6d875c 100644 --- a/src/main/java/de/thehomecraft/socket/SendSocketMessage.java +++ b/src/main/java/de/thehomecraft/socket/SendSocketMessage.java @@ -7,10 +7,10 @@ import java.net.URI; import java.net.URISyntaxException; public class SendSocketMessage { - public void send(String text){ + public void send(String text, String endpoint){ URI serverUri; try { - serverUri = new URI("ws://192.168.178.24:7000/repo/create"); + serverUri = new URI("ws://192.168.178.24:7000/repo/"+endpoint); } catch (URISyntaxException e) { throw new RuntimeException(e); } @@ -27,7 +27,7 @@ public class SendSocketMessage { @Override public void onClose(int i, String s, boolean b) { - System.exit(0); + } @Override