From 9e75fe66ca83cd72625c6879069b3f7410b4c05c Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sun, 31 Dec 2023 13:08:43 +0530 Subject: [PATCH] build: remove Nyx plugin when building for F-Droid --- gradle.properties | 3 ++ scripts/setup_fdroid_build.sh | 64 +++++++++++++++++++++++++++++++++-- settings.gradle.kts | 12 ++++--- 3 files changed, 72 insertions(+), 7 deletions(-) mode change 100755 => 100644 settings.gradle.kts diff --git a/gradle.properties b/gradle.properties index b728be844..0cacf31ee 100755 --- a/gradle.properties +++ b/gradle.properties @@ -23,3 +23,6 @@ android.jetifier.ignorelist=common-30.2.2.jar # TODO : Migrate android.nonTransitiveRClass=false + +# DO NOT REMOVE!! +# @@FDROID_PREBUILD_PROPS_INSERT@@ diff --git a/scripts/setup_fdroid_build.sh b/scripts/setup_fdroid_build.sh index aebebc1da..40ab1def5 100755 --- a/scripts/setup_fdroid_build.sh +++ b/scripts/setup_fdroid_build.sh @@ -29,11 +29,20 @@ versionCode="$2" DEFCONFIG_REPLACE_BEGIN="FDROID_PREBUILD_DEFCONFIG_REPLACE_BEGIN" DEFCONFIG_REPLACE_END="FDROID_PREBUILD_DEFCONFIG_REPLACE_END" +# settings.gradle +SETTINGS_GRADLE_REPLACE_BEGIN="FDROID_PREBUILD_SETTINGS_REPLACE_BEGIN" +SETTINGS_GRADLE_REPLACE_END="FDROID_PREBUILD_SETTINGS_REPLACE_END" + # Android productFlavors FLAVORS_INSERT="FDROID_PREBUILD_FLAVORS_INSERT" +# Insert Gradle properties +PROPS_INSERT="FDROID_PREBUILD_PROPS_INSERT" + # File to update -target_file="build.gradle.kts" +build_gradle="build.gradle.kts" +gradle_props="../gradle.properties" +settings_gradle="../settings.gradle.kts" flavorDef="productFlavors {\n" @@ -48,12 +57,61 @@ done flavorDef+="}" +# Gradle properties +propsDef="ide.build.fdroid=true\n" +propsDef+="ide.build.fdroid.version=${versionName}\n" +propsDef+="ide.build.fdroid.vercode=${versionCode}\n" + + +# settings.gradle +settingsDef=$(cat <<- END + val properties = File(rootDir, "gradle.properties").let { props -> + java.util.Properties().also { + it.load(props.reader()) + } + } + + val isFDroidBuild = properties.getProperty("ide.build.fdroid", "true").toBoolean() + + val fdroidVersionName = requireNotNull(properties.getProperty("ide.build.fdroid.version", null)) { + "'ide.build.fdroid' is 'true' but no 'ide.build.fdroid.version' is defined!" + } + + gradle.beforeProject { + if (project.path == ":") { + gradle.rootProject.version = "v" + fdroidVersionName + } + } +END + +) + # Replace properties in defaultConfig with constants sed -i "/\/\/ @@$DEFCONFIG_REPLACE_BEGIN@@/,/\/\/ @@$DEFCONFIG_REPLACE_END@@/c\ applicationId = \"com.itsaky.androidide\" \n \ versionName = \"$versionName\" \n \ - versionCode = $versionCode \n" $target_file + versionCode = $versionCode \n" $build_gradle # Add product flavors sed -i "/\/\/ @@$FLAVORS_INSERT@@/c\ - $flavorDef" $target_file \ No newline at end of file + $flavorDef" $build_gradle + +# Remove the Nyx plugin from settings.gradle +awk -v begin="$SETTINGS_GRADLE_REPLACE_BEGIN" -v end="$SETTINGS_GRADLE_REPLACE_END" -v replacement="$settingsDef" ' + $0 ~ ("// @@" begin "@@") { + printing = 1; + print replacement; + next; + } + printing && $0 ~ ("// @@" end "@@") { + printing = 0; + next; + } + !printing +' $settings_gradle > temp_settings.gradle && mv temp_settings.gradle $settings_gradle + + + +# Insert Gradle properties +sed -i "/# @@$PROPS_INSERT@@/c\ +$propsDef" $gradle_props \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts old mode 100755 new mode 100644 index 9876e03ec..49e1ea78a --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,7 +1,5 @@ @file:Suppress("UnstableApiUsage") -import com.mooltiverse.oss.nyx.gradle.NyxExtension - enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") pluginManagement { @@ -13,9 +11,14 @@ pluginManagement { } } -plugins { id("com.mooltiverse.oss.nyx") version "2.5.1" } +// DO NOT REMOVE THESE COMMENTS! +// @@FDROID_PREBUILD_SETTINGS_REPLACE_BEGIN@@ +plugins { + id("com.mooltiverse.oss.nyx") version "2.5.1" +} -extensions.configure { +// DO NOT REPLACE WITH IMPORT!! +extensions.configure { git { remotes.register("origin") { user.set("{{#environmentVariable}}GH_TOKEN{{/environmentVariable}}") @@ -24,6 +27,7 @@ extensions.configure { } configurationFile.set(".nyx.yml") } +// @@FDROID_PREBUILD_SETTINGS_REPLACE_END@@ dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)