Skip to content

Commit 8621bbf

Browse files
authoredMay 13, 2024··
Add gradle and flutter wrapper tasks to kradle script. (#19)
1 parent d259ffd commit 8621bbf

File tree

3 files changed

+50
-4
lines changed

3 files changed

+50
-4
lines changed
 

‎lib/src/cli/runner.dart

+37-2
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,50 @@
2222

2323
import "dart:io";
2424

25+
import "../common/common.dart";
2526
import "cli.dart";
2627
import "context.dart";
2728

2829
/// Run the user command.
29-
Future<String> run(List<String> args, [TaskService? taskServiceOrNull]) async {
30+
Future<String> run(
31+
List<String> args, {
32+
Directory? workingDirectoryOrNull,
33+
TaskService? taskServiceOrNull,
34+
Executor? executor,
35+
GetFlutterSDK? getFlutterSDK,
36+
}) async {
3037
final arguments = [...args];
3138
final firstArgument = arguments.removeAt(0);
3239
final taskName = firstArgument.toTaskNameOrNull;
33-
final context = toContextOrNull(Directory.current, arguments);
40+
final workingDirectory = workingDirectoryOrNull ?? Directory.current;
41+
if (taskName == TaskName.gradle) {
42+
print("executing gradle task...");
43+
final gradlew =
44+
workingDirectory.resolveFile("gradlew").verifyFileExists.absolutePath;
45+
(executor ?? Executor())
46+
..workingDirectory = workingDirectory
47+
..arguments = arguments
48+
..executable = gradlew
49+
..run();
50+
return "finished executing gradle task";
51+
}
52+
53+
if (taskName == TaskName.flutter) {
54+
print("executing flutter task...");
55+
final flutterTask = getFlutterSDK ?? GetFlutterSDK();
56+
final flutterResult =
57+
await flutterTask.executeOrThrow(Context(workingDirectory, {}));
58+
final flutter =
59+
flutterResult.resolveFile("flutter/bin/flutter".normalize).absolutePath;
60+
(executor ?? Executor())
61+
..workingDirectory = workingDirectory
62+
..arguments = arguments
63+
..executable = flutter
64+
..run();
65+
return "finished executing flutter task";
66+
}
67+
68+
final context = toContextOrNull(workingDirectory, arguments);
3469
final taskService = taskServiceOrNull ?? TaskService();
3570
if (firstArgument.toLowerCase() == "help") {
3671
return taskService.displayKradlewHelpText;

‎test/src/cli/runner_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ void main() {
3434
});
3535

3636
test("Verify invalid arguments are handled", () async {
37-
final output = await run(["gradle", "blabla"]);
37+
final output = await run(["create", "blabla"]);
3838
expect(output.contains("received invalid task options: [blabla]"), true,
3939
reason: output);
4040
});

‎test/src/systemtest/e2e_test.dart

+12-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ void main() {
4848
final help = await run([
4949
"create",
5050
"root=${Directory.systemTemp.absolutePath}",
51-
], FakeTaskService());
51+
], taskServiceOrNull: FakeTaskService());
5252
expect(help.contains("Usage: kradlew <command> [option=value]"), true);
5353

5454
/// Run a Klutter task without an existing Flutter project
@@ -82,6 +82,11 @@ void main() {
8282
expect(cachedSdk.isEmpty, false,
8383
reason: "the cached sdk should not be empty");
8484

85+
/// Run flutter doctor to check flutter task
86+
final flutterDoctor = await run(["flutter", "doctor"]);
87+
expect(flutterDoctor.contains("finished executing flutter task"), true,
88+
reason: flutterDoctor);
89+
8590
/// Create Flutter plugin project.
8691
final createResult = await createKlutterPlugin(
8792
organisation: organisation,
@@ -176,6 +181,12 @@ void main() {
176181
true,
177182
reason: "android/klutter/build.gradle.kts should exist");
178183

184+
/// Run gradlew tasks to check gradlew works
185+
final gradlewTasks = await run(["gradle", "--help"],
186+
workingDirectoryOrNull: producerPlugin);
187+
expect(gradlewTasks.contains("finished executing gradle task"), true,
188+
reason: gradlewTasks);
189+
179190
/// IOS/Klutter folder should be created.
180191
expect(
181192
Directory("${producerPlugin.absolutePath}/ios/Klutter".normalize)

0 commit comments

Comments
 (0)
Please sign in to comment.