Skip to content

Commit c6ef506

Browse files
authored
* gradle plugin: arguments support for launch* tasks (#789)
These changes allows to pass arguments to application, when launching it on device/simulator similar to arguments field in Idea run/debug configuration. Beside debug/specific cases this is also required to enable debug mode of Crashlytics: https://firebase.google.com/docs/crashlytics/test-implementation?platform=ios Custom commands are supported since Gradle v5. Usage as simple as: `./gradlew launchIPhoneSimulator --info --args "'hello world'"` String passed in `--args` is then tokenized into individual arguments, e.g. `--args="one two"` will produce two arguments in args array ["one", "two"], if spaces to be considered as part of argument, quotation to be used. Gradle also propagate option description to help command: ``` ./gradlew help --task launchIPhoneSimulator > Task :help Detailed task information for launchIPhoneSimulator Path :launchIPhoneSimulator Type IPhoneSimulatorTask (org.robovm.gradle.tasks.IPhoneSimulatorTask) Options --args Command line arguments passed to app. Description Runs your iOS app in the iPhone simulator Group MobiVM ```
1 parent f44233d commit c6ef506

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

plugins/gradle/src/main/java/org/robovm/gradle/tasks/AbstractSimulatorTask.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
*/
1616
package org.robovm.gradle.tasks;
1717

18+
import org.apache.tools.ant.types.Commandline;
1819
import org.gradle.api.tasks.Internal;
20+
import org.gradle.api.tasks.options.Option;
1921
import org.robovm.compiler.AppCompiler;
2022
import org.robovm.compiler.config.Arch;
2123
import org.robovm.compiler.config.Config;
@@ -25,11 +27,18 @@
2527
import org.robovm.gradle.RoboVMGradleException;
2628

2729
import java.io.File;
30+
import java.util.Arrays;
2831

2932
/**
3033
*
3134
*/
3235
public abstract class AbstractSimulatorTask extends AbstractRoboVMTask {
36+
private String[] args;
37+
38+
@Option(option = "args", description = "Command line arguments passed to app.")
39+
public void setArgs(String args) {
40+
this.args = Commandline.translateCommandline(args);
41+
}
3342

3443
protected void launch(DeviceType type) {
3544
try {
@@ -42,6 +51,9 @@ protected void launch(DeviceType type) {
4251
Config config = compiler.getConfig();
4352
IOSSimulatorLaunchParameters launchParameters = (IOSSimulatorLaunchParameters) config.getTarget().createLaunchParameters();
4453
launchParameters.setDeviceType(type);
54+
if (args != null) {
55+
launchParameters.setArguments(Arrays.asList(args));
56+
}
4557

4658
if (extension.getStdoutFifo() != null) {
4759
File stdoutFifo = new File(extension.getStdoutFifo());

plugins/gradle/src/main/java/org/robovm/gradle/tasks/ConsoleTask.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package org.robovm.gradle.tasks;
1717

18+
import org.apache.tools.ant.types.Commandline;
19+
import org.gradle.api.tasks.options.Option;
1820
import org.robovm.compiler.AppCompiler;
1921
import org.robovm.compiler.config.Arch;
2022
import org.robovm.compiler.config.Config;
@@ -23,10 +25,18 @@
2325
import org.robovm.compiler.target.LaunchParameters;
2426
import org.robovm.gradle.RoboVMGradleException;
2527

28+
import java.util.Arrays;
29+
2630
/**
2731
*
2832
*/
2933
public class ConsoleTask extends AbstractRoboVMTask {
34+
private String[] args;
35+
36+
@Option(option = "args", description = "Command line arguments passed to app.")
37+
public void setArgs(String args) {
38+
this.args = Commandline.translateCommandline(args);
39+
}
3040

3141
@Override
3242
public void invoke() {
@@ -39,6 +49,9 @@ public void invoke() {
3949
AppCompiler compiler = build(OS.getDefaultOS(), arch, ConsoleTarget.TYPE);
4050
Config config = compiler.getConfig();
4151
LaunchParameters launchParameters = config.getTarget().createLaunchParameters();
52+
if (args != null) {
53+
launchParameters.setArguments(Arrays.asList(args));
54+
}
4255
compiler.launch(launchParameters);
4356
} catch (Throwable t) {
4457
throw new RoboVMGradleException("Failed to launch console application", t);

plugins/gradle/src/main/java/org/robovm/gradle/tasks/IOSDeviceTask.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package org.robovm.gradle.tasks;
1717

18+
import org.apache.tools.ant.types.Commandline;
19+
import org.gradle.api.tasks.options.Option;
1820
import org.robovm.compiler.AppCompiler;
1921
import org.robovm.compiler.config.Arch;
2022
import org.robovm.compiler.config.Config;
@@ -23,12 +25,21 @@
2325
import org.robovm.compiler.target.ios.IOSTarget;
2426
import org.robovm.gradle.RoboVMGradleException;
2527

28+
import java.util.Arrays;
29+
2630
/**
2731
*
2832
* @author Junji Takakura
2933
*/
3034
public class IOSDeviceTask extends AbstractRoboVMTask {
3135

36+
private String[] args;
37+
38+
@Option(option = "args", description = "Command line arguments passed to app.")
39+
public void setArgs(String args) {
40+
this.args = Commandline.translateCommandline(args);
41+
}
42+
3243
@Override
3344
public void invoke() {
3445
try {
@@ -42,6 +53,9 @@ public void invoke() {
4253
if(udid != null && !udid.isEmpty()){
4354
launchParameters.setDeviceId(udid);
4455
}
56+
if (args != null) {
57+
launchParameters.setArguments(Arrays.asList(args));
58+
}
4559
compiler.launch(launchParameters);
4660
} catch (Throwable t) {
4761
throw new RoboVMGradleException("Failed to launch IOS Device", t);

0 commit comments

Comments
 (0)