Skip to content

Commit 7eb3b40

Browse files
authored
chore: Remove package scope property (#954)
1 parent 5275d8e commit 7eb3b40

File tree

5 files changed

+50
-70
lines changed

5 files changed

+50
-70
lines changed
Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,25 @@ package software.amazon.smithy.swift.codegen
66

77
import software.amazon.smithy.codegen.core.SymbolDependency
88
import software.amazon.smithy.swift.codegen.integration.ProtocolGenerator
9-
import kotlin.jvm.optionals.getOrNull
10-
11-
val DEPENDENCY_JSON_NAME = "Dependencies.json"
129

1310
class DependencyJSONGenerator(
1411
val ctx: ProtocolGenerator.GenerationContext,
1512
) {
1613
fun writePackageJSON(dependencies: List<SymbolDependency>) {
17-
ctx.delegator.useFileWriter(DEPENDENCY_JSON_NAME) { writer ->
14+
ctx.delegator.useFileWriter("Dependencies.json") { writer ->
1815
writer.openBlock("[", "]") {
1916
val externalDependencies =
20-
dependencies
21-
.filter {
22-
it.getProperty("url", String::class.java).getOrNull() != null ||
23-
it.getProperty("scope", String::class.java).getOrNull() != null
24-
}
17+
dependencies.filter { it.getProperty("url", String::class.java).isPresent }
2518

2619
val dependenciesByTarget =
2720
externalDependencies
28-
.distinctBy { it.targetName() + it.packageName }
29-
.sortedBy { it.targetName() }
21+
.distinctBy { it.targetName + it.packageName }
22+
.sortedBy { it.targetName }
3023

31-
dependenciesByTarget.forEach { writer.write("\$S,", it.targetName()) }
24+
dependenciesByTarget.forEach { writer.write("\$S,", it.targetName) }
3225
writer.unwrite(",\n")
3326
writer.write("")
3427
}
3528
}
3629
}
3730
}
38-
39-
private fun SymbolDependency.targetName(): String = expectProperty("target", String::class.java)

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/PackageManifestGenerator.kt

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package software.amazon.smithy.swift.codegen
66

77
import software.amazon.smithy.codegen.core.SymbolDependency
88
import software.amazon.smithy.swift.codegen.integration.ProtocolGenerator
9-
import kotlin.jvm.optionals.getOrNull
109

1110
class PackageManifestGenerator(
1211
val ctx: ProtocolGenerator.GenerationContext,
@@ -30,27 +29,21 @@ class PackageManifestGenerator(
3029
}
3130

3231
val externalDependencies =
33-
dependencies
34-
.filter {
35-
it.getProperty("url", String::class.java).getOrNull() != null ||
36-
it.getProperty("scope", String::class.java).getOrNull() != null
37-
}
32+
dependencies.filter { it.getProperty("url", String::class.java).isPresent }
3833

3934
val dependenciesByURL =
4035
externalDependencies
41-
.distinctBy {
42-
it.getProperty("url", String::class.java).getOrNull()
43-
?: "${it.getProperty("scope", String::class.java).get()}.${it.packageName}"
44-
}.sortedBy { it.targetName() }
36+
.distinctBy { it.expectProperty("url", String::class.java) }
37+
.sortedBy { it.targetName }
4538

4639
writer.openBlock("dependencies: [", "],") {
4740
dependenciesByURL.forEach { writePackageDependency(writer, it) }
4841
}
4942

5043
val dependenciesByTarget =
5144
externalDependencies
52-
.distinctBy { it.targetName() + it.packageName }
53-
.sortedBy { it.targetName() }
45+
.distinctBy { it.targetName + it.packageName }
46+
.sortedBy { it.targetName }
5447

5548
writer.openBlock("targets: [", "]") {
5649
writer.openBlock(".target(", "),") {
@@ -76,14 +69,8 @@ class PackageManifestGenerator(
7669
dependency: SymbolDependency,
7770
) {
7871
writer.openBlock(".package(", "),") {
79-
val scope = dependency.getProperty("scope", String::class.java).getOrNull()
80-
scope?.let {
81-
writer.write("id: \$S,", "$it.${dependency.packageName}")
82-
}
83-
val url = dependency.getProperty("url", String::class.java).getOrNull()
84-
url?.let {
85-
writer.write("url: \$S,", it)
86-
}
72+
val url = dependency.expectProperty("url", String::class.java)
73+
writer.write("url: \$S,", url)
8774
writer.write("exact: \$S", dependency.version)
8875
}
8976
}
@@ -93,13 +80,11 @@ class PackageManifestGenerator(
9380
dependency: SymbolDependency,
9481
) {
9582
writer.openBlock(".product(", "),") {
96-
val target = dependency.targetName()
97-
writer.write("name: \$S,", target)
98-
val scope = dependency.getProperty("scope", String::class.java).getOrNull()
99-
val packageName = scope?.let { "$it.${dependency.packageName}" } ?: dependency.packageName
100-
writer.write("package: \$S", packageName)
83+
writer.write("name: \$S,", dependency.targetName)
84+
writer.write("package: \$S", dependency.packageName)
10185
}
10286
}
10387
}
10488

105-
private fun SymbolDependency.targetName(): String = expectProperty("target", String::class.java)
89+
val SymbolDependency.targetName: String
90+
get() = expectProperty("target", String::class.java)

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/SwiftDependency.kt

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,7 @@ class SwiftDependency(
1414
private val location: String,
1515
private val localPath: String,
1616
override var packageName: String,
17-
private val distributionMethod: DistributionMethod,
1817
) : Dependency {
19-
enum class DistributionMethod {
20-
SPR,
21-
GIT,
22-
}
23-
2418
companion object {
2519
val NONE =
2620
SwiftDependency(
@@ -30,7 +24,6 @@ class SwiftDependency(
3024
"",
3125
"",
3226
"",
33-
DistributionMethod.GIT,
3427
)
3528
val SWIFT =
3629
SwiftDependency(
@@ -40,7 +33,6 @@ class SwiftDependency(
4033
"",
4134
"",
4235
"",
43-
DistributionMethod.GIT,
4436
)
4537
val XCTest =
4638
SwiftDependency(
@@ -50,7 +42,6 @@ class SwiftDependency(
5042
"",
5143
"",
5244
"",
53-
DistributionMethod.GIT,
5445
)
5546
val CLIENT_RUNTIME = smithySwiftDependency("ClientRuntime")
5647
val SMITHY = smithySwiftDependency("Smithy")
@@ -80,29 +71,19 @@ class SwiftDependency(
8071
"https://github.com/smithy-lang/smithy-swift",
8172
"../../../smithy-swift",
8273
"smithy-swift",
83-
DistributionMethod.GIT,
8474
)
8575
}
8676

8777
override fun getDependencies(): List<SymbolDependency> = listOf(toSymbolDependency())
8878

89-
private fun toSymbolDependency(): SymbolDependency {
90-
val builder =
91-
SymbolDependency
92-
.builder()
93-
.putProperty("target", target)
94-
.putProperty("branch", branch)
95-
.putProperty("localPath", localPath)
96-
.packageName(packageName)
97-
.version(version)
98-
when (distributionMethod) {
99-
DistributionMethod.GIT -> {
100-
builder.putProperty("url", location)
101-
}
102-
DistributionMethod.SPR -> {
103-
builder.putProperty("scope", location)
104-
}
105-
}
106-
return builder.build()
107-
}
79+
private fun toSymbolDependency(): SymbolDependency =
80+
SymbolDependency
81+
.builder()
82+
.putProperty("target", target)
83+
.putProperty("branch", branch)
84+
.putProperty("localPath", localPath)
85+
.putProperty("url", location)
86+
.packageName(packageName)
87+
.version(version)
88+
.build()
10889
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import software.amazon.smithy.swift.codegen.TestContext
1313
import software.amazon.smithy.swift.codegen.defaultSettings
1414
import software.amazon.smithy.swift.codegen.protocolgeneratormocks.MockHTTPAWSJson11ProtocolGenerator
1515

16-
class ServiceClientJSONManifestGeneratorTests {
16+
class DependencyJSONGeneratorTests {
1717
private val testContext = setupTests("simple-service-with-operation-and-dependency.smithy", "smithy.example#Example")
1818

1919
@Test

smithy-swift-codegen/src/test/kotlin/software/amazon/smithy/swift/codegen/manifestanddocs/PackageManifestGeneratorTests.kt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import io.kotest.matchers.string.shouldStartWith
1010
import org.junit.jupiter.api.Assertions.assertNotNull
1111
import org.junit.jupiter.api.Test
1212
import software.amazon.smithy.swift.codegen.PackageManifestGenerator
13+
import software.amazon.smithy.swift.codegen.SwiftDependency
1314
import software.amazon.smithy.swift.codegen.TestContext
1415
import software.amazon.smithy.swift.codegen.defaultSettings
1516
import software.amazon.smithy.swift.codegen.protocolgeneratormocks.MockHTTPAWSJson11ProtocolGenerator
@@ -48,6 +49,21 @@ class PackageManifestGeneratorTests {
4849
packageManifest.shouldContain(expected)
4950
}
5051

52+
@Test
53+
fun `it renders package manifest file with dependencies`() {
54+
val packageManifest = testContext.manifest.getFileString("Package.swift").get()
55+
assertNotNull(packageManifest)
56+
val expected = """
57+
dependencies: [
58+
.package(
59+
url: "https://github.com/smithy-lang/smithy-swift",
60+
exact: "0.0.1"
61+
),
62+
],
63+
"""
64+
packageManifest.shouldContain(expected)
65+
}
66+
5167
@Test
5268
fun `it renders package manifest file with target and test target`() {
5369
val packageManifest = testContext.manifest.getFileString("Package.swift").get()
@@ -57,6 +73,10 @@ class PackageManifestGeneratorTests {
5773
.target(
5874
name: "MockSDK",
5975
dependencies: [
76+
.product(
77+
name: "ClientRuntime",
78+
package: "smithy-swift"
79+
),
6080
]
6181
),
6282
.testTarget(
@@ -82,6 +102,9 @@ class PackageManifestGeneratorTests {
82102
TestContext.initContextFrom(smithyFile, serviceShapeId, MockHTTPAWSJson11ProtocolGenerator()) { model ->
83103
model.defaultSettings(serviceShapeId, "MockSDK", "2019-12-16", "MockSDKID")
84104
}
105+
context.generationCtx.delegator.useFileWriter("xyz.swift") { writer ->
106+
writer.addDependency(SwiftDependency.CLIENT_RUNTIME)
107+
}
85108
PackageManifestGenerator(context.generationCtx).writePackageManifest(context.generationCtx.delegator.dependencies)
86109
context.generationCtx.delegator.flushWriters()
87110
return context

0 commit comments

Comments
 (0)