Class: MisterBin::Script

Inherits:
Object
  • Object
show all
Includes:
Colsole
Defined in:
lib/mister_bin/script.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file) ⇒ Script

Returns a new instance of Script.



12
13
14
# File 'lib/mister_bin/script.rb', line 12

def initialize(file)
  @file = file
end

Instance Attribute Details

#action_blockObject (readonly)

Returns the value of attribute action_block.



10
11
12
# File 'lib/mister_bin/script.rb', line 10

def action_block
  @action_block
end

#fileObject (readonly)

Returns the value of attribute file.



10
11
12
# File 'lib/mister_bin/script.rb', line 10

def file
  @file
end

Instance Method Details

#action(&block) ⇒ Object



61
62
63
# File 'lib/mister_bin/script.rb', line 61

def action(&block)
  @action_block = block
end

#build_docoptObject



16
17
18
19
20
# File 'lib/mister_bin/script.rb', line 16

def build_docopt
  DocoptMaker.instance.reset
  instance_eval script
  docopt
end

#docoptObject



31
32
33
# File 'lib/mister_bin/script.rb', line 31

def docopt
  DocoptMaker.instance.docopt
end

#example(text) ⇒ Object



53
54
55
# File 'lib/mister_bin/script.rb', line 53

def example(text)
  DocoptMaker.instance.examples << text
end

#execute(argv = []) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/mister_bin/script.rb', line 22

def execute(argv=[])
  args = Docopt.docopt docopt, version: DocoptMaker.instance.version, argv: argv
  exitcode = action_block.call args if action_block
  exitcode.is_a?(Numeric) ? exitcode : 0
rescue Docopt::Exit => e
  puts e.message
  1
end

#help(text) ⇒ Object

DSL



37
38
39
# File 'lib/mister_bin/script.rb', line 37

def help(text)
  DocoptMaker.instance.help = text
end

#option(flags, text) ⇒ Object



45
46
47
# File 'lib/mister_bin/script.rb', line 45

def option(flags, text)
  DocoptMaker.instance.options << [flags, text]
end

#param(param, text) ⇒ Object



49
50
51
# File 'lib/mister_bin/script.rb', line 49

def param(param, text)
  DocoptMaker.instance.params << [param, text]
end

#usage(text) ⇒ Object



41
42
43
# File 'lib/mister_bin/script.rb', line 41

def usage(text)
  DocoptMaker.instance.usages << text
end

#version(text) ⇒ Object



57
58
59
# File 'lib/mister_bin/script.rb', line 57

def version(text)
  DocoptMaker.instance.version = text
end