Skip to content

Console Overview

This guide will give you a brief introduction to the Console module, showing you how to output stylized text and request user input.


A default implementation of the Console protocol called Terminal is provided for you to use.

let terminal = Terminal()
print(terminal is Console) // true

The rest of this guide will assume a generic Console, but using Terminal directly will also work fine. You can use any available Container to create a console.

let console = try req.make(Console.self)


Console provides several convenience methods for outputting strings, like print(_:) and warning(_:). All of these methods eventually call output(_:) which is the most powerful output method. This method accepts ConsoleText which supports independently styled string components.

/// Prints "Hello, world", but the word 'world' is blue.
console.output("Hello, " + "world".consoleText(color: .blue))

You can combine as many differently styled fragments to a ConsoleText as you like. All Console methods that output text should have an overload for accepting ConsoleText.


Console offers several methods for requesting input from the user, the most basic of which is input(isSecure:).

/// Accepts input from the terminal until the first newline.
let input = console.input()
console.print("You wrote: \(input)")


Use ask(_:) to supply a prompt and input indicator to the user.

/// Outputs the prompt then requests input.
let name = console.ask("What is your name?")
console.print("You said: \(name)")

The above code will output:

What is your name?
> Vapor
You said: Vapor


Use confirm(_:) to prompt the user for yes / no input.

/// Prompts the user for yes / no input.
if console.confirm("Are you sure?") {
    // they are sure
} else {
    // don't do it!

The above code will output:

Are you sure?
y/n> yes


confirm(_:) will continue to prompt the user until they respond with something recognized as yes or no.