Module: Metasploit::Yard::Aruba::RvmEnv
- Extended by:
- ActiveSupport::Autoload
- Defined in:
- lib/metasploit/yard/aruba/rvm_env.rb
Overview
Helpers for parsing rvm env
output
Defined Under Namespace
Classes: Export, Prepend, Unset, Variable
Constant Summary collapse
- LINE_PARSER_PRECEDENCE =
Class for parsing lines for
rvm env
in order of precedence [ # must be before `Metasploit::Yard::Aruba::RvmEnv::Export` because # `Metasploit::Yard::Aruba::RvmEnv::Export::REGEXP` matches a superset of # `Metasploit::Yard::Aruba::RvmEnv::Prepend::REGEXP` Metasploit::Yard::Aruba::RvmEnv::Prepend, Metasploit::Yard::Aruba::RvmEnv::Export, Metasploit::Yard::Aruba::RvmEnv::Unset ]
Class Method Summary collapse
-
.change(options = {}) ⇒ Object
Changes from one
rvm env [@<gemset>]
to another. -
.parse(rvm_env) ⇒ Array<Metasploit::Yard::Aruba::RvmEnv::Variable, #apply>
Parses the output of
rvm env
. -
.parse_line(line) ⇒ Metasploit::Yard::Aruba::RvmEnv::Variable, #apply
Parses an individual line of
rvm env
. -
.parsed_to_hash(parsed) ⇒ Hash{String => Metasploit::Yard::Aruba::RvmEnv::Variable}
Converts output of RvmEnv.parse into Hash that maps Variable#name to the Variable.
Class Method Details
.change(options = {}) ⇒ Object
Changes from one rvm env [@<gemset>]
to another.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/metasploit/yard/aruba/rvm_env.rb', line 43 def self.change(={}) .assert_valid_keys(:from, :to, :world) from_by_name = parsed_to_hash(.fetch(:from)) to_by_name = parsed_to_hash(.fetch(:to)) world = .fetch(:world) to_by_name.each do |name, to_variable| from_variable = from_by_name[name] # ignore variables that didn't change unless to_variable == from_variable to_variable.change( from: from_variable, world: world ) end end end |
.parse(rvm_env) ⇒ Array<Metasploit::Yard::Aruba::RvmEnv::Variable, #apply>
Parses the output of rvm env
.
66 67 68 69 70 |
# File 'lib/metasploit/yard/aruba/rvm_env.rb', line 66 def self.parse(rvm_env) rvm_env.each_line.map { |line| parse_line(line) } end |
.parse_line(line) ⇒ Metasploit::Yard::Aruba::RvmEnv::Variable, #apply
Parses an individual line of rvm env
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/metasploit/yard/aruba/rvm_env.rb', line 76 def self.parse_line(line) parsed = nil LINE_PARSER_PRECEDENCE.each do |line_parser| parsed = line_parser.parse(line) if parsed break end end unless parsed raise ArgumentError, "No line parser could parse #{line.inspect}" end parsed end |
.parsed_to_hash(parsed) ⇒ Hash{String => Metasploit::Yard::Aruba::RvmEnv::Variable}
Converts output of parse into Hash that maps Metasploit::Yard::Aruba::RvmEnv::Variable#name to the Variable.
100 101 102 103 104 |
# File 'lib/metasploit/yard/aruba/rvm_env.rb', line 100 def self.parsed_to_hash(parsed) parsed.each_with_object({}) { |variable, variable_by_name| variable_by_name[variable.name] = variable } end |