✎ Edit on GitHub

# Commands

Custom console commands on Vapor are a breeze.

## Example

To make a custom console command we must first create a new `.swift` file, import `Vapor` and `Console`, and implement the `Command` protocol.

    import Vapor
    import Console

    final class MyCustomCommand: Command {
        public let id = "command"
        public let help = ["This command does things, like foo, and bar."]
        public let console: ConsoleProtocol

        public init(console: ConsoleProtocol) {
            self.console = console
        }

        public func run(arguments: [String]) throws {
            console.print("running custom command...")
        }
    }

- The id property is the string you will type in the console to access the command. `.build/debug/App command` will run the Custom Command.
- The help property is the help message that will give your custom command's users some idea of how to access it.
- The console property is the object passed to your custom command that adheres to the console protocol, allowing manipulation of the console.
- The run method is where you put the logic relating to your command.

After we work our magic in the Custom Command file, we switch over to our `main.swift` file and add the custom command to the droplet like so.

    drop.commands.append(MyCustomCommand(console: drop.console))

This allows Vapor access to our custom command and lets it know to display it in the `--help` section of the program.

After compiling the application we can run our custom command like so.

    .build/debug/App command