You're viewing documentation for an older version. View the latest version

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.

Terminal#

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

let terminal = Terminal()
print(terminal is Console) // true
terminal.print("Hello")

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.print("Hello")

Output#

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.

Input#

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)")

Ask#

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

Confirm#

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

Note

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