Sha256: 32c7af69da8b023ba9e1cb7fbe0a211831385f56cab529f7ea44d30c0cdd2fbf

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

module Idid
  module Interactive
    class << self

      def create_config
        status "Please take a moment to create a new configuration.."
        config = user_config
        config['delivery'] ||= {}
        user_config_from_key 'project', "What is the name of your iDoneThis project (look at the url: <project>.idonethis.com)", nil, config
        user_config_from_key 'email', "What is your associated email address for this iDoneThis project?", nil, config
        user_config_from_key 'method', "How do you want to send emails to iDoneThis? (smtp, sendmail, exim)", 'smtp', config['delivery']

        case config['delivery']['method']
        when 'smtp'
          delivery_options = Idid::Configuration::SMTP_DEFAULTS
        when 'exim'
          delivery_options = Idid::Configuration::EXIM_DEFAULTS
        else
          delivery_options = {}
        end

        config['delivery']['options'] ||= {}
        delivery_options.each do |key, default|
          user_config_from_key key, key.to_s, default, config['delivery']['options']
        end

        Idid::Configuration.new config
      end

      def user_config_from_key(key, text, default, config = nil)
        config ||= user_config

        config[key.to_s] ||=
          begin
            ask "#{text} [#{default}]:"
            input_or_default default
          end
      end

      def user_config
        Idid::Configuration.read_config || {}
      end

      def status(text)
        puts "\e[36m#{text}\e[0m"
      end

      def fail(text = 'Failed!')
        puts "\e[31m#{text}\e[0m"
      end

      def ask(question)
        puts "\e[32m#{question}\e[0m"
      end

      def input_or_default(default)
        val = STDIN.gets.chomp
        val.size == 0 ? default : val
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
idid-0.0.4 lib/idid/interactive.rb