From 0554394870c207ede907a13fb64db44447d7089f Mon Sep 17 00:00:00 2001 From: "georgi.hristov" Date: Mon, 22 Jun 2026 20:50:33 +0100 Subject: [PATCH] feat(studios): extend studio commands with support for configuration from git repository --- .../commands/studios/AbstractStudiosCmd.java | 4 + .../tower/cli/commands/studios/AddCmd.java | 36 +- .../tower/cli/commands/studios/StartCmd.java | 12 + .../studios/StudioConfigurationOptions.java | 5 + .../studios/StudioRemoteConfigOptions.java | 45 +++ .../studios/StudioTemplateOptions.java | 5 +- .../tower/cli/commands/studios/UpdateCmd.java | 58 +++- .../cli/responses/studios/StudiosView.java | 18 + .../tower/cli/studios/StudiosCmdTest.java | 327 ++++++++++++++++++ 9 files changed, 503 insertions(+), 7 deletions(-) create mode 100644 src/main/java/io/seqera/tower/cli/commands/studios/StudioRemoteConfigOptions.java diff --git a/src/main/java/io/seqera/tower/cli/commands/studios/AbstractStudiosCmd.java b/src/main/java/io/seqera/tower/cli/commands/studios/AbstractStudiosCmd.java index 73cfe3626..37e42fcc9 100644 --- a/src/main/java/io/seqera/tower/cli/commands/studios/AbstractStudiosCmd.java +++ b/src/main/java/io/seqera/tower/cli/commands/studios/AbstractStudiosCmd.java @@ -146,6 +146,10 @@ protected DataStudioConfiguration studioConfigurationFrom(Long wspId, DataStudio studioConfiguration.setMountData(getMountDataIds(configOptions, studioConfiguration, wspId)); + if (configOptions.environment != null) { + studioConfiguration.setEnvironment(configOptions.environment); + } + if (condaEnvOverride != null && !condaEnvOverride.isEmpty()) { studioConfiguration.setCondaEnvironment(condaEnvOverride); diff --git a/src/main/java/io/seqera/tower/cli/commands/studios/AddCmd.java b/src/main/java/io/seqera/tower/cli/commands/studios/AddCmd.java index a7c358607..80cbc68ed 100644 --- a/src/main/java/io/seqera/tower/cli/commands/studios/AddCmd.java +++ b/src/main/java/io/seqera/tower/cli/commands/studios/AddCmd.java @@ -67,12 +67,21 @@ public class AddCmd extends AbstractStudiosCmd{ @CommandLine.Mixin public StudioConfigurationOptions studioConfigOptions; + @CommandLine.Mixin + public StudioRemoteConfigOptions remoteConfigOptions; + @CommandLine.Option(names = {"-a", "--auto-start"}, description = "Create studio and start it immediately (default: false)", defaultValue = "false") public Boolean autoStart; @CommandLine.Option(names = {"--private"}, description = "Create a private studio that only you can access or manage (default: false)", defaultValue = "false") public Boolean isPrivate; + @CommandLine.Option(names = {"--spot"}, description = "Launch the studio on spot instances (default: provider/compute environment default).") + public Boolean spot; + + @CommandLine.Option(names = {"--ssh"}, description = "Enable SSH connectivity to the studio (default: false).") + public Boolean ssh; + @CommandLine.Option(names = {"--labels"}, description = "Comma-separated list of labels", split = ",", converter = Label.StudioResourceLabelsConverter.class) public List