You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
1.2 KiB

4 years ago
4 years ago
  1. package nova.monadic_sfx
  2. import monix.eval.Task
  3. // import sttp.client.asynchttpclient.monix.AsyncHttpClientMonixBackend
  4. // import sttp.client._
  5. // import sttp.client.circe._
  6. // import io.circe.generic.auto._
  7. import nova.monadic_sfx.executors._
  8. import cats.effect.Resource
  9. import sttp.client.asynchttpclient.monix.AsyncHttpClientMonixBackend
  10. import io.odin.syntax._
  11. import io.odin.monix._
  12. import monix.eval.TaskApp
  13. import cats.effect.ExitCode
  14. import cats.implicits._
  15. import com.softwaremill.macwire._
  16. object Main extends MainModule with TaskApp {
  17. override def run(args: List[String]): Task[ExitCode] = {
  18. // val startTime = Task.clock
  19. // .monotonic(scala.concurrent.duration.MILLISECONDS)
  20. // .map(Duration.fromNanos(_))
  21. lazy val appResource = for {
  22. // clock <- Resource.liftF(Task(Task.clock))
  23. logger <- consoleLogger().withAsync()
  24. backend <- AsyncHttpClientMonixBackend.resource()
  25. actorSystem <- actorSystemResource(logger)
  26. reqs <- Resource.liftF(Task(wireWith(requesters _)))
  27. schedulers <- Resource.liftF(Task(new Schedulers()))
  28. fxApp <- wireWith(fxAppResource _)
  29. } yield (fxApp)
  30. appResource
  31. .use(fxApp => Task(fxApp.main(args.toArray)))
  32. .as(ExitCode.Success)
  33. }
  34. }