Check if icons are referenced

also remove one unreferenced icon
This commit is contained in:
ligi 2022-08-20 15:10:13 +02:00
parent 6d16398f74
commit 8f9a9327c6
No known key found for this signature in database
GPG Key ID: 8E81894010ABF23D
3 changed files with 16 additions and 10 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

View File

@ -4,15 +4,10 @@ import com.beust.klaxon.JsonArray
import java.io.File import java.io.File
import com.beust.klaxon.JsonObject import com.beust.klaxon.JsonObject
import com.beust.klaxon.Klaxon import com.beust.klaxon.Klaxon
import com.squareup.moshi.Moshi
import io.ipfs.kotlin.IPFS
import io.ipfs.kotlin.IPFSConfiguration
import okhttp3.OkHttpClient
import org.ethereum.lists.chains.model.* import org.ethereum.lists.chains.model.*
import org.kethereum.erc55.isValid import org.kethereum.erc55.isValid
import org.kethereum.model.Address import org.kethereum.model.Address
import org.kethereum.rpc.HttpEthereumRPC import org.kethereum.rpc.HttpEthereumRPC
import java.time.Duration
import kotlin.io.OnErrorAction.* import kotlin.io.OnErrorAction.*
val parsedShortNames = mutableSetOf<String>() val parsedShortNames = mutableSetOf<String>()
@ -97,8 +92,13 @@ private fun doChecks(doRPCConnect: Boolean, doIconDownload: Boolean) {
} }
val allIcons = iconsPath.listFiles() ?: return val allIcons = iconsPath.listFiles() ?: return
val allIconCIDs = mutableSetOf<String>()
allIcons.forEach { allIcons.forEach {
checkIcon(it, doIconDownload) checkIcon(it, doIconDownload, allIconCIDs)
}
iconsDownloadPath.listFiles().forEach {
if (!allIconCIDs.contains(it.name)) throw UnreferencedIcon(it.name, iconsDownloadPath)
} }
allFiles.filter { it.isDirectory }.forEach { _ -> allFiles.filter { it.isDirectory }.forEach { _ ->
@ -106,7 +106,7 @@ private fun doChecks(doRPCConnect: Boolean, doIconDownload: Boolean) {
} }
} }
fun checkIcon(icon: File, withIconDownload: Boolean) { fun checkIcon(icon: File, withIconDownload: Boolean, allIconCIDs: MutableSet<String>) {
println("checking Icon " + icon.name) println("checking Icon " + icon.name)
val obj: JsonArray<*> = Klaxon().parseJsonArray(icon.reader()) val obj: JsonArray<*> = Klaxon().parseJsonArray(icon.reader())
println("found variants " + obj.size) println("found variants " + obj.size)
@ -121,6 +121,8 @@ fun checkIcon(icon: File, withIconDownload: Boolean) {
error("url must start with ipfs://") error("url must start with ipfs://")
} }
allIconCIDs.add(url.removePrefix("ipfs://"))
if (withIconDownload) { if (withIconDownload) {
@ -329,7 +331,7 @@ fun checkChain(chainFile: File, connectRPC: Boolean) {
} }
} }
fun String.normalizeName() = replace(" ","").uppercase() fun String.normalizeName() = replace(" ", "").uppercase()
/* /*
moshi fails for extra commas moshi fails for extra commas
@ -359,6 +361,6 @@ private fun getNumber(jsonObject: JsonObject, field: String): Long {
return when (val chainId = jsonObject[field]) { return when (val chainId = jsonObject[field]) {
is Int -> chainId.toLong() is Int -> chainId.toLong()
is Long -> chainId is Long -> chainId
else -> throw(Exception("not a number at $field")) else -> throw (Exception("not a number at $field"))
} }
} }

View File

@ -1,5 +1,7 @@
package org.ethereum.lists.chains.model package org.ethereum.lists.chains.model
import java.io.File
class FileNameMustMatchChainId : Exception("chainId must match the filename") class FileNameMustMatchChainId : Exception("chainId must match the filename")
class ExtensionMustBeJSON : Exception("filename extension must be json") class ExtensionMustBeJSON : Exception("filename extension must be json")
class ShouldHaveNoExtraFields(fields: Set<String>) : Exception("should have no extra field $fields") class ShouldHaveNoExtraFields(fields: Set<String>) : Exception("should have no extra field $fields")
@ -34,3 +36,5 @@ class NativeCurrencySymbolMustHaveLessThan7Chars: Exception("Native currency sym
class NativeCurrencyCanOnlyHaveSymbolNameAndDecimals: Exception("Native currency can only have symbol decimals and name") class NativeCurrencyCanOnlyHaveSymbolNameAndDecimals: Exception("Native currency can only have symbol decimals and name")
class NativeCurrencyDecimalMustBeInt: Exception("Native currency decimals must be int") class NativeCurrencyDecimalMustBeInt: Exception("Native currency decimals must be int")
class NativeCurrencyNameMustBeString: Exception("Native currency name must be string") class NativeCurrencyNameMustBeString: Exception("Native currency name must be string")
class UnreferencedIcon(fileName: String, iconsDownloadPath: File): Exception("Found file $fileName in $iconsDownloadPath that is not referenced")