mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-11-21 23:20:23 +00:00
Add script quick edit action
This commit is contained in:
parent
ba9ead724f
commit
474606bcb3
5 changed files with 50 additions and 7 deletions
|
@ -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 {
|
||||||
|
|
||||||
|
|
|
@ -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> {
|
||||||
|
|
|
@ -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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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")
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in a new issue