mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-11-21 23:20:23 +00:00
Implement launch functionality [release]
This commit is contained in:
parent
197f5220af
commit
c553dca81b
11 changed files with 92 additions and 6 deletions
|
@ -35,6 +35,7 @@ It comes with the following main features:
|
|||
- Comes with integrations for all commonly used terminals for all operating systems
|
||||
- Exclusively uses established CLI tools and therefore works out of the box on most systems and doesn't require any additional setup
|
||||
- Allows you to customize the launched shell's init environment
|
||||
- Launch connections from the GUI or commandline
|
||||
|
||||
#### All your connections in one place
|
||||
|
||||
|
@ -43,7 +44,7 @@ It comes with the following main features:
|
|||
- Share connection configurations to any other trusted party through shareable URLs
|
||||
- Create desktop shortcuts to open your connections
|
||||
|
||||
<img src="https://user-images.githubusercontent.com/72509152/213240153-3f742f03-1289-44c3-bf4d-626d9886ffcf.png" alt="drawing" height="450"/>
|
||||
<img src="https://user-images.githubusercontent.com/72509152/218159305-64e2ac2c-2d01-4087-89d2-907f2e3a6bed.png" alt="drawing" height="450"/>
|
||||
|
||||
## Data Explorer
|
||||
|
||||
|
@ -65,7 +66,7 @@ allows you to manage and work with all kinds of data sources:
|
|||
your favorite programming languages using the X-Pipe APIs
|
||||
- Connect select third party applications directly to X-Pipe through extensions
|
||||
|
||||
<img src="https://user-images.githubusercontent.com/72509152/218159305-64e2ac2c-2d01-4087-89d2-907f2e3a6bed.png" alt="drawing" height="450"/>
|
||||
<img src="https://user-images.githubusercontent.com/72509152/213240736-7a27fb3c-e8c3-4c92-bcea-2a782e53dc31.png" alt="drawing" height="450"/>
|
||||
|
||||
## Repository Structure
|
||||
|
||||
|
|
|
@ -136,7 +136,7 @@ run {
|
|||
systemProperty 'io.xpipe.app.writeSysOut', "true"
|
||||
systemProperty 'io.xpipe.app.developerMode', "true"
|
||||
systemProperty 'io.xpipe.app.logLevel', "trace"
|
||||
systemProperty "io.xpipe.beacon.port", "21724"
|
||||
// systemProperty "io.xpipe.beacon.port", "21724"
|
||||
// systemProperty "io.xpipe.beacon.printMessages", "true"
|
||||
systemProperty "io.xpipe.app.extensions", extensionDirList
|
||||
// systemProperty 'io.xpipe.app.debugPlatform', "true"
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package io.xpipe.app.exchange;
|
||||
|
||||
import io.xpipe.beacon.BeaconHandler;
|
||||
import io.xpipe.beacon.exchange.LaunchExchange;
|
||||
import io.xpipe.core.store.LaunchableStore;
|
||||
import org.apache.commons.exec.CommandLine;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LaunchExchangeImpl extends LaunchExchange
|
||||
implements MessageExchangeImpl<LaunchExchange.Request, LaunchExchange.Response> {
|
||||
|
||||
@Override
|
||||
public Response handleRequest(BeaconHandler handler, Request msg) throws Exception {
|
||||
var store = getStoreEntryByName(msg.getName(), false);
|
||||
if (store.getStore() instanceof LaunchableStore s) {
|
||||
var command = s.prepareLaunchCommand();
|
||||
var split = CommandLine.parse(command);
|
||||
return Response.builder().command(List.of(split.toStrings())).build();
|
||||
}
|
||||
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
}
|
|
@ -66,6 +66,7 @@ open module io.xpipe.app {
|
|||
requires com.jfoenix;
|
||||
requires org.kordamp.ikonli.javafx;
|
||||
requires org.kordamp.ikonli.material;
|
||||
requires commons.exec;
|
||||
requires org.controlsfx.controls;
|
||||
requires io.sentry;
|
||||
requires io.xpipe.beacon;
|
||||
|
@ -125,6 +126,7 @@ open module io.xpipe.app {
|
|||
StoreProviderListExchangeImpl,
|
||||
ListCollectionsExchangeImpl,
|
||||
OpenExchangeImpl,
|
||||
LaunchExchangeImpl,
|
||||
FocusExchangeImpl,
|
||||
ListEntriesExchangeImpl,
|
||||
ProxyReadConnectionExchangeImpl,
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package io.xpipe.beacon.exchange;
|
||||
|
||||
import io.xpipe.beacon.RequestMessage;
|
||||
import io.xpipe.beacon.ResponseMessage;
|
||||
import lombok.Builder;
|
||||
import lombok.NonNull;
|
||||
import lombok.Value;
|
||||
import lombok.extern.jackson.Jacksonized;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LaunchExchange implements MessageExchange {
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return "launch";
|
||||
}
|
||||
|
||||
@Jacksonized
|
||||
@Builder
|
||||
@Value
|
||||
public static class Request implements RequestMessage {
|
||||
@NonNull
|
||||
String name;
|
||||
}
|
||||
|
||||
@Jacksonized
|
||||
@Builder
|
||||
@Value
|
||||
public static class Response implements ResponseMessage {
|
||||
@NonNull List<String> command;
|
||||
}
|
||||
}
|
|
@ -43,6 +43,7 @@ module io.xpipe.beacon {
|
|||
provides Module with
|
||||
BeaconJacksonModule;
|
||||
provides io.xpipe.beacon.exchange.MessageExchange with
|
||||
LaunchExchange,
|
||||
ForwardExchange,
|
||||
InstanceExchange,
|
||||
EditStoreExchange,
|
||||
|
|
|
@ -2,7 +2,12 @@ package io.xpipe.core.store;
|
|||
|
||||
import io.xpipe.core.process.CommandProcessControl;
|
||||
|
||||
public interface CommandExecutionStore extends DataStore {
|
||||
public interface CommandExecutionStore extends DataStore, LaunchableStore {
|
||||
|
||||
@Override
|
||||
default String prepareLaunchCommand() throws Exception {
|
||||
return create().prepareTerminalOpen();
|
||||
}
|
||||
|
||||
CommandProcessControl create() throws Exception;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
package io.xpipe.core.store;
|
||||
|
||||
public interface LaunchableStore extends DataStore {
|
||||
|
||||
String prepareLaunchCommand() throws Exception;
|
||||
}
|
|
@ -8,7 +8,7 @@ import io.xpipe.core.process.ShellType;
|
|||
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
public interface ShellStore extends DataStore, StatefulDataStore {
|
||||
public interface ShellStore extends DataStore, StatefulDataStore, LaunchableStore {
|
||||
|
||||
public static MachineStore local() {
|
||||
return new LocalStore();
|
||||
|
@ -24,6 +24,11 @@ public interface ShellStore extends DataStore, StatefulDataStore {
|
|||
return s instanceof LocalStore;
|
||||
}
|
||||
|
||||
@Override
|
||||
default String prepareLaunchCommand() throws Exception {
|
||||
return create().prepareTerminalOpen();
|
||||
}
|
||||
|
||||
default ShellProcessControl create() {
|
||||
var pc = createControl();
|
||||
pc.onInit(processControl -> {
|
||||
|
|
|
@ -6,6 +6,7 @@ dependencies {
|
|||
dep files("$buildDir/generated-modules/commons-lang3-3.12.0.jar")
|
||||
dep files("$buildDir/generated-modules/commons-io-2.11.0.jar")
|
||||
dep files("$buildDir/generated-modules/commons-math3-3.6.1.jar")
|
||||
dep files("$buildDir/generated-modules/commons-exec-1.3.jar")
|
||||
}
|
||||
|
||||
addDependenciesModuleInfo {
|
||||
|
@ -40,6 +41,14 @@ addDependenciesModuleInfo {
|
|||
}
|
||||
'''
|
||||
}
|
||||
module {
|
||||
artifact 'org.apache.commons:commons-exec:1.3'
|
||||
moduleInfoSource = '''
|
||||
module commons.exec {
|
||||
exports org.apache.commons.exec;
|
||||
}
|
||||
'''
|
||||
}
|
||||
module {
|
||||
artifact 'org.apache.commons:commons-collections4:4.4'
|
||||
moduleInfoSource = '''
|
||||
|
|
2
version
2
version
|
@ -1 +1 @@
|
|||
0.4.27
|
||||
0.4.28
|
Loading…
Reference in a new issue