Class: Miniflow::Tool

Inherits:
Object
  • Object
show all
Includes:
FileCheck
Defined in:
lib/miniflow/tool.rb

Overview

Burrow-Wheeler Aligner for short-read alignment.

Instance Method Summary collapse

Methods included from FileCheck

check_file, check_file_exist, check_file_extname, mkdir_p

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object

Calling the Ruby method executes a subcommand with the same name. Since the Ruby methods are called first, care must be taken to avoid name collisions. For example, subcommands such as ‘call` need to be redefined.



47
48
49
# File 'lib/miniflow/tool.rb', line 47

def method_missing(name, *args)
  cmd.run2(@command, name, *args)
end

Instance Method Details

#[](key) ⇒ Object

Get tool options



35
36
37
# File 'lib/miniflow/tool.rb', line 35

def [](key)
  @options[key]
end

#available?(command) ⇒ Boolean

Use the version options to check if the command is available

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/miniflow/tool.rb', line 12

def available?(command)
  # puts Pastel.new.magenta("Check #{self.class.name}")
  pastel = Pastel.new
  class_name = self.class.name.split('::').last
  begin
    result = cmd.run!(command)
  rescue Errno::ENOENT => e
    pastel = Pastel.new
    msg = "\n" \
          "Please make sure that the #{class_name} is available.\n\n"
    e.message << msg
    raise e
  end
  if result.failure?
    msg = "The exit status of #{command} is not zero.\n" \
          "Please make sure that the #{command} is available.\n\n"
    raise Errno::ENOENT, msg # FIXME
  else
    puts pastel.green.bold("#{class_name}")
  end
end

#cmdObject



39
40
41
# File 'lib/miniflow/tool.rb', line 39

def cmd
  TTYCMD
end