Skip to content

Commit e40205e

Browse files
giacomocavalierinicolasfara
authored andcommitted
fix: fix configuration parsing
1 parent 6092729 commit e40205e

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/main/scala/dev/atedeg/Configuration.scala

+11-6
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
package dev.atedeg
22

33
import scala.util.Try
4-
54
import better.files.File
6-
import io.circe.Json
5+
import io.circe.{Decoder, Json}
76
import io.circe.generic.auto.*
87
import io.circe.yaml.parser
9-
import cats.implicits._
8+
import cats.implicits.*
109

1110
final case class Selector(selector: String)
1211
final case class Configuration(ignored: List[Selector], tables: List[TableConfig])
1312
final case class TableConfig(name: String, columns: List[ColumnConfig], rows: List[Selector])
1413
final case class ColumnConfig(name: String, selector: String)
1514

1615
object Configuration {
16+
private val configFile = ".ubidoc"
1717

1818
def read(defaultLocation: File): Either[String, Configuration] =
19-
Try((defaultLocation / ".unidoc").contentAsString).toEither.leftMap(_.toString).flatMap(parse)
19+
Try((defaultLocation / configFile).contentAsString).toEither.leftMap(_.toString).flatMap(parse)
2020

21-
private def parse(raw: String): Either[String, Configuration] =
21+
def parse(raw: String): Either[String, Configuration] =
2222
parser.parse(raw).toOption.flatMap(parseJson).toRight("Can not parse configuration file")
23-
private def parseJson(json: Json): Option[Configuration] = json.as[Configuration].toOption
23+
24+
private def parseJson(json: Json): Option[Configuration] = {
25+
implicit val decoder: Decoder[List[Selector]] =
26+
Decoder.decodeList(Decoder.decodeString.map(Selector(_)))
27+
json.as[Configuration].toOption
28+
}
2429
}
2530

2631
object Selector {

0 commit comments

Comments
 (0)