Powershell fixes

This commit is contained in:
crschnick 2024-09-10 23:58:42 +00:00
parent eec51705d1
commit c5f99af866
8 changed files with 32 additions and 13 deletions

View file

@ -197,7 +197,7 @@ public class StoreCreationComp extends DialogComp {
try {
DataStorage.get().addStoreEntryIfNotPresent(e);
if (validated
&& e.getProvider().shouldHaveChildren()
&& e.getProvider().shouldShowScan()
&& AppPrefs.get()
.openConnectionSearchWindowOnConnectionCreation()
.get()) {

View file

@ -96,14 +96,10 @@ public interface DataStoreProvider {
return new StoreSectionComp(section, topLevel);
}
default boolean canHaveSubShells() {
default boolean shouldShowScan() {
return true;
}
default boolean shouldHaveChildren() {
return canHaveSubShells();
}
default Comp<?> stateDisplay(StoreEntryWrapper w) {
return Comp.empty();
}

View file

@ -49,6 +49,10 @@ public class ScanAlert {
public static void showForShellStore(DataStoreEntry initial) {
show(initial, (DataStoreEntry entry, ShellControl sc) -> {
if (!sc.canHaveSubshells()) {
return null;
}
if (!sc.getShellDialect().getDumbMode().supportsAnyPossibleInteraction()) {
return null;
}

View file

@ -46,6 +46,10 @@ public interface ShellControl extends ProcessControl {
boolean isLocal();
default boolean canHaveSubshells() {
return true;
}
ShellControl getMachineRootSession();
ShellControl withoutLicenseCheck();

View file

@ -146,7 +146,11 @@ public interface ShellDialect {
String getPrintWorkingDirectoryCommand();
StreamCharset getScriptCharset();
StreamCharset getTextCharset();
default StreamCharset getScriptCharset() {
return getTextCharset();
}
CommandControl getFileCopyCommand(ShellControl parent, String oldFile, String newFile);

View file

@ -2,6 +2,7 @@ package io.xpipe.core.util;
import lombok.Value;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
@ -158,6 +159,20 @@ public class StreamCharset {
return detected.reader(inputStream);
}
public String read(byte[] b) throws Exception {
return read(new ByteArrayInputStream(b));
}
public String read(InputStream inputStream) throws Exception {
if (hasByteOrderMark()) {
var bom = inputStream.readNBytes(getByteOrderMark().length);
if (bom.length != 0 && !Arrays.equals(bom, getByteOrderMark())) {
throw new IllegalStateException("Charset does not match: " + charset.toString());
}
}
return new String(inputStream.readAllBytes(), charset);
}
public InputStreamReader reader(InputStream stream) throws Exception {
if (hasByteOrderMark()) {
var bom = stream.readNBytes(getByteOrderMark().length);

View file

@ -31,15 +31,11 @@ public class ScanStoreAction implements ActionProvider {
@Override
public boolean isMajor(DataStoreEntryRef<ShellStore> o) {
return o.get().getProvider().shouldHaveChildren();
return true;
}
@Override
public boolean isApplicable(DataStoreEntryRef<ShellStore> o) {
if (!o.get().getProvider().canHaveSubShells()) {
return false;
}
var state = o.get().getStorePersistentState();
if (state instanceof ShellStoreState shellStoreState) {
return (shellStoreState.getShellDialect() == null

View file

@ -46,7 +46,7 @@ public class SimpleScriptStoreProvider implements EnabledParentStoreProvider, Da
}
@Override
public boolean shouldHaveChildren() {
public boolean shouldShowScan() {
return false;
}