Module: Vivarium::CLI

Defined in:
lib/vivarium/cli.rb

Class Method Summary collapse

Class Method Details

.run!(argv = ARGV) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/vivarium/cli.rb', line 7

def self.run!(argv = ARGV)
  options = { pin_dir: Vivarium.bpf_pin_dir, dest: $stdout }
  parser = OptionParser.new do |opts|
    opts.banner = "Usage: vivarium [options] <command> [args]"
    opts.separator ""
    opts.separator "Commands:"
    opts.separator "  load <script>    Load and observe a Ruby script"
    opts.separator ""
    opts.separator "Options:"
    opts.on("--pin-dir PATH", "Pinned map directory") { |v| options[:pin_dir] = v }
    opts.on("-o", "--output PATH", "Log output file (default: stdout)") { |v| options[:dest] = File.open(v, "a") }
  end
  parser.order!(argv)

  command = argv.shift
  case command
  when "load"
    run_load!(argv, options)
  else
    abort parser.help
  end
end

.run_load!(argv, options) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/vivarium/cli.rb', line 30

def self.run_load!(argv, options)
  script = argv.shift
  abort "Usage: vivarium load <script>" unless script
  abort "File not found: #{script}" unless File.exist?(script)

  Vivarium.observe(pin_dir: options[:pin_dir], dest: options[:dest]) do
    Kernel.load(File.expand_path(script))
  end
end