Skip to content

Commit d5decf3

Browse files
committed
feat: minor version strategy rules
1 parent 20da6c0 commit d5decf3

File tree

8 files changed

+76
-1
lines changed

8 files changed

+76
-1
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: Minor version bump check
2+
on:
3+
pull_request:
4+
5+
jobs:
6+
minor-version-bump-check:
7+
if: github.head_ref == '^v\d+\.\d+.*$' # Only runs on branches starting with vX.X (e.g., v1.2, v1.2.3, v1.2-main)
8+
permissions: {}
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Minor version bump check
12+
uses: awslabs/aws-kotlin-repo-tools/.github/actions/minor-version-bump@minor-version-strategy # TODO: Change branch to main when done testing

build.gradle.kts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55
import aws.sdk.kotlin.gradle.dsl.configureLinting
6+
import aws.sdk.kotlin.gradle.dsl.configureMinorVersionStrategyRules
67
import aws.sdk.kotlin.gradle.dsl.configureNexus
78
import aws.sdk.kotlin.gradle.util.typedProp
89

@@ -106,3 +107,9 @@ val lintPaths = listOf(
106107
)
107108

108109
configureLinting(lintPaths)
110+
configureMinorVersionStrategyRules(lintPaths)
111+
112+
// Set SDK version from gradle.properties as a system property for 'configureMinorVersionStrategyRules' to use
113+
tasks.withType<JavaExec> {
114+
systemProperty("sdkVersion", findProperty("sdkVersion") ?: throw Exception("sdkVersion not set"))
115+
}

gradle/libs.versions.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ksp-version = "2.2.0-2.0.2" # Keep in sync with kotlin-version
44

55
dokka-version = "2.0.0"
66

7-
aws-kotlin-repo-tools-version = "0.4.49"
7+
aws-kotlin-repo-tools-version = "0.0.0"
88

99
# libs
1010
coroutines-version = "1.10.2"
@@ -30,6 +30,7 @@ jsoup-version = "1.20.1"
3030

3131
[libraries]
3232
aws-kotlin-repo-tools-build-support = { module="aws.sdk.kotlin.gradle:build-support", version.ref = "aws-kotlin-repo-tools-version" }
33+
aws-kotlin-repo-tools-ktlint-rules = { module = "aws.sdk.kotlin.gradle:ktlint-rules", version.ref = "aws-kotlin-repo-tools-version" }
3334

3435
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin-version" }
3536
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin-version" }
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
plugins {
7+
kotlin("jvm")
8+
}
9+
10+
kotlin {
11+
sourceSets {
12+
main {
13+
dependencies {
14+
implementation(libs.aws.kotlin.repo.tools.ktlint.rules)
15+
}
16+
}
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package aws.sdk.kotlin.ktlintrules.minorversionstrategy
7+
8+
import com.pinterest.ktlint.cli.ruleset.core.api.RuleSetProviderV3
9+
import com.pinterest.ktlint.rule.engine.core.api.RuleProvider
10+
import com.pinterest.ktlint.rule.engine.core.api.RuleSetId
11+
import software.aws.ktlint.rules.apisScheduledForRemovalRule
12+
13+
/**
14+
* Ruleset provider for AWS SDK Kotlin minor-version-bump-specific Ktlint rules.
15+
*/
16+
class MinorVersionStrategyRuleSetProvider : RuleSetProviderV3(RuleSetId("minor-version-strategy-rules")) {
17+
private val sdkVersion = System.getProperty("sdkVersion").split(".")
18+
private val majorVersion = sdkVersion[0].toInt()
19+
private val minorVersion = sdkVersion[1].toInt()
20+
21+
override fun getRuleProviders(): Set<RuleProvider> = setOf(
22+
RuleProvider {
23+
// Look for APIs that are scheduled for removal in upcoming minor version
24+
apisScheduledForRemovalRule(majorVersion, minorVersion + 1)
25+
},
26+
)
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
aws.sdk.kotlin.ktlintrules.minorversionstrategy.MinorVersionStrategyRuleSetProvider

settings.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ include(":hll")
5858
include(":hll:hll-codegen")
5959
include(":hll:hll-mapping-core")
6060
include(":services")
61+
include("ktlint-rules:minor-version-strategy")
62+
6163
include(":tests")
6264
include(":tests:codegen")
6365
include(":tests:codegen:event-stream")

tests/codegen/checksums/src/test/kotlin/aws/sdk/kotlin/tests/codegen/checksums/ChecksumBusinessMetricsTest.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ import aws.smithy.kotlin.runtime.client.config.RequestHttpChecksumConfig
1313
import aws.smithy.kotlin.runtime.client.config.ResponseHttpChecksumConfig
1414
import kotlin.test.Test
1515

16+
// TODO: REMOVE THIS WHEN DONE TESTING
17+
public annotation class DeprecatedUntilVersion(
18+
val major: Int,
19+
val minor: Int,
20+
)
21+
22+
@DeprecatedUntilVersion(1, 6)
1623
class ChecksumBusinessMetricsTest {
1724
@Test
1825
fun defaultConfigBusinessMetrics() = runChecksumTest(

0 commit comments

Comments
 (0)