mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-11-22 07:30:24 +00:00
Which command fixes
This commit is contained in:
parent
ee4fb93290
commit
26e06dc78c
4 changed files with 13 additions and 11 deletions
|
@ -75,7 +75,7 @@ public abstract class ExternalApplicationType implements PrefsChoiceValue {
|
|||
|
||||
public boolean isAvailable() {
|
||||
try (ShellControl pc = LocalShell.getShell()) {
|
||||
return pc.executeSimpleBooleanCommand(pc.getShellDialect().getWhichCommand(executable));
|
||||
return CommandSupport.findProgram(pc, executable).isPresent();
|
||||
} catch (Exception e) {
|
||||
ErrorEvent.fromThrowable(e).omit().handle();
|
||||
return false;
|
||||
|
@ -115,14 +115,9 @@ public abstract class ExternalApplicationType implements PrefsChoiceValue {
|
|||
protected Optional<Path> determineFromPath() {
|
||||
// Try to locate if it is in the Path
|
||||
try (var sc = LocalShell.getShell().start()) {
|
||||
var out = sc.command(CommandBuilder.ofFunction(
|
||||
var1 -> var1.getShellDialect().getWhichCommand(executable)))
|
||||
.readStdoutIfPossible();
|
||||
var out = CommandSupport.findProgram(sc, executable);
|
||||
if (out.isPresent()) {
|
||||
var first = out.get().lines().findFirst();
|
||||
if (first.isPresent()) {
|
||||
return first.map(String::trim).map(Path::of);
|
||||
}
|
||||
return out.map(Path::of);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
ErrorEvent.fromThrowable(ex).omit().handle();
|
||||
|
|
|
@ -96,7 +96,7 @@ public interface KittyTerminalType extends ExternalTerminalType {
|
|||
|
||||
public boolean isAvailable() {
|
||||
try (ShellControl pc = LocalShell.getShell()) {
|
||||
return pc.executeSimpleBooleanCommand(pc.getShellDialect().getWhichCommand("kitty"));
|
||||
return CommandSupport.findProgram(pc, "kitty").isPresent();
|
||||
} catch (Exception e) {
|
||||
ErrorEvent.fromThrowable(e).omit().handle();
|
||||
return false;
|
||||
|
|
|
@ -6,8 +6,15 @@ import io.xpipe.core.process.ShellControl;
|
|||
import io.xpipe.core.util.FailableSupplier;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Optional;
|
||||
|
||||
public class CommandSupport {
|
||||
|
||||
public static Optional<String> findProgram(ShellControl processControl, String name) throws Exception {
|
||||
var out = processControl.command(processControl.getShellDialect().getWhichCommand(name)).readStdoutIfPossible();
|
||||
return out.flatMap(s -> s.lines().findFirst()).map(String::trim);
|
||||
}
|
||||
|
||||
public static boolean isInPath(ShellControl processControl, String executable) throws Exception {
|
||||
return processControl.executeSimpleBooleanCommand(
|
||||
processControl.getShellDialect().getWhichCommand(executable));
|
||||
|
|
|
@ -178,12 +178,12 @@ public class SshLocalBridge {
|
|||
.resolve("sshd")
|
||||
.toString();
|
||||
} else {
|
||||
var exec = sc.command(sc.getShellDialect().getWhichCommand("sshd")).readStdoutIfPossible();
|
||||
var exec = CommandSupport.findProgram(sc, "sshd");
|
||||
if (exec.isEmpty()) {
|
||||
throw ErrorEvent.expected(new IllegalStateException(
|
||||
"No sshd executable found in PATH. The SSH terminal bridge requires a local ssh server"));
|
||||
}
|
||||
return exec.get().lines().findFirst().orElseThrow();
|
||||
return exec.get();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue