More shell fixes

This commit is contained in:
Christopher Schnick 2022-12-11 11:19:12 +01:00
parent e9340c40a8
commit 88ca584410
5 changed files with 18 additions and 7 deletions

View file

@ -20,6 +20,8 @@ public interface ProcessControl extends Closeable, AutoCloseable {
void writeLine(String line) throws IOException; void writeLine(String line) throws IOException;
void write(byte[] b) throws IOException;
@Override @Override
void close() throws IOException; void close() throws IOException;
void kill() throws Exception; void kill() throws Exception;

View file

@ -53,8 +53,6 @@ public interface ShellProcessControl extends ProcessControl {
ShellProcessControl elevation(SecretValue value); ShellProcessControl elevation(SecretValue value);
ShellProcessControl startTimeout(Integer timeout);
SecretValue getElevationPassword(); SecretValue getElevationPassword();
default ShellProcessControl subShell(@NonNull ShellType type) { default ShellProcessControl subShell(@NonNull ShellType type) {

View file

@ -76,7 +76,7 @@ public interface ShellType {
List<String> createMkdirsCommand(String dirs); List<String> createMkdirsCommand(String dirs);
List<String> createFileReadCommand(String file); String createFileReadCommand(String file);
String createFileWriteCommand(String file); String createFileWriteCommand(String file);

View file

@ -11,19 +11,22 @@ public interface MachineStore extends FileSystemStore, ShellStore {
@Override @Override
public default InputStream openInput(String file) throws Exception { public default InputStream openInput(String file) throws Exception {
return create().command(proc -> proc.getShellType().flatten(proc.getShellType().createFileReadCommand(proc.getOsType().normalizeFileName(file)))) return create().command(proc -> proc.getShellType()
.createFileReadCommand(proc.getOsType().normalizeFileName(file)))
.startExternalStdout(); .startExternalStdout();
} }
@Override @Override
public default OutputStream openOutput(String file) throws Exception { public default OutputStream openOutput(String file) throws Exception {
return create().command(proc -> proc.getShellType().createFileWriteCommand(proc.getOsType().normalizeFileName(file))) return create().command(proc -> proc.getShellType()
.createFileWriteCommand(proc.getOsType().normalizeFileName(file)))
.startExternalStdin(); .startExternalStdin();
} }
@Override @Override
public default boolean exists(String file) throws Exception { public default boolean exists(String file) throws Exception {
try (var pc = create().command(proc -> proc.getShellType().createFileExistsCommand(proc.getOsType().normalizeFileName(file))) try (var pc = create().command(proc -> proc.getShellType()
.createFileExistsCommand(proc.getOsType().normalizeFileName(file)))
.start()) { .start()) {
return pc.discardAndCheckExit(); return pc.discardAndCheckExit();
} }
@ -31,7 +34,9 @@ public interface MachineStore extends FileSystemStore, ShellStore {
@Override @Override
public default boolean mkdirs(String file) throws Exception { public default boolean mkdirs(String file) throws Exception {
try (var pc = create().command(proc -> proc.getShellType().flatten(proc.getShellType().createMkdirsCommand(proc.getOsType().normalizeFileName(file)))) try (var pc = create().command(proc -> proc.getShellType()
.flatten(proc.getShellType()
.createMkdirsCommand(proc.getOsType().normalizeFileName(file))))
.start()) { .start()) {
return pc.discardAndCheckExit(); return pc.discardAndCheckExit();
} }

View file

@ -1,6 +1,7 @@
package io.xpipe.core.util; package io.xpipe.core.util;
import io.xpipe.core.impl.FileNames; import io.xpipe.core.impl.FileNames;
import io.xpipe.core.process.OsType;
import io.xpipe.core.process.ShellProcessControl; import io.xpipe.core.process.ShellProcessControl;
import io.xpipe.core.store.ShellStore; import io.xpipe.core.store.ShellStore;
@ -22,6 +23,11 @@ public class XPipeTempDirectory {
throw new IOException("Unable to access or create temporary directory " + dir); throw new IOException("Unable to access or create temporary directory " + dir);
} }
if (proc.getOsType().equals(OsType.LINUX)) {
proc.executeSimpleCommand("(chmod -f 777 \"" + dir + "\" || true)");
}
return dir; return dir;
} }