spaghetticode/dbmanager

View on GitHub
lib/dbmanager/runner.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Dbmanager
  class Runner
    attr_reader :input, :output, :environments

    def initialize(input=STDIN, output=STDOUT)
      @input        = input
      @output       = output
      @environments = YmlParser.environments
    end

    def get_env(type)
      output.puts "\nPlease choose #{type} db:\n\n"
      choose_environment
    end

    def get_filename(type, default_filename)
      output.print "\nPlease choose #{type} file (defaults to #{default_filename}): "
      filename = get_input
      if filename.blank?
        default_filename
      else
        absolute_path(filename)
      end
    end

    private

    def absolute_path(filename)
      if filename.first == '/'
        filename
      else
        Dbmanager.rails_root.join(filename)
      end
    end

    def choose_environment
      environments.keys.each_with_index do |name, i|
        output.puts "#{i+1}) #{name}"
      end
      output.puts
      pos = ''
      until (1..environments.size).include? pos
        pos = get_input.to_i
      end
      environments.values[pos-1]
    end

    def get_input
      input.gets.to_s.strip
    end
  end
end