Как создать приложение ruby, на котором я могу запускать команды - PullRequest
0 голосов
/ 12 сентября 2010

Я строю небольшой инструмент в ruby ​​для создания каталогов и файлов на основе команд, которые я запускаю из командной строки.Я хотел бы, чтобы это работало на Mac, Windows и Linux.

Я, конечно, новичок в ruby ​​и знаю, как исправить простой скрипт и вызвать его для запуска из командной строки.То, что я хотел бы сделать, это иметь возможность перемещаться в любом месте моей системы, вызывать имя приложения и передавать аргументы, чтобы он мог создавать файлы и каталоги на основе моего текущего местоположения в командной строке.пример $> myapp -create mydirectoryname

Так что это лучший способ сделать это.Не могли бы вы, ребята, указать мне на ресурс, который проведет меня через это?Большое спасибо.

-Матфей

Ответы [ 2 ]

1 голос
/ 12 сентября 2010

Если вы хотите что-то стандартное, см. 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")
0 голосов
/ 12 сентября 2010

Getoptlong, упомянутый duncan, является частью ядра ruby, но есть много приятных внешних библиотек, которые позволяют сделать это более простым и понятным способом.

Я рекомендую вам взглянуть на Выбор ,Приведенных там примеров должно быть достаточно, чтобы вы начали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...