Tag: optparse

OptionParser返回bool而不是参数?

当我从OptionParser文档中运行此示例时 : require ‘optparse’ options = {} OptionParser.new do |opts| opts.banner = “Usage: example.rb [options]” opts.on(“-v”, “–[no-]verbose”, “Run verbosely”) do |v| options[:verbose] = v end end.parse! p options p ARGV 并输入: ruby test.rb -v 100 ,它返回: {:verbose=>true} [“100”] 不应该是100 ,而不是布尔值? 我不知道这个,有没有人有任何建议?

如何使用Ruby的optparse解析没有名称的参数

我需要解析一个命令行 script.rb [options] 用optparse 。 当然我可以编写一些自定义代码来处理文件名,然后将ARGV传递给optparse,但也许有一种更简单的方法可以做到这一点? 编辑:还有另一种解析这样一个命令行的hacky方法,那就是将[‘–mandatory-filename’] + ARGV传递给optparse,然后处理–mandatory-filename选项。

OptionParser可以跳过未知选项,稍后在Ruby程序中处理吗?

有没有办法在一个Ruby程序中多次启动OptionParser ,每个程序都有不同的选项? 例如: $ myscript.rb –subsys1opt a –subsys2opt b 在这里,myscript.rb将使用subsys1和subsys2,将它们的选项处理逻辑委托给它们,可能是首先处理’a’的序列,然后是单独的OptionParser对象中的’b’; 每次选择仅与该上下文相关的选项。 最后阶段可以检查在每个部件处理完他们之后没有任何未知数。 用例是: 在松散耦合的前端程序中,各种组件具有不同的参数,我不希望“main”知道所有内容,只是为每个部分委派参数/选项集。 将一些更大的系统(如RSpec)嵌入到我的应用程序中,我只需通过命令行通过他们的选项,而不需要我的包装器知道这些。 我也可以使用一些分隔符选项,比如某些Java应用程序中的–或–vmargs 。 在Unix世界中有许多类似事物的真实例子(startx / X,git plumbing和瓷器),其中一层处理一些选项但将其余部分传播到下层。 开箱即用,这似乎不起作用。 每个OptionParse.parse! 呼叫将进行详尽的处理,对其不知道的任何事情失败。 我想我很乐意跳过未知选项。 任何提示,也许是替代方法都是受欢迎的。

使用ruby的OptionParser来解析子命令

我希望能够使用ruby的OptionParser来解析表单的子命令 COMMAND [GLOBAL FLAGS] [SUB-COMMAND [SUB-COMMAND FLAGS]] 喜欢: git branch -a gem list foo 我知道我可以切换到一个不同的选项解析器库(如Trollop),但我有兴趣从OptionParser中学习如何做到这一点,因为我想更好地学习库。 有小费吗?

如何通过自制软件分发ruby脚本

如何通过自制软件部署简单的ruby脚本? 这是我尝试过的 在名为homebrew-foo的GitHub仓库中写了公式 # file https://github.com/foo/homebrew-foo/blob/master/foo.rb class Foo < Formula desc "A command line tool" url "https://github.com/foo/foo/archive/master.zip" version "5.0.1" def install bin.install "foo" lib.install Dir["lib/*"] end end 另一个存储库包含ruby脚本。 这些是文件 ./foo ./lib/libfile1.rb 这是脚本的作用 #!/usr/bin/env ruby require ‘./lib/libfile1.rb’ puts “came here” 问题是require失败。 $ brew install foo/foo/foo $ foo 导致此错误 /Users/user1/.rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in require’: cannot load such file — ./lib/libfile1.rb […]

将命令行参数解析为通配符

我写了一个简单的脚本,将所有给定的参数写入单个文本文件,由换行符分隔。 我想使用OptionParser将文件列表传递给它。 我想使用/dir/*类的通配符添加几个文件。 我试过这个: opts = OptionParser.new opts.on(‘-a’, ‘–add FILE’) do |s| puts “DEBUG: before #{s}” @options.add = s puts “DEBUG: after #{@options.add}” end … def process_arguments @lines_to_add = Dir.glob @options.add end 当我添加这样的文件时放: ./script.rb -a /path/* 我总是只得到目录中的第一个文件。 所有的调试输出只显示目录的第一个文件,似乎OptionParser做了一些神奇的解释 有谁知道如何处理这个?