IOApp

trait IOApp

App type that runs a cats.effect.IO. Shutdown occurs after the IO completes, as follows:

App type that runs a cats.effect.IO. Shutdown occurs after the IO 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 IO 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 IO 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.syntax.all._

object MyApp extends IOApp {
 def run(args: List[String]): IO[ExitCode] =
   args.headOption match {
     case Some(name) =>
       IO(println(s"Hello, ${name}.")).as(ExitCode.Success)
     case None =>
       IO(System.err.println("Usage: MyApp name")).as(ExitCode(2))
   }
}
Companion
object
class Object
trait Matchable
class Any
trait Simple

Value members

Abstract methods

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

Produces the IO to be run as an app.

Produces the IO to be run as an app.

Returns

the cats.effect.ExitCode the JVM exits with

Concrete methods

def main(args: Array[String]): Unit

The main method that runs the IO returned by run and exits the app with the resulting code on completion.

The main method that runs the IO returned by run and exits the app with the resulting code on completion.