我正在使用 Thor 为我正在制作的 Ruby gem 创建一个 CLI。理想情况下,可执行文件将采用类似的命令myapp path/to/file
,从某种意义上说,我宁愿用户不必定义任务,只需定义一个参数。
我查看了 API,但default_task仅在不存在任务/参数时才有效。
如何让 Thor 将此变量文件参数发送到默认方法/任务,而不是将其解释为不存在的任务?
我正在使用 Thor 为我正在制作的 Ruby gem 创建一个 CLI。理想情况下,可执行文件将采用类似的命令myapp path/to/file
,从某种意义上说,我宁愿用户不必定义任务,只需定义一个参数。
我查看了 API,但default_task仅在不存在任务/参数时才有效。
如何让 Thor 将此变量文件参数发送到默认方法/任务,而不是将其解释为不存在的任务?
myapp 路径/到/文件
两部分答案:
1) myapp
... 要使用“thor”以外的可执行文件,您需要使用“thor/runner”库。
2)path/to/file
可以在initialize方法中完成,像这样:
class Something < Thor
def initialize(*args)
super
case @path
when /something$/; self.class.new([@path],options).do_run
end
end
desc 'do_run', "do something"
argument :path, :banner=>"path/to/file", :optional=>true
def do_run
# something
end
end