美文网首页
Vapor 2.0 - 命令(Commands)

Vapor 2.0 - 命令(Commands)

作者: 韩云智VL | 来源:发表于2017-08-07 13:51 被阅读0次

前往 Vapor 2.0 - 文档目录

除了由Vapor提供的命令(如服务(server)和路由(routes)),您还可以构建自己的自定义命令。

笔记
命令是使用定时任务(CRON jobs)来编写应用程序的一种很好的方式。

例子(Example)

要创建一个自定义控制台命令,我们必须首先创建一个新的.swift文件,导入Vapor和控制台(Console),并实现命令(Command)协议。

import Vapor
import Console

final class MyCustomCommand: Command {
    public let id = "my-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...")
    }
}
  • id属性是您将在控制台中输入的字符串,以访问命令。.build/debug/App command将运行定制命令。
  • help属性是帮助消息,它将给您的定制命令的用户一些关于如何访问它的命令。
  • console(控制台)属性是传递到您的自定义命令的对象,它遵循控制台协议,允许操纵控制台。
  • run方法是将与您的命令相关的逻辑放在哪里。

配置初始化(Config Initializable)

为了使我们的命令可配置,将它与ConfigInitializable相一致。

extension MyCustomCommand: ConfigInitializable {
    public convenience init(config: Config) throws {
        let console = try config.resolveConsole()
        self.init(console: console)
    }
}

添加到Droplet(Add to Droplet)

在定制命令文件中工作之后,我们切换到我们的main.swift文件,并将定制命令添加到这样的Droplet中。

import Vapor

let config = try Config()
try config.addConfigurable(command: MyCustomCommand.init, name: "my-command")

let drop = try Droplet(config)

这允许Vapor访问我们的自定义命令,并让它知道在程序的--help部分显示它。

配置(Configure)

现在您已经将命令配置为可配置,只需将其添加到您的Config/droplet.json文件中的commands数组中。
Config/droplet.json

{
    ...,
    "commands": ["my-command"],
    ...,
}

编译完应用程序后,我们可以像这样运行我们的自定义命令。

vapor run my-command

相关文章

网友评论

      本文标题:Vapor 2.0 - 命令(Commands)

      本文链接:https://www.haomeiwen.com/subject/srzolxtx.html