TaskApp

trait TaskApp

Safe App type that executes a Task. Shutdown occurs after the Task completes, as follows:

  • If completed with ExitCode.Success, the main method exits and shutdown is handled by the platform.

  • If completed with any other ExitCode, sys.exit is called with the specified code.

  • If the Task raises an error, the stack trace is printed to standard error and sys.exit(1) is called.

When a shutdown is requested via a signal, the Task is canceled and we wait for the IO to release any resources. The process exits with the numeric value of the signal plus 128.

 import cats.effect._
 import cats.implicits._
 import monix.eval._

 object MyApp extends TaskApp {
   def run(args: List[String]): Task[ExitCode] =
     args.headOption match {
       case Some(name) =>
         Task(println(s"Hello, \${name}.")).as(ExitCode.Success)
       case None =>
         Task(System.err.println("Usage: MyApp name")).as(ExitCode(2))
     }
 }

N.B. this is homologous with cats.effect.IOApp, but meant for usage with Task.

Works on top of JavaScript as well ;-)

class Object
trait Matchable
class Any

Value members

Abstract methods

def run(args: List[String]): Task[ExitCode]

Concrete methods

final def main(args: Array[String]): Unit
protected def options: Options

Options for executing the Task action. The default value is defined in defaultOptions, but can be overridden.

Options for executing the Task action. The default value is defined in defaultOptions, but can be overridden.

protected def scheduler: Scheduler

Scheduler for executing the Task action. Defaults to global, but can be overridden.

Scheduler for executing the Task action. Defaults to global, but can be overridden.

Implicits

Implicits

implicit lazy protected val catsEffect: ConcurrentEffect[Task]

Provides the cats.effect.ConcurrentEffect instance of this runtime environment.

Provides the cats.effect.ConcurrentEffect instance of this runtime environment.