Мы используем OptionParser для всех новых скриптов, но у нас было около 100+, которые использовали RDoc. Вместо того, чтобы переписывать каждый из них, я написал этот метод (BB - это пространство имен нашей компании. Измените его на что угодно). Работает отлично. Синтаксис немного отличается, но его текст справки, поэтому мы не против. Надеюсь, это поможет!
Затем я использовал sed, чтобы найти все сценарии и изменить их.
grep -rl "RDoc::usage" * | xargs sed -i "/rdoc\/usage/ s/RDoc/BB/"
grep -rl "BB::usage" * | xargs sed -i "/rdoc\/usage/ s/rdoc/lib\/bb/"
-
module BB
def BB::usage( exit_code )
File::open( $0, 'r').readlines.each_with_index do | line, idx |
next if idx == 0
if( line =~ /^#/ )
puts line.gsub(/^#\ ?/,'')
else
puts #RDoc adds extra line so we do too
exit( exit_code )
end
end
end
end