Module: MRubyTools::CLI

Defined in:
lib/mruby_tools.rb

Constant Summary collapse

USAGE_EXIT =
1

Class Method Summary collapse

Class Method Details

.args(argv = ARGV) ⇒ Object



176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'lib/mruby_tools.rb', line 176

def self.args(argv = ARGV)
  rb_files = []
  out_file = nil
  c_file = nil
  mruby_dir = nil
  verbose = false
  help = false
  bytecode = false

  while !argv.empty?
    arg = argv.shift
    if arg == '-o'
      out_file = argv.shift
      raise "no out_file provided with -o" unless out_file
      raise "#{out_file} is misnamed" if File.extname(out_file) == '.rb'
    elsif arg == '-c'
      c_file = File.open(argv.shift || 'generated.c', "w")
    elsif arg == '-v'
      verbose = true
    elsif arg == '-h'
      help = true
    elsif arg == '-m'
      mruby_dir = argv.shift
      raise "no mruby_dir provided with -m" unless mruby_dir
    elsif arg == '-b'
      bytecode = true
    else
      rb_files << arg unless arg == '--'
    end
  end

  c_file ||= Tempfile.new(['mrbt-', '.c'])
  out_file ||= 'outfile'

  { verbose: verbose,
    help: help,
    c_file: c_file,
    out_file: out_file,
    rb_files: rb_files,
    mruby_dir: mruby_dir,
    bytecode: bytecode }
end

.usage(msg = nil) ⇒ Object



163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/mruby_tools.rb', line 163

def self.usage(msg = nil)
  puts <<EOF
  USAGE: mrbt file1.rb file2.rb ...
OPTIONS: -o outfile     (provide a name for the standalone executable)
     -c generated.c (leave the specified C file on the filesystem)
     -m mruby_dir   (provide the dir for mruby src)
     -b             (pregenerate ruby bytecode for faster execution)
     -v             (verbose)
EOF
  warn "  ERROR: #{msg}" if msg
  exit(msg ? USAGE_EXIT : 0)
end