gpt4 book ai didi

Ruby 选项解析器。这段代码是否更简洁?

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:39 26 4
gpt4 key购买 nike

我编写了一个具有多个命令行选项的工作脚本。我想使这些选项中的一些成为必需选项。我的研究让我得到了以下代码。您会在脚本末尾看到我正在单独检查是否提供了选项。

在 python 中,argparse 模块有一个参数“required=True”,如果提供了给定的参数,该参数将自动退出程序。我在 ruby​​ 模块中找不到类似的东西。是否有不同的、更高级的参数解析模块?有没有更简洁的方法来编写这段代码?

options = {}

optparse = OptionParser.new do |opts|
opts.banner = "\nUsage: How to use the code"
opts.on('--debug',
"Change log level to debug. Default is INFO") do |l|
options[:debug] = l
end

options[:logfile] = "stage_refresh.out"
opts.on('-l', '--logfile LOGFILE', "Logfile to log results. Default is stage_refresh.out") do |l|
options[:source] = l
end

options[:source] = "localhost"
opts.on('-s', '--source SOURCE_HOST', "Source host for dump. Default is localhost") do |s|
options[:source] = s
end

opts.on('-t', '--target TARGET', "Target host to refresh. Must specify.") do |t|
options[:target] = t
end
end

optparse.parse!

unless options[:source_pass]
puts "Must have --source_pass PASSWORD"
end

unless options[:target]
puts "Must have --target TARGET_SERVER"
end

if options[:debug]
logger.level = Logger::DEBUG
else
logger.level = Logger::INFO
end

puts options[:source_pass]
puts options[:target]

................................

最佳答案

trollop gem你可能会感兴趣。它有长/短选项、默认值、必需的标志等。使用它与您现在所拥有的没什么不同。

关于Ruby 选项解析器。这段代码是否更简洁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25371993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com