This repository is (will) be archived as I can no longer maintain it! But @rocketraman has forked it and published to mavencentral: https://github.com/rocketraman/cfg4k please continue using his repo!
Cfg4k is a configuration library made for Kotlin in Kotlin!
Features
- Automatic reload
- Interface binding
- Ability to handle data classes automatically
- All the complex types and generics are supported
- Huge flexibility, custom sources
- Easy to use
- Bytebuddy provider will be able to compile your bindings at runtime (You will need to add the cfg4k-bytebuddy to your dependencies.)
For further information, use the wiki
- Add the Bintray repository:
repositories {
jcenter()
}
- Add the dependency for the module(s) that you are going to use
compile 'com.jdiazcano.cfg4k:cfg4k-core:$VERSION'
fun main(args: Array<String>) {
val source = ClassPathConfigSource("global.properties") // Create source
val loader = PropertyConfigLoader(source) // Create loader
val provider = ProxyConfigProvider(loader) // Create provider
val databaseConfig = provider.bind<DatabaseConfig>("database") // bind and use
println("Name: ${databaseConfig.name()}")
println("Url: ${databaseConfig.url()}")
println("Port: ${databaseConfig.port()}")
}
/**
* This interface defines a database configuration
*/
interface DatabaseConfig {
/**
* You can have javadocs inside your properties and this is really cool
*/
fun url(): String
fun port(): Int
fun name(): String
// if you have an unused property you know it and you can delete it
val unused: String
@Deprecated("You can even deprecate properties!")
fun deprecated(): Boolean
val youCanuseValuesToo: String
val andNullables: Int?
}
Licensed under the Apache License, Version 2.0. See LICENSE file.