Skip to content

LimeBeck/kmp-resources-plugin

Repository files navigation

Kotlin Multiplatform Resources Gradle Plugin

Gradle Plugin Portal

Gradle plugin for providing build-time multiplatform resources for Kotlin applications.

Usage

build.gradle.kts:

plugins {
    kotlin("multiplatform") version "2.0.0"
    id("dev.limebeck.kmp-resources") version "0.0.3"
}

kotlin {
    sourceSets.commonMain.dependencies {
        implementation("dev.limebeck:kmp-resources-core:0.0.3")
    }
}

kmpResources {
    // Optional: Package name for generated classes. Default is "dev.limebeck.res"
    packageName.set("dev.limebeck.example.res") 
    
    // Optional: Name of the folder in src/<sourceSet>/ containing resources. Default is "resources"
    resourcesFolderName.set("resources") 
    
    // Optional: Strategy for handling resource overrides between source sets. Default is OVERRIDE
    // OVERRIDE - files in child source sets override files in parent source sets
    // USE_COMMON - keep files from parent source sets
    // FAIL - throw exception on duplicate
    overrideStrategy.set(dev.limebeck.kmpResources.ResourceOverrideStrategy.OVERRIDE)

    // Optional: Generate resources on project sync. Default is true
    generateOnSync.set(true)
}

It will generate code like this (for src/commonMain/resources/image.png):

package dev.limebeck.example.res

import dev.limebeck.kmpResources.ResourceDirectory
import dev.limebeck.kmpResources.ResourceFile
import dev.limebeck.kmpResources.ResourceItem
import kotlin.String
import kotlin.collections.List

public expect object Res : ResourceDirectory {
  override val name: String

  override val items: List<ResourceItem>

  public val image: ResourceFile
}

You can use resources in your code:

import dev.limebeck.example.res.Res

fun main() {
    val imageName = Res.image.name
    val imageType = Res.image.type
    val imageBytes = Res.image.readBytes()
}

Example available in example/build.gradle.kts and example/src/linuxX64Test/kotlin/ResourcesTest.kt

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages