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

Inherits:
Object
  • Object
show all
Defined in:
foobara-sh-cli-connector-0.0.16/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.



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

def initialize
  self.parser = OptionParser.new
  setup_parser
end

Instance Attribute Details

#parserObject

Returns the value of attribute parser.



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

def parser
  @parser
end

Instance Method Details

#normalize_action(action) ⇒ Object



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

def normalize_action(action)
  action
end

#parse(argv, starting_action: nil) ⇒ Object



67
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
# File 'foobara-sh-cli-connector-0.0.16/src/sh_cli_connector/action_parser.rb', line 67

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



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

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