Shell fixes

This commit is contained in:
crschnick 2023-03-11 01:33:02 +00:00
parent 294c9459a2
commit f2bf943d56
6 changed files with 17 additions and 17 deletions

View file

@ -43,17 +43,9 @@ public class AppInstaller {
} else {
targetFile = FileNames.join(
s.getTemporaryDirectory(), localFile.getFileName().toString());
try (CommandControl c = s.getShellDialect().getStreamFileWriteCommand(s, targetFile)
.start()) {
c.discardOut();
c.discardErr();
try (InputStream in = Files.newInputStream(localFile)) {
in.transferTo(c.getStdin());
}
c.closeStdin();
try (InputStream in = Files.newInputStream(localFile)) {
in.transferTo(s.getShellDialect().createStreamFileWriteCommand(s, targetFile).startExternalStdin());
}
s.restart();
}
asset.installRemote(s, targetFile);

View file

@ -60,10 +60,10 @@ public class DesktopShortcuts {
pc.getShellDialect().flatten(pc.getShellDialect().getMkdirsCommand(base + "/Contents/Resources")));
var executable = base + "/Contents/MacOS/" + name;
pc.executeSimpleCommand(pc.getShellDialect().getTextFileWriteCommand(content, executable));
pc.getShellDialect().createTextFileWriteCommand(pc, content, executable).execute();
pc.executeSimpleCommand("chmod ugo+x \"" + executable + "\"");
pc.executeSimpleCommand(pc.getShellDialect().getTextFileWriteCommand("APPL????", base + "/PkgInfo"));
pc.getShellDialect().createTextFileWriteCommand(pc, "APPL????", base + "/PkgInfo").execute();
pc.executeSimpleCommand("cp \"" + icon + "\" \"" + base + "/Contents/Resources/" + name + ".icns\"");
}
}

View file

@ -200,7 +200,7 @@ public class ScriptHelper {
.handle();
// processControl.executeSimpleCommand(type.getFileTouchCommand(file), "Failed to create script " + file);
processControl.executeSimpleCommand(type.getTextFileWriteCommand(content, file));
processControl.getShellDialect().createTextFileWriteCommand(processControl, content, file).execute();
processControl.executeSimpleCommand(
type.getMakeExecutableCommand(file), "Failed to make script " + file + " executable");
return file;

View file

@ -26,8 +26,16 @@ public interface CommandControl extends ProcessControl {
CommandControl complex();
CommandControl notComplex();
CommandControl workingDirectory(String directory);
default void execute() throws Exception {
try (var c = start()) {
c.discardOrThrow();
}
}
ShellControl getParent();
InputStream startExternalStdout() throws Exception;

View file

@ -13,6 +13,8 @@ import java.util.stream.Stream;
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
public interface ShellDialect {
CommandControl createStreamFileWriteCommand(ShellControl shellControl, String file);
default String getCdCommand(String directory){
return "cd \"" + directory + "\"";
}
@ -101,9 +103,7 @@ public interface ShellDialect {
String getFileMoveCommand(String oldFile, String newFile);
CommandControl getStreamFileWriteCommand(ShellControl processControl, String file);
String getTextFileWriteCommand(String content, String file);
CommandControl createTextFileWriteCommand(ShellControl parent, String content, String file);
String getFileDeleteCommand(String file);

View file

@ -64,7 +64,7 @@ public class ConnectionFileSystem implements FileSystem {
@Override
public OutputStream openOutput(String file) throws Exception {
return shellControl.getShellDialect()
.getStreamFileWriteCommand(shellControl, shellControl.getOsType().normalizeFileName(file))
.createStreamFileWriteCommand(shellControl, shellControl.getOsType().normalizeFileName(file))
.startExternalStdin();
}