class DockerRailsProxy::Cli

Public Class Methods

invoke(arguments) click to toggle source
# File lib/docker_rails_proxy/cli.rb, line 4
      def invoke(arguments)
        command, *all_arguments         = arguments
        arguments, additional_arguments = split_arguments(all_arguments)

        if command.nil?
          $stderr.puts <<-EOF
          #{"bin/#{APP_NAME} requires 1 argument.".bold}

          #{"Usage: bin/#{APP_NAME} <command> [<arguments>]".bold}
          EOF
          exit 1
        end

        if COMMANDS.include? command
          arguments << '-h' if arguments.empty?
          "DockerRailsProxy::#{command}".constantize.call(
            arguments: arguments, additional_arguments: additional_arguments
          )
        else
          $stderr.puts <<-EOS
          #{'No such command'.yellow}

          #{'COMMANDS'.bold}
          EOS

          COMMANDS.each do |script|
            $stderr.puts <<-EOS
            #{script.parameterize.bold} [<arguments>]
            EOS
          end

          exit 1
        end
      end

Private Class Methods

split_arguments(arguments) click to toggle source
# File lib/docker_rails_proxy/cli.rb, line 41
def split_arguments(arguments)
  return [arguments, []] unless (separator_index = arguments.index('--'))

  arguments.delete_at(separator_index)
  arguments.partition.with_index { |_, index| index < separator_index }
end