From e72fc2c4879c8fd28c7005c166d1a5c253b3ce0e Mon Sep 17 00:00:00 2001 From: crschnick Date: Tue, 6 Jun 2023 22:57:13 +0000 Subject: [PATCH] Clear temp directory --- .../io/xpipe/core/process/ShellDialect.java | 2 ++ .../xpipe/core/util/XPipeTempDirectory.java | 32 +++++++++---------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/core/src/main/java/io/xpipe/core/process/ShellDialect.java b/core/src/main/java/io/xpipe/core/process/ShellDialect.java index fa5075afb..bde0be502 100644 --- a/core/src/main/java/io/xpipe/core/process/ShellDialect.java +++ b/core/src/main/java/io/xpipe/core/process/ShellDialect.java @@ -15,6 +15,8 @@ import java.util.stream.Stream; @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type") public interface ShellDialect { + CommandControl prepareTempDirectory(ShellControl shellControl, String directory); + String initFileName(ShellControl sc) throws Exception; CommandControl directoryExists(ShellControl shellControl, String directory); diff --git a/core/src/main/java/io/xpipe/core/util/XPipeTempDirectory.java b/core/src/main/java/io/xpipe/core/util/XPipeTempDirectory.java index 976d6d3e0..76eaf39fe 100644 --- a/core/src/main/java/io/xpipe/core/util/XPipeTempDirectory.java +++ b/core/src/main/java/io/xpipe/core/util/XPipeTempDirectory.java @@ -1,10 +1,8 @@ package io.xpipe.core.util; import io.xpipe.core.impl.FileNames; -import io.xpipe.core.process.OsType; import io.xpipe.core.process.ShellControl; -import java.io.IOException; import java.util.Arrays; import java.util.stream.Stream; @@ -14,6 +12,21 @@ public class XPipeTempDirectory { return proc.getOsType().getTempDirectory(proc); } + public static String initXPipeTempDirectory(ShellControl proc) throws Exception { + var base = proc.getOsType().getTempDirectory(proc); + var arr = Stream.of(base, "xpipe").toArray(String[]::new); + var dir = FileNames.join(arr); + + var existsCommand = proc.getShellDialect().createFileExistsCommand(proc, dir); + if (existsCommand.executeAndCheck()) { + proc.executeSimpleCommand(proc.getShellDialect().getFileDeleteCommand(dir)); + } + + proc.getShellDialect().prepareTempDirectory(proc, dir); + + return dir; + } + public static String getSubDirectory(ShellControl proc, String... sub) throws Exception { var base = proc.getOsType().getTempDirectory(proc); var arr = Stream.concat(Stream.of(base, "xpipe"), Arrays.stream(sub)).toArray(String[]::new); @@ -21,22 +34,9 @@ public class XPipeTempDirectory { var existsCommand = proc.getShellDialect().createFileExistsCommand(proc, dir); if (!existsCommand.executeAndCheck()) { - proc.executeSimpleCommand( - proc.getShellDialect().getMkdirsCommand(dir), - "Unable to access or create temporary directory " + dir); - - if (proc.getOsType().equals(OsType.LINUX) || proc.getOsType().equals(OsType.MACOS)) { - proc.executeSimpleBooleanCommand("chmod 777 \"" + dir + "\""); - } + proc.getShellDialect().prepareTempDirectory(proc,dir).execute(); } return dir; } - - public static void clearSubDirectory(ShellControl proc) throws Exception { - var dir = getSubDirectory(proc); - if (!proc.executeSimpleBooleanCommand(proc.getShellDialect().getFileDeleteCommand(dir))) { - throw new IOException("Unable to delete temporary directory " + dir); - } - } }