Sha256: a3f89e38a10e2ba0f0d1cffecec795aa645a76dd327f42413c095bcd8863a472

Contents?: true

Size: 1.65 KB

Versions: 4

Compression:

Stored size: 1.65 KB

Contents

# frozen_string_literal: true

module Meroku
  # The CLI is a class responsible of handling all the command line interface
  # logic.
  class CLI
    include Meroku::Shared
    attr_reader :options

    def initialize
      @options = {}
    end

    def run(args = ARGV)
      @options = Options.new.parse(args)
      act_on_options
    rescue Meroku::Success
      return 0
    rescue StandardError => e
      print 'Error:'
      print " #{e.message}" if e.message
      print " <#{e.class}>\n"
      return 2
    end

    private

    def act_on_options
      act_on_key_options
      act_on_app_options
      act_on_user_options
      act_on_misc_options
      true
    end

    def act_on_app_options
      App.create(@options[:name]) if @options[:create]
      App.list_apps if @options[:list_apps]
      App.delete_app(@options[:name]) if @options[:delete_app]
    end

    def act_on_key_options
      Key.upload if @options[:keys_add]
      Key.list if @options[:keys]
      Key.remove(@options[:key_id]) if @options[:keys_remove]
    end

    def act_on_misc_options
      Meroku::Shared.secrets.meroku_secret = @options[:meroku_secret] \
        if @options[:meroku_secret]

      if @options[:spawn]
        Node.new
        puts 'Node created'
      end
      Meroku::Aws.terminate_all(tag: 'node') if @options[:despawn]
      Meroku::Backup.new if @options[:backup]
    end

    def act_on_user_options
      User.login(@options[:email], @options[:password]) if @options[:login]
      User.logout if @options[:logout]
      User.signup(@options[:email], @options[:password]) if @options[:signup]
      User.unregister(@options) if @options[:unregister]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
meroku-2.0.31 lib/meroku/cli.rb
meroku-2.0.30 lib/meroku/cli.rb
meroku-2.0.29 lib/meroku/cli.rb
meroku-2.0.28 lib/meroku/cli.rb