From c478bfec452827ff752aa84b7e1362e43295e45d Mon Sep 17 00:00:00 2001 From: Andreas Fahrecker Date: Sun, 19 May 2024 20:45:14 +0200 Subject: [PATCH] fix: :bug: Fix running on macos --- .../fahrecker/gradle/FlutterExtension.groovy | 8 ++ .../gradle/FlutterGradlePlugin.groovy | 117 ++++++++++++++++++ .../gradle/FlutterGradlePlugin.groovy | 23 +++- 3 files changed, 146 insertions(+), 2 deletions(-) create mode 100644 bin/main/com/fahrecker/gradle/FlutterExtension.groovy create mode 100644 bin/main/com/fahrecker/gradle/FlutterGradlePlugin.groovy diff --git a/bin/main/com/fahrecker/gradle/FlutterExtension.groovy b/bin/main/com/fahrecker/gradle/FlutterExtension.groovy new file mode 100644 index 0000000..bbb7d3f --- /dev/null +++ b/bin/main/com/fahrecker/gradle/FlutterExtension.groovy @@ -0,0 +1,8 @@ +package com.fahrecker.gradle + +import org.gradle.api.Project + +class FlutterExtension { + public FlutterExtension(Project project) { + } +} \ No newline at end of file diff --git a/bin/main/com/fahrecker/gradle/FlutterGradlePlugin.groovy b/bin/main/com/fahrecker/gradle/FlutterGradlePlugin.groovy new file mode 100644 index 0000000..5301125 --- /dev/null +++ b/bin/main/com/fahrecker/gradle/FlutterGradlePlugin.groovy @@ -0,0 +1,117 @@ +package com.fahrecker.gradle + +import org.gradle.api.Plugin +import org.gradle.api.Project + +class FlutterGradlePlugin implements Plugin { + void apply(Project project) { + FlutterExtension extension = project.extensions.create("flutter", FlutterExtension, project) + + project.task("flutterDoctor") { + group = "flutter" + doLast { + project.exec { + commandLine flutterCommand("doctor") + } + } + } + + project.task("flutterVersion") { + group = "flutter" + doLast { + project.exec { + commandLine flutterCommand("--version") + } + } + } + + project.task("dartBuildRunner") { + group = "flutter" + doLast { + project.exec { + commandLine dartCommand("run", "build_runner", "build", "--delete-conflicting-outputs") + } + } + } + + project.task("flutterBuildApk") { + group = "flutter" + doLast { + project.exec { + commandLine flutterCommand("build", "apk") + } + } + } + + project.task("flutterBuildWeb") { + group = "flutter" + doLast { + project.exec { + commandLine flutterCommand("build", "web") + } + } + } + + project.task("flutterBuildWindows") { + group = "flutter" + doLast { + project.exec { + commandLine flutterCommand("build", "windows") + } + } + } + + project.task("flutterRunChrome") { + group = "flutter" + doLast { + project.exec { + commandLine flutterCommand("run", "-d", "chrome") + } + } + } + + project.task("flutterRunWindows") { + group = "flutter" + doLast { + project.exec { + commandLine flutterCommand("run", "-d", "windows") + } + } + } + } + + List dartCommand(String... args) { + String osName = System.getProperty('os.name').toLowerCase(); + if (osName.contains('windows')) { + return ['cmd', '/c', 'dart'] + args.toList() + } else if (osName.contains('mac')) { + String dartPath = new ByteArrayOutputStream().withStream { os -> + exec { + commandLine 'which', 'dart' + standardOutput = os + } + os.toString().trim() + return [dartPath] + args.toList() + } + } else { + return ['dart'] + args.toList() + } + } + + List flutterCommand(String... args) { + String osName = System.getProperty('os.name').toLowerCase(); + if (osName.contains('windows')) { + return ['cmd', '/c', 'flutter'] + args.toList() + } else if (osName.contains('mac')) { + String flutterPath = new ByteArrayOutputStream().withStream { os -> + exec { + commandLine 'which', 'flutter' + standardOutput = os + } + os.toString().trim() + return [flutterPath] + args.toList() + } else { + return ['flutter'] + args.toList() + } + } +} \ No newline at end of file diff --git a/src/main/groovy/com/fahrecker/gradle/FlutterGradlePlugin.groovy b/src/main/groovy/com/fahrecker/gradle/FlutterGradlePlugin.groovy index bee698c..5301125 100644 --- a/src/main/groovy/com/fahrecker/gradle/FlutterGradlePlugin.groovy +++ b/src/main/groovy/com/fahrecker/gradle/FlutterGradlePlugin.groovy @@ -81,16 +81,35 @@ class FlutterGradlePlugin implements Plugin { } List dartCommand(String... args) { - if (System.getProperty('os.name').toLowerCase().contains('windows')) { + String osName = System.getProperty('os.name').toLowerCase(); + if (osName.contains('windows')) { return ['cmd', '/c', 'dart'] + args.toList() + } else if (osName.contains('mac')) { + String dartPath = new ByteArrayOutputStream().withStream { os -> + exec { + commandLine 'which', 'dart' + standardOutput = os + } + os.toString().trim() + return [dartPath] + args.toList() + } } else { return ['dart'] + args.toList() } } List flutterCommand(String... args) { - if (System.getProperty('os.name').toLowerCase().contains('windows')) { + String osName = System.getProperty('os.name').toLowerCase(); + if (osName.contains('windows')) { return ['cmd', '/c', 'flutter'] + args.toList() + } else if (osName.contains('mac')) { + String flutterPath = new ByteArrayOutputStream().withStream { os -> + exec { + commandLine 'which', 'flutter' + standardOutput = os + } + os.toString().trim() + return [flutterPath] + args.toList() } else { return ['flutter'] + args.toList() }