@@ -5,8 +5,9 @@ import cats.effect.{Deferred, IO}
55import sbt .Keys .*
66import sbt .plugins .*
77import sbt .{given , * }
8+ import sjsonnew .{given , * }
89import stryker4s .config .DashboardReportType
9- import stryker4s .config .codec .CirisConfigDecoders
10+ import stryker4s .config .codec .{ CirceConfigEncoder , CirisConfigDecoders }
1011import stryker4s .config .source .CliConfigSource
1112import stryker4s .log .{Logger , SbtLogger }
1213import stryker4s .run .threshold .ErrorStatus
@@ -68,12 +69,25 @@ object Stryker4sPlugin extends AutoPlugin {
6869
6970 import autoImport .*
7071
72+ implicit private [stryker4s] object DialectJsonFormat
73+ extends JsonFormat [Dialect ]
74+ with CirceConfigEncoder
75+ with CirisConfigDecoders {
76+
77+ def write [J ](x : Dialect , builder : Builder [J ]): Unit =
78+ builder.writeString(x.toString().toLowerCase())
79+ def read [J ](jsOpt : Option [J ], unbuilder : Unbuilder [J ]): Dialect =
80+ jsOpt.flatMap(js => dialectReader.decode(None , unbuilder.readString(js)).toOption).getOrElse {
81+ throw new sjsonnew.DeserializationException (" Expected a string for Dialect" )
82+ }
83+ }
84+
7185 // Default settings for the plugin
7286 override lazy val projectSettings : Seq [Def .Setting [? ]] = Seq (
7387 stryker := strykerTask.evaluated,
7488 stryker / logLevel := Level .Info ,
7589 stryker / onLoadMessage := " " , // Prevents "[info] Set current project to ..." in between mutations
76- strykerMinimumSbtVersion := " 1.7.0 " ,
90+ strykerMinimumSbtVersion := " 1.11.2 " ,
7791 strykerIsSupported := SemanticSelector (s " >= ${strykerMinimumSbtVersion.value}" )
7892 .matches(VersionNumber (sbtVersion.value)),
7993
0 commit comments