Add script quick edit action

This commit is contained in:
crschnick 2024-09-11 22:32:12 +00:00
parent ba9ead724f
commit 474606bcb3
5 changed files with 50 additions and 7 deletions

View file

@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
@SuperBuilder @SuperBuilder(toBuilder = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type") @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
public class JacksonizedValue { public class JacksonizedValue {

View file

@ -21,7 +21,7 @@ import lombok.experimental.SuperBuilder;
import java.util.*; import java.util.*;
@SuperBuilder @SuperBuilder(toBuilder = true)
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public abstract class ScriptStore extends JacksonizedValue implements DataStore, StatefulDataStore<EnabledStoreState> { public abstract class ScriptStore extends JacksonizedValue implements DataStore, StatefulDataStore<EnabledStoreState> {

View file

@ -0,0 +1,45 @@
package io.xpipe.ext.base.script;
import io.xpipe.app.ext.ActionProvider;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.app.util.FileOpener;
import io.xpipe.core.process.OsType;
import lombok.Value;
public class SimpleScriptQuickEditAction implements ActionProvider {
@Override
public DefaultDataStoreCallSite<?> getDefaultDataStoreCallSite() {
return new DefaultDataStoreCallSite<SimpleScriptStore>() {
@Override
public ActionProvider.Action createAction(DataStoreEntryRef<SimpleScriptStore> store) {
return new Action(store);
}
@Override
public Class<SimpleScriptStore> getApplicableClass() {
return SimpleScriptStore.class;
}
};
}
@Value
static class Action implements ActionProvider.Action {
DataStoreEntryRef<SimpleScriptStore> ref;
@Override
public void execute() {
var script = ref.getStore();
var dialect = script.getMinimumDialect();
var ext = dialect.getScriptFileEnding();
var name = OsType.getLocal().makeFileSystemCompatible(ref.get().getName());
FileOpener.openString(
name + "." + ext,
this,
script.getCommands(),
(s) -> {
ref.get().setStoreInternal(script.toBuilder().commands(s).build(), true);
});
}
}
}

View file

@ -21,7 +21,7 @@ import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@SuperBuilder @SuperBuilder(toBuilder = true)
@Getter @Getter
@Jacksonized @Jacksonized
@JsonTypeName("script") @JsonTypeName("script")

View file

@ -7,10 +7,7 @@ import io.xpipe.ext.base.browser.*;
import io.xpipe.ext.base.desktop.DesktopApplicationStoreProvider; import io.xpipe.ext.base.desktop.DesktopApplicationStoreProvider;
import io.xpipe.ext.base.desktop.DesktopCommandStoreProvider; import io.xpipe.ext.base.desktop.DesktopCommandStoreProvider;
import io.xpipe.ext.base.desktop.DesktopEnvironmentStoreProvider; import io.xpipe.ext.base.desktop.DesktopEnvironmentStoreProvider;
import io.xpipe.ext.base.script.RunScriptAction; import io.xpipe.ext.base.script.*;
import io.xpipe.ext.base.script.ScriptDataStorageProvider;
import io.xpipe.ext.base.script.ScriptGroupStoreProvider;
import io.xpipe.ext.base.script.SimpleScriptStoreProvider;
import io.xpipe.ext.base.service.*; import io.xpipe.ext.base.service.*;
import io.xpipe.ext.base.store.StorePauseAction; import io.xpipe.ext.base.store.StorePauseAction;
import io.xpipe.ext.base.store.StoreStartAction; import io.xpipe.ext.base.store.StoreStartAction;
@ -65,6 +62,7 @@ open module io.xpipe.ext.base {
JavapAction, JavapAction,
JarAction; JarAction;
provides ActionProvider with provides ActionProvider with
SimpleScriptQuickEditAction,
StoreStopAction, StoreStopAction,
StoreStartAction, StoreStartAction,
StorePauseAction, StorePauseAction,