This repository has been archived by the owner on Sep 7, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6ec1cb6
commit 444c3a9
Showing
15 changed files
with
369 additions
and
177 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# modb-extension app | ||
|
||
This application creates and updates the data that you can find in the `/data` folder of this repository. | ||
|
||
## How to run | ||
|
||
1. Setup config by creating a config file `tooling/app/src/main/resources/config.toml` with content: | ||
```toml | ||
[modb.extension.config] | ||
dataDirectory="" | ||
``` | ||
Set `dataDirectory` to the absolute path of json files on your machine. | ||
2. Run application via `tooling/app/src/main/kotlin/io/github/manamiproject/modb/extension/Main.kt` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 42 additions & 0 deletions
42
tooling/app/src/main/kotlin/io/github/manamiproject/modb/extension/config/AppConfig.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package io.github.manamiproject.modb.extension.config | ||
|
||
import io.github.manamiproject.modb.core.config.ConfigRegistry | ||
import io.github.manamiproject.modb.core.config.DefaultConfigRegistry | ||
import io.github.manamiproject.modb.core.config.StringPropertyDelegate | ||
import io.github.manamiproject.modb.core.extensions.Directory | ||
import io.github.manamiproject.modb.core.extensions.directoryExists | ||
import java.net.URI | ||
import kotlin.io.path.Path | ||
|
||
/** | ||
* Implementation of [Config] which contains all necessary properties. | ||
* @since 1.0.0 | ||
* @param configRegistry Implementation of [ConfigRegistry] used for populating properties. Uses [DefaultConfigRegistry] by default. | ||
*/ | ||
class AppConfig( | ||
configRegistry: ConfigRegistry = DefaultConfigRegistry, | ||
) : Config { | ||
|
||
private val dataDirectory: String by StringPropertyDelegate( | ||
namespace = NAMESPACE, | ||
configRegistry = configRegistry, | ||
) | ||
|
||
private val animeDataset: String by StringPropertyDelegate( | ||
namespace = NAMESPACE, | ||
configRegistry = configRegistry, | ||
default = "https://raw.githubusercontent.com/manami-project/anime-offline-database/master/anime-offline-database.zip" | ||
) | ||
|
||
override fun dataDirectory(): Directory { | ||
val path = Path(dataDirectory) | ||
check(path.directoryExists()) { "Given value for dataDirectory [$dataDirectory] doesn't exist or is not a directory." } | ||
return path | ||
} | ||
|
||
override fun animeDataSet(): URI = URI(animeDataset) | ||
|
||
companion object { | ||
private const val NAMESPACE = "modb.extension.config" | ||
} | ||
} |
35 changes: 35 additions & 0 deletions
35
tooling/app/src/main/kotlin/io/github/manamiproject/modb/extension/config/Config.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package io.github.manamiproject.modb.extension.config | ||
|
||
import io.github.manamiproject.modb.core.extensions.Directory | ||
import java.net.URI | ||
import java.time.Clock | ||
|
||
/** | ||
* Contains all configurable and directly derived properties. | ||
* @since 1.0.0 | ||
*/ | ||
interface Config { | ||
|
||
/** | ||
* Returns the directory in which the `*.json` files are being saved. | ||
* @since 1.0.0 | ||
* @return Path to the JSON files created by the app. | ||
*/ | ||
fun dataDirectory(): Directory | ||
|
||
/** | ||
* Source of the anime data set. | ||
* Expected is the format defined [here](https://github.com/manami-project/anime-offline-database). | ||
* @since 1.0.0 | ||
* @return [URI] pointing to the anime data set. | ||
*/ | ||
fun animeDataSet(): URI | ||
|
||
/** | ||
* Clock being used whenever dates and timestamps are created. | ||
* Default is system default zone. | ||
* @since 1.0.0 | ||
* @return Instance of [Clock] as basis for any type of date instances. | ||
*/ | ||
fun clock(): Clock = Clock.systemDefaultZone() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
24 changes: 24 additions & 0 deletions
24
tooling/app/src/test/kotlin/io/github/manamiproject/modb/extension/TestingAssets.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,34 @@ | ||
package io.github.manamiproject.modb.extension | ||
|
||
import io.github.manamiproject.modb.core.config.AnimeId | ||
import io.github.manamiproject.modb.core.config.ConfigRegistry | ||
import io.github.manamiproject.modb.core.downloader.Downloader | ||
import io.github.manamiproject.modb.core.extensions.Directory | ||
import io.github.manamiproject.modb.extension.config.Config | ||
import io.github.manamiproject.modb.test.shouldNotBeInvoked | ||
import java.net.URI | ||
import java.time.Clock | ||
import java.time.LocalDate | ||
import java.time.LocalDateTime | ||
|
||
internal object TestDownloader: Downloader { | ||
override suspend fun download(id: AnimeId, onDeadEntry: suspend (AnimeId) -> Unit): String = shouldNotBeInvoked() | ||
} | ||
|
||
internal object TestConfigRegistry: ConfigRegistry { | ||
override fun boolean(key: String): Boolean = shouldNotBeInvoked() | ||
override fun double(key: String): Double = shouldNotBeInvoked() | ||
override fun <T : Any> list(key: String): List<T> = shouldNotBeInvoked() | ||
override fun localDate(key: String): LocalDate = shouldNotBeInvoked() | ||
override fun localDateTime(key: String): LocalDateTime = shouldNotBeInvoked() | ||
override fun long(key: String): Long = shouldNotBeInvoked() | ||
override fun <T : Any> map(key: String): Map<String, T> = shouldNotBeInvoked() | ||
override fun offsetDateTime(key: String) = shouldNotBeInvoked() | ||
override fun string(key: String): String = shouldNotBeInvoked() | ||
} | ||
|
||
internal object TestConfig: Config { | ||
override fun dataDirectory(): Directory = shouldNotBeInvoked() | ||
override fun animeDataSet(): URI = shouldNotBeInvoked() | ||
override fun clock(): Clock = shouldNotBeInvoked() | ||
} |
Oops, something went wrong.