如何创建可以运行命令的ruby应用程序

时间:2010-09-12 16:05:04

标签: ruby

我正在ruby中构建一个小工具,用于根据我从命令行发出的命令创建目录和文件。我希望这可以在Mac,Windows和Linux上运行。

我当然是ruby的新手,我知道如何修改一个简单的脚本并将其命令从命令行运行。我想要做的是能够在我的系统上的任何地方导航调用应用程序的名称并传递args,以便我可以在命令行中创建基于我当前位置的文件和目录。

示例$> myapp -create mydirectoryname

那么最好的方法是什么呢。你们能指点我一个资源,让我了解这个吗?非常感谢。

马修

2 个答案:

答案 0 :(得分:1)

如果您需要标准内容,请参阅Getoptlong

require 'getoptlong'

opts = GetoptLong.new(
  [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
  [ '--repeat', '-n', GetoptLong::REQUIRED_ARGUMENT ],
  [ '--name', GetoptLong::OPTIONAL_ARGUMENT ]
)

dir = nil
name = nil
repetitions = 1
opts.each do |opt, arg|
  case opt
    when '--help'
      puts "Help here..."
    when '--repeat'
      repetitions = arg.to_i
    when '--name'
      if arg == ''
        name = 'John'
      else
        name = arg
      end
  end
end

if ARGV.length != 1
  puts "Missing dir argument (try --help)"
  exit 0
end

dir = ARGV.shift

Dir.chdir(dir)
for i in (1..repetitions)
  print "Hello"
  if name
    print ", #{name}"
  end
  puts
end

示例命令行:

hello -n 6 --name -- /tmp

我个人喜欢trollop,它不包含在标准库中。

完成命令行后,请参阅FileUtils模块以创建目录:

require 'fileutils'
FileUtils.mkdir("dir")

答案 1 :(得分:0)

duncan提到的Getoptlong是ruby核心的一部分,但是有更好的外部库可以让你以更清洁/更简单的方式完成它。

我建议你看看Choice。那里给出的例子应该足以让你前进。