Repository: vapor/vapor
File: Sources/Vapor/Application.swift (Swift)

Code before:
        self.didShutdown = false
        self.logger = .init(label: "codes.vapor.application")
        self.storage = .init(logger: self.logger)
        self.lifecycle = .init()
        self.isBooted = false
        self.core.initialize()
        self.caches.initialize()
        self.views.initialize()
        self.passwords.use(.bcrypt)
        self.sessions.initialize()
        self.sessions.use(.memory)
        self.responder.initialize()
        self.responder.use(.default)
        self.servers.initialize()
        self.servers.use(.http)
        self.clients.initialize()
        self.clients.use(.http)
        self.commands.use(self.servers.command, as: "serve", isDefault: true)
        self.commands.use(RoutesCommand(), as: "routes")
        DotEnvFile.load(for: environment, on: .shared(self.eventLoopGroup), fileio: self.fileio, logger: self.logger)
    }
    
    /// Starts the Application using the `start()` command, then waits for any running tasks to complete
    /// If your application is started without arguments, the default argument is used.
    ///
    /// Under normal circumstances, `run `will start the shut down and wait for the web server to (manually) shut down before exiting the application.
    public func run() throws {
        do {
            try self.start()
            try self.running?.onStop.wait()
        } catch {
            self.logger.report(error: error)
            throw error
        }
    }
    
    /// When called, this will execute the startup command provided through an argument. If no startup command is provided, the default is used.
    /// Under normal circumstances, this will start running Vapor's webserver.
    ///
    /// If you `start` Vapor through this method, you'll need to prevent your Swift Executable from closing yourself.
    /// If you want to run your Application indefinitely, or until your code shuts the application down, use `run()` instead.
    public func start() throws {
        try self.boot()
        let command = self.commands.group()
        var context = CommandContext(console: self.console, input: self.environment.commandInput)
        context.application = self
        try self.console.run(command, with: context)
    }

    public func boot() throws {
        guard !self.isBooted else {

Review comment (suggestion):
```suggestion
    /// Under normal circumstances, `run() `will begin the shutdown, then wait for the web server to (manually) shut down before returning.
```
(Yes, the use of both "shut down" and "shutdown" is on purpose 😅)

Code after:
        self.didShutdown = false
        self.logger = .init(label: "codes.vapor.application")
        self.storage = .init(logger: self.logger)
        self.lifecycle = .init()
        self.isBooted = false
        self.core.initialize()
        self.caches.initialize()
        self.views.initialize()
        self.passwords.use(.bcrypt)
        self.sessions.initialize()
        self.sessions.use(.memory)
        self.responder.initialize()
        self.responder.use(.default)
        self.servers.initialize()
        self.servers.use(.http)
        self.clients.initialize()
        self.clients.use(.http)
        self.commands.use(self.servers.command, as: "serve", isDefault: true)
        self.commands.use(RoutesCommand(), as: "routes")
        DotEnvFile.load(for: environment, on: .shared(self.eventLoopGroup), fileio: self.fileio, logger: self.logger)
    }
    
    /// Starts the Application using the `start()` method, then waits for any running tasks to complete
    /// If your application is started without arguments, the default argument is used.
    ///
    /// Under normal circumstances, `run()` begin start the shutdown, then wait for the web server to (manually) shut down before returning.
    public func run() throws {
        do {
            try self.start()
            try self.running?.onStop.wait()
        } catch {
            self.logger.report(error: error)
            throw error
        }
    }
    
    /// When called, this will execute the startup command provided through an argument. If no startup command is provided, the default is used.
    /// Under normal circumstances, this will start running Vapor's webserver.
    ///
    /// If you `start` Vapor through this method, you'll need to prevent your Swift Executable from closing yourself.
    /// If you want to run your Application indefinitely, or until your code shuts the application down, use `run()` instead.
    public func start() throws {
        try self.boot()
        let command = self.commands.group()
        var context = CommandContext(console: self.console, input: self.environment.commandInput)
        context.application = self
        try self.console.run(command, with: context)
    }

    public func boot() throws {
        guard !self.isBooted else {