Skip to content

Commit

Permalink
Clarify the browser params for WebOptions (#301)
Browse files Browse the repository at this point in the history
  • Loading branch information
eygraber authored Jan 5, 2024
1 parent 171c477 commit a7418d7
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,7 @@ internal abstract class GradleConventionsKmpDefaults : BuildService<BuildService
override var createCommonJsSourceSet: Boolean = true

override var binaryType: BinaryType = BinaryType.Library
override var webOptions = KmpTarget.WebOptions(
isNodeEnabled = true,
isBrowserEnabled = true,
isLibraryBrowserTestsEnabled = false,
moduleName = null,
)
override var webOptions = KmpTarget.WebOptions()

internal var targets = mutableSetOf<KmpTarget>()

Expand Down
27 changes: 16 additions & 11 deletions conventions-plugin/src/main/kotlin/kmp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@ sealed interface KmpTarget {
object Watchos : KmpTarget

data class WebOptions(
val isNodeEnabled: Boolean,
val isBrowserEnabled: Boolean,
val isLibraryBrowserTestsEnabled: Boolean,
val isNodeEnabled: Boolean = true,
val isBrowserEnabled: Boolean = false,
val isBrowserEnabledForLibraryTests: Boolean = false,
val isBrowserEnabledForExecutables: Boolean = true,
val moduleName: String? = null,
)
}
Expand Down Expand Up @@ -62,15 +63,17 @@ fun KotlinMultiplatformExtension.allKmpTargets(
binaryType: BinaryType = project.gradleConventionsKmpDefaultsService.binaryType,
createCommonJsSourceSet: Boolean = project.gradleConventionsKmpDefaultsService.createCommonJsSourceSet,
) {
val isLibraryBrowserTestsEnabled =
binaryType == BinaryType.Library && webOptions.isLibraryBrowserTestsEnabled
val isBrowserEnabled = when(binaryType) {
BinaryType.Executable -> webOptions.isBrowserEnabled || webOptions.isBrowserEnabledForExecutables
BinaryType.Library -> webOptions.isBrowserEnabled || webOptions.isBrowserEnabledForLibraryTests
}

configureAllKmpTargets(
project = project,
jsBrowser = isLibraryBrowserTestsEnabled || webOptions.isBrowserEnabled,
jsBrowser = isBrowserEnabled,
jsModuleName = webOptions.moduleName,
jsNode = webOptions.isNodeEnabled,
wasmJsBrowser = isLibraryBrowserTestsEnabled || webOptions.isBrowserEnabled,
wasmJsBrowser = isBrowserEnabled,
wasmJsModuleName = webOptions.moduleName,
wasmJsNode = webOptions.isNodeEnabled,
createCommonJsSourceSet = createCommonJsSourceSet,
Expand All @@ -94,8 +97,10 @@ fun KotlinMultiplatformExtension.kmpTargets(
}

if(finalTargets.isNotEmpty()) {
val isLibraryBrowserTestsEnabled =
binaryType == BinaryType.Library && webOptions.isLibraryBrowserTestsEnabled
val isBrowserEnabled = when(binaryType) {
BinaryType.Executable -> webOptions.isBrowserEnabled || webOptions.isBrowserEnabledForExecutables
BinaryType.Library -> webOptions.isBrowserEnabled || webOptions.isBrowserEnabledForLibraryTests
}

configureKmpTargets(
project = project,
Expand All @@ -104,15 +109,15 @@ fun KotlinMultiplatformExtension.kmpTargets(
ios = KmpTarget.Ios in finalTargets,
jvm = KmpTarget.Jvm in finalTargets,
js = KmpTarget.Js in finalTargets,
jsBrowser = isLibraryBrowserTestsEnabled || webOptions.isBrowserEnabled,
jsBrowser = isBrowserEnabled,
jsModuleName = webOptions.moduleName,
jsNode = webOptions.isNodeEnabled,
linux = KmpTarget.Linux in finalTargets,
macos = KmpTarget.Macos in finalTargets,
mingw = KmpTarget.Mingw in finalTargets,
tvos = KmpTarget.Tvos in finalTargets,
wasmJs = KmpTarget.WasmJs in finalTargets,
wasmJsBrowser = isLibraryBrowserTestsEnabled || webOptions.isBrowserEnabled,
wasmJsBrowser = isBrowserEnabled,
wasmJsModuleName = webOptions.moduleName,
wasmJsNode = webOptions.isNodeEnabled,
wasmWasi = KmpTarget.WasmWasi in finalTargets,
Expand Down

0 comments on commit a7418d7

Please sign in to comment.