Class: Runfile::DocoptHelper
- Inherits:
-
Object
- Object
- Runfile::DocoptHelper
- Defined in:
- lib/runfile/docopt_helper.rb
Overview
The DocoptHelper class handles the dynamic generation of the docopt document and the docopt part of the execution (meaning, to call Docopt so it returns the parsed arguments or halts with usage message).
Instance Method Summary collapse
-
#args(argv) ⇒ Object
Calls the docopt handler, which will either return a parsed arguments list, or halt execution and show usage.
-
#docopt ⇒ Object
Generate a document based on all the actions, help messages and options we have collected from the Runfile DSL.
-
#initialize(name, version, summary, actions, options) ⇒ DocoptHelper
constructor
The constructor expects to get all the textual details needed to generate a docopt document (name, version, summary, options) and an array of Action objects.
Constructor Details
#initialize(name, version, summary, actions, options) ⇒ DocoptHelper
The constructor expects to get all the textual details needed to generate a docopt document (name, version, summary, options) and an array of Action objects.
16 17 18 19 20 21 22 |
# File 'lib/runfile/docopt_helper.rb', line 16 def initialize(name, version, summary, actions, ) @name = name @version = version @summary = summary @actions = actions @options = end |
Instance Method Details
#args(argv) ⇒ Object
Calls the docopt handler, which will either return a parsed arguments list, or halt execution and show usage.
57 58 59 |
# File 'lib/runfile/docopt_helper.rb', line 57 def args(argv) Docopt::docopt(docopt, version: @version, argv:argv) end |
#docopt ⇒ Object
Generate a document based on all the actions, help messages and options we have collected from the Runfile DSL.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/runfile/docopt_helper.rb', line 26 def docopt width, height = detect_terminal_size doc = "#{@name} #{@version}\n" doc += "#{@summary} \n" if @summary doc += "\nUsage:\n"; @actions.each do |name, action| doc += " run #{action.usage}\n" unless action.usage == false end doc += " run ( -h | --help | --version )\n\n" caption_printed = false @actions.each do |name, action| action.help or next doc += "Commands:\n" unless caption_printed caption_printed = true helpline = " #{action.help}" wrapped = word_wrap helpline, width doc += " #{action.usage}\n#{wrapped}\n\n" unless action.usage == false end doc += "Options:\n" doc += " -h --help\n Show this screen\n\n" doc += " --version\n Show version\n\n" @options.each do |flag, text| helpline = " #{text}" wrapped = word_wrap helpline, width doc += " #{flag}\n#{wrapped}\n\n" end doc end |