From 09ad2103e86f7b69e480ded67e16293ed7c10fd5 Mon Sep 17 00:00:00 2001 From: RyuNen344 Date: Sun, 2 Jun 2024 18:37:30 +0900 Subject: [PATCH] feat: impl SDK version generation task (#6) * wip: wip * feat: impl SDK version generation task --- .github/workflows/check.yml | 2 +- .github/workflows/stability.yml | 2 +- glyph-compose/gradle.properties | 2 - .../build.gradle | 3 +- .../consumer-rules.pro | 0 glyph-ktx-compose/gradle.properties | 2 + glyph-ktx/build.gradle | 1 + gradle/sdk-version.gradle | 66 +++++++++++++++++++ .../build.gradle | 0 settings.gradle | 4 +- 10 files changed, 74 insertions(+), 8 deletions(-) delete mode 100644 glyph-compose/gradle.properties rename {glyph-compose => glyph-ktx-compose}/build.gradle (78%) rename {glyph-compose => glyph-ktx-compose}/consumer-rules.pro (100%) create mode 100644 glyph-ktx-compose/gradle.properties create mode 100644 gradle/sdk-version.gradle rename {sample-compose => sample-ktx-compose}/build.gradle (100%) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 3623b60..e2bb00f 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -36,7 +36,7 @@ jobs: strategy: fail-fast: false matrix: - module: [ "glyph-ktx", "glyph-compose" ] + module: [ "glyph-ktx", "glyph-ktx-compose" ] steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/stability.yml b/.github/workflows/stability.yml index ac36c6a..64795d1 100644 --- a/.github/workflows/stability.yml +++ b/.github/workflows/stability.yml @@ -32,7 +32,7 @@ jobs: strategy: fail-fast: false matrix: - module: [ "glyph-ktx", "glyph-compose" ] + module: [ "glyph-ktx", "glyph-ktx-compose" ] steps: - uses: actions/checkout@v4 with: diff --git a/glyph-compose/gradle.properties b/glyph-compose/gradle.properties deleted file mode 100644 index b53c5bc..0000000 --- a/glyph-compose/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -POM_NAME=glyph-compose -POM_DESCRIPTION=glyph-compose diff --git a/glyph-compose/build.gradle b/glyph-ktx-compose/build.gradle similarity index 78% rename from glyph-compose/build.gradle rename to glyph-ktx-compose/build.gradle index 763ffbd..3de8a08 100644 --- a/glyph-compose/build.gradle +++ b/glyph-ktx-compose/build.gradle @@ -8,9 +8,8 @@ apply from: rootProject.layout.projectDirectory.file("gradle/android.gradle") apply from: rootProject.layout.projectDirectory.file("gradle/publish.gradle") apply from: rootProject.layout.projectDirectory.file("gradle/testing.gradle") -android.namespace = "io.github.ryunen344.glyph.compose" +android.namespace = "io.github.ryunen344.glyph.ktx.compose" dependencies { - api fileTree(dir: '../Glyph-Developer-Kit/sdk', include: '*.jar') implementation projects.glyphKtx } diff --git a/glyph-compose/consumer-rules.pro b/glyph-ktx-compose/consumer-rules.pro similarity index 100% rename from glyph-compose/consumer-rules.pro rename to glyph-ktx-compose/consumer-rules.pro diff --git a/glyph-ktx-compose/gradle.properties b/glyph-ktx-compose/gradle.properties new file mode 100644 index 0000000..87463be --- /dev/null +++ b/glyph-ktx-compose/gradle.properties @@ -0,0 +1,2 @@ +POM_NAME=glyph-ktx-compose +POM_DESCRIPTION=glyph-ktx-compose diff --git a/glyph-ktx/build.gradle b/glyph-ktx/build.gradle index 1f16bc5..c92b433 100644 --- a/glyph-ktx/build.gradle +++ b/glyph-ktx/build.gradle @@ -6,6 +6,7 @@ plugins { apply from: rootProject.layout.projectDirectory.file("gradle/android.gradle") apply from: rootProject.layout.projectDirectory.file("gradle/publish.gradle") +apply from: rootProject.layout.projectDirectory.file("gradle/sdk-version.gradle") apply from: rootProject.layout.projectDirectory.file("gradle/testing.gradle") android.namespace = "io.github.ryunen344.glyph.ktx" diff --git a/gradle/sdk-version.gradle b/gradle/sdk-version.gradle new file mode 100644 index 0000000..d184bf9 --- /dev/null +++ b/gradle/sdk-version.gradle @@ -0,0 +1,66 @@ +import javax.inject.Inject + +abstract class GitSubmoduleHashValueSource implements ValueSource { + @Inject + abstract ExecOperations getExecOperations() + + @Override + String obtain() { + return new ByteArrayOutputStream().withStream { os -> + execOperations.exec { + it.commandLine "git", "rev-parse", "HEAD:Glyph-Developer-Kit" + it.standardOutput = os + } + os.toString().trim() + } + } +} + +class GenerateVersionFileTask extends DefaultTask { + + @OutputDirectory + File outputDir + + @Input + String packageName + + @Input + String gitSubmoduleHash + + { + group = 'git' + description = 'Generate SDK version file' + } + + @TaskAction + def invoke() { + outputDir.delete() + File packageDir = new File(outputDir, packageName.replace((char) '.', File.separatorChar)) + packageDir.mkdirs() + File outputFile = new File(packageDir, "Version.kt") + def text = "package ${packageName}\n\n/** This value is generated, automatically. Do not modify. **/\npublic const val GLYPH_SDK_VERSION = \"${gitSubmoduleHash}\"" + new FileOutputStream(outputFile).withStream { os -> + os.write(text.getBytes()) + } + } +} + +def versionDir = project.layout.buildDirectory.dir("sdk-version") + +android.sourceSets { + main { + java.srcDir(versionDir) + } +} + +def generateVersionFileTask = tasks.register("generateVersionFileTask", GenerateVersionFileTask) { + outputDir = versionDir.get().asFile + packageName = android.namespace + gitSubmoduleHash = providers.of(GitSubmoduleHashValueSource.class) {}.get() +} + +afterEvaluate { + tasks.withType(Jar).configureEach { dependsOn(generateVersionFileTask) } + tasks.named("compileDebugKotlin").configure { dependsOn(generateVersionFileTask) } + tasks.named("compileReleaseKotlin").configure { dependsOn(generateVersionFileTask) } +} diff --git a/sample-compose/build.gradle b/sample-ktx-compose/build.gradle similarity index 100% rename from sample-compose/build.gradle rename to sample-ktx-compose/build.gradle diff --git a/settings.gradle b/settings.gradle index 236a82f..d78f49b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -42,7 +42,7 @@ develocity { rootProject.name = "GlyphKtxRoot" include( ":glyph-ktx", - ":glyph-compose", + ":glyph-ktx-compose", ":sample-ktx", - ":sample-compose" + ":sample-ktx-compose" )