Class: Foobara::CommandConnectors::ShCliConnector::ActionParser

Inherits:
Object
  • Object
show all
Defined in:
foobara-sh-cli-connector-0.0.17/src/sh_cli_connector/action_parser.rb

Defined Under Namespace

Classes: Result

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeActionParser

Returns a new instance of ActionParser.



59
60
61
62
# File 'foobara-sh-cli-connector-0.0.17/src/sh_cli_connector/action_parser.rb', line 59

def initialize
  self.parser = OptionParser.new
  setup_parser
end

Instance Attribute Details

#parserObject

Returns the value of attribute parser.



57
58
59
# File 'foobara-sh-cli-connector-0.0.17/src/sh_cli_connector/action_parser.rb', line 57

def parser
  @parser
end

Instance Method Details

#normalize_action(action) ⇒ Object



64
65
66
# File 'foobara-sh-cli-connector-0.0.17/src/sh_cli_connector/action_parser.rb', line 64

def normalize_action(action)
  action
end

#parse(argv, starting_action: nil) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'foobara-sh-cli-connector-0.0.17/src/sh_cli_connector/action_parser.rb', line 68

def parse(argv, starting_action: nil)
  result = Result.new
  result.action = starting_action

  result.remainder = parser.order(argv) do |positional_arg|
    if result.action.nil?
      positional_arg = normalize_action(positional_arg)

      # TODO: refactor this list of actions to a more reusable place
      if supported_actions.include?(positional_arg)
        result.action = positional_arg
      else
        result.action = "run"
        result.argument = positional_arg
      end
    elsif result.argument.nil?
      result.argument = positional_arg
      parser.terminate
    else
      parser.terminate(positional_arg)
    end
  end

  result.validate!
  result
end

#supported_actionsObject



95
96
97
# File 'foobara-sh-cli-connector-0.0.17/src/sh_cli_connector/action_parser.rb', line 95

def supported_actions
  %w[run describe manifest help list]
end