diff --git a/.nyx.yml b/.nyx.yml
new file mode 100644
index 0000000000..232e0b0d04
--- /dev/null
+++ b/.nyx.yml
@@ -0,0 +1,68 @@
+preset: simple
+releaseLenient: false
+releasePrefix: "v"
+stateFile: build/nyx-state.json
+scheme: SEMVER
+
+changelog:
+ path: build/CHANGELOG.md
+ template: .nyx/CHANGELOG.tpl
+ sections:
+ Added: "^feat$"
+ Fixed: "^fix$"
+ substitutions:
+ "(?m)#([0-9]+)(?s)": "[#%s](https://github.com/AndroidIDEOfficial/AndroidIDE/issues/%s)"
+
+releaseAssets:
+ apk:
+ fileName: "androidide-{{version}}.apk"
+ description: "AndroidIDE {{version}} release APK"
+ path: app/build/outputs/apk/release/app-release.apk
+ type: application/octet-stream
+
+releaseTypes:
+ enabled:
+ - mainline
+ - internal
+ publicationServices:
+ - github
+ items:
+ mainline:
+ description: "{{#file.content}}build/CHANGELOG.md{{/file.content}}"
+ collapseVersions: false
+ gitPush: "{{#environment.variable}}CI{{/environment.variable}}"
+ gitTag: "{{#environment.variable}}CI{{/environment.variable}}"
+ publish: "{{#environment.variable}}CI{{/environment.variable}}"
+ matchBranches: "^(master|main)$"
+ matchWorkspaceStatus: "CLEAN"
+ matchEnvironmentVariables:
+ CI: "^true$"
+ ReleaseAndroidIDE: "^true$"
+ internal:
+ description: "{{#file.content}}build/CHANGELOG.md{{/file.content}}"
+ collapseVersions: true
+ collapsedVersionQualifier: "internal"
+ gitPush: false
+ gitTag: false
+ publish: false
+ identifiers:
+ -
+ qualifier: "branch"
+ value: "{{#sanitizeLower}}{{branch}}{{/sanitizeLower}}"
+ position: "BUILD"
+ -
+ qualifier: "commit"
+ value: "{{#short7}}{{releaseScope.finalCommit}}{{/short7}}"
+ position: "BUILD"
+ -
+ qualifier: "timestamp"
+ value: "{{#timestampYYYYMMDDHHMMSS}}{{timestamp}}{{/timestampYYYYMMDDHHMMSS}}"
+ position: "BUILD"
+
+services:
+ github:
+ type: GITHUB
+ options:
+ REPOSITORY_OWNER_NAME: "AndroidIDEOfficial"
+ REPOSITORY_NAME: "AndroidIDE"
+ AUTHENTICATION_TOKEN: "{{#environmentVariable}}GH_TOKEN{{/environmentVariable}}"
\ No newline at end of file
diff --git a/.nyx/CHANGELOG.tpl b/.nyx/CHANGELOG.tpl
new file mode 100644
index 0000000000..306cd8743f
--- /dev/null
+++ b/.nyx/CHANGELOG.tpl
@@ -0,0 +1,23 @@
+# AndroidIDE Changelog
+
+{{#releases}}
+## [{{name}}](https://github.com/AndroidIDEOfficial/AndroidIDE/releases/tag/{{name}}) ({{date}})
+
+{{#sections}}
+### {{name}}
+
+{{#commits}}
+* [{{#short5}}{{SHA}}{{/short5}}](https://github.com/AndroidIDEOfficial/AndroidIDE/commit/{{SHA}}) {{message.shortMessage}} ({{authorAction.identity.name}})
+
+{{/commits}}
+{{^commits}}
+No changes.
+{{/commits}}
+{{/sections}}
+{{^sections}}
+No changes.
+{{/sections}}
+{{/releases}}
+{{^releases}}
+No releases.
+{{/releases}}
diff --git a/annotation-ksp/build.gradle.kts b/annotation-ksp/build.gradle.kts
index 732ca3a30c..b9fc837ac3 100644
--- a/annotation-ksp/build.gradle.kts
+++ b/annotation-ksp/build.gradle.kts
@@ -21,7 +21,6 @@ plugins {
group = "com.itsaky.androidide.annotations"
-version = BuildConfig.versionName
dependencies {
implementation(kotlin("stdlib"))
diff --git a/build-logic/ide/src/main/kotlin/BuildConfig.kt b/build-logic/ide/src/main/kotlin/BuildConfig.kt
index aaaa271269..d017f4ec1b 100644
--- a/build-logic/ide/src/main/kotlin/BuildConfig.kt
+++ b/build-logic/ide/src/main/kotlin/BuildConfig.kt
@@ -15,8 +15,8 @@
* along with AndroidIDE. If not, see .
*/
-import com.itsaky.androidide.CI
import org.gradle.api.JavaVersion
+import org.gradle.api.Project
/**
* Build configuration for the IDE.
@@ -24,10 +24,8 @@ import org.gradle.api.JavaVersion
* @author Akash Yadav
*/
object BuildConfig {
-
- /**
- * AndroidIDE's package name.
- */
+
+ /** AndroidIDE's package name. */
const val packageName = "com.itsaky.androidide"
/** The compile SDK version. */
@@ -45,23 +43,7 @@ object BuildConfig {
/** The version code. */
const val versionCode = 214
- /**
- * The version name for the IDE. When in CI build, includes the [releaseVersionName], branch name
- * and the short commit hash.
- */
- val versionName by lazy {
- var version = releaseVersionName
- if (CI.isCiBuild) {
- // e.g. 2.1.2-beta_main-d5e9c9ea
- version += "_${CI.branchName}-${CI.commitHash}"
- }
- version
- }
-
/** The source and target Java compatibility. */
val javaVersion = JavaVersion.VERSION_11
val javaVersionMajor = 11
-
- /** The release version name. */
- const val releaseVersionName = "2.1.4-beta"
}
diff --git a/build-logic/ide/src/main/kotlin/com/itsaky/androidide/CI.kt b/build-logic/ide/src/main/kotlin/com/itsaky/androidide/CI.kt
deleted file mode 100644
index adbce63986..0000000000
--- a/build-logic/ide/src/main/kotlin/com/itsaky/androidide/CI.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * This file is part of AndroidIDE.
- *
- * AndroidIDE is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AndroidIDE is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with AndroidIDE. If not, see .
- */
-
-package com.itsaky.androidide
-
-import java.io.File
-
-/**
- * Information about the CI build.
- *
- * @author Akash Yadav
- */
-object CI {
-
- /** The short commit hash. */
- val commitHash by lazy {
- val sha = System.getenv("GITHUB_SHA")
- shortSha(sha)
- }
-
- /** Name of the current branch. */
- val branchName by lazy {
- System.getenv("GITHUB_REF_NAME") ?: "main" // by default, 'main'
- }
-
- /** Whether the current build is a CI build. */
- val isCiBuild by lazy { "true" == System.getenv("CI") }
-
- private fun shortSha(sha: String): String {
- return ProcessBuilder("git", "rev-parse", "--short", sha)
- .directory(File("."))
- .redirectErrorStream(true)
- .start()
- .inputStream
- .bufferedReader()
- .readText().trim()
- }
-}
diff --git a/build.gradle.kts b/build.gradle.kts
index e562b388d9..c9d2bcb21d 100755
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -17,6 +17,7 @@
import com.android.build.gradle.BaseExtension
import com.itsaky.androidide.plugins.AndroidIDEPlugin
+import com.mooltiverse.oss.nyx.state.State
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
@@ -26,11 +27,7 @@ plugins {
alias(libs.plugins.kotlin) apply false
}
-buildscript {
- dependencies {
- classpath("com.google.android.gms:oss-licenses-plugin:0.10.6")
- }
-}
+buildscript { dependencies { classpath("com.google.android.gms:oss-licenses-plugin:0.10.6") } }
fun Project.configureBaseExtension() {
extensions.findByType(BaseExtension::class)?.run {
@@ -41,14 +38,14 @@ fun Project.configureBaseExtension() {
minSdk = BuildConfig.minSdk
targetSdk = BuildConfig.targetSdk
versionCode = BuildConfig.versionCode
- versionName = BuildConfig.versionName
+ versionName = rootProject.version.toString()
}
compileOptions {
sourceCompatibility = BuildConfig.javaVersion
targetCompatibility = BuildConfig.javaVersion
}
-
+
buildTypes.getByName("debug") { isMinifyEnabled = false }
buildTypes.getByName("release") {
isMinifyEnabled = true
@@ -62,10 +59,9 @@ fun Project.configureBaseExtension() {
}
subprojects {
- apply {
- plugin(AndroidIDEPlugin::class.java)
- }
+ apply { plugin(AndroidIDEPlugin::class.java) }
+ version = rootProject.version
plugins.withId("com.android.application") { configureBaseExtension() }
plugins.withId("com.android.library") { configureBaseExtension() }
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 1efeb997b6..666ea50718 100755
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,5 +1,8 @@
@file:Suppress("UnstableApiUsage")
+import com.mooltiverse.oss.nyx.gradle.NyxExtension
+import com.mooltiverse.oss.nyx.services.github.GitHub
+
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
pluginManagement {
@@ -11,27 +14,21 @@ pluginManagement {
}
}
+plugins { id("com.mooltiverse.oss.nyx") version "1.3.0" }
+
+extensions.configure {
+ configurationFile.set(".nyx.yml")
+}
+
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
-
- maven {
- url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")
- }
-
- maven {
- url = uri("https://jitpack.io")
- }
-
- maven {
- url = uri("https://repo.gradle.org/gradle/libs-releases/")
- }
-
- maven {
- url = uri("https://repo.eclipse.org/content/repositories/lemminx-snapshots/")
- }
+ maven { url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/") }
+ maven { url = uri("https://jitpack.io") }
+ maven { url = uri("https://repo.gradle.org/gradle/libs-releases/") }
+ maven { url = uri("https://repo.eclipse.org/content/repositories/lemminx-snapshots/") }
}
}
@@ -57,15 +54,12 @@ include(
":treeview",
":uidesigner",
":xml-inflater",
-
":gradle-plugin",
-
":lsp:api",
":lsp:models",
":lsp:java",
":lsp:xml",
":lsp:testing",
-
":subprojects:aaptcompiler",
":subprojects:builder-model-impl",
":subprojects:classfile",
@@ -88,3 +82,36 @@ include(
":subprojects:xml-formatter",
":subprojects:xml-utils"
)
+
+/**
+ * Information about the CI build.
+ *
+ * @author Akash Yadav
+ */
+object CI {
+
+ /** The short commit hash. */
+ val commitHash by lazy {
+ val sha = System.getenv("GITHUB_SHA") ?: return@lazy ""
+ shortSha(sha)
+ }
+
+ /** Name of the current branch. */
+ val branchName by lazy {
+ System.getenv("GITHUB_REF_NAME") ?: "main" // by default, 'main'
+ }
+
+ /** Whether the current build is a CI build. */
+ val isCiBuild by lazy { "true" == System.getenv("CI") }
+
+ private fun shortSha(sha: String): String {
+ return ProcessBuilder("git", "rev-parse", "--short", sha)
+ .directory(File("."))
+ .redirectErrorStream(true)
+ .start()
+ .inputStream
+ .bufferedReader()
+ .readText()
+ .trim()
+ }
+}