Module: Idid::Interactive

Defined in:
lib/idid/interactive.rb

Class Method Summary collapse

Class Method Details

.ask(question) ⇒ Object



60
61
62
# File 'lib/idid/interactive.rb', line 60

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

.create_configObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/idid/interactive.rb', line 5

def create_config
  status "Please take a moment to create a new configuration.."
  config = user_config
  config['delivery'] ||= {}

  user_config_from_key 'account_type', "What kind of iDoneThis account do you have? (personal|team)", 'personal', config

  if config["account_type"] == 'team'
    user_config_from_key 'team', "What is the name of your iDoneThis team? (check the URL <team>.idonethis.com).", nil, config
  else
    config["team"] = nil
  end

  user_config_from_key 'email', "What is your associated email address for this iDoneThis account?", 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

.fail(text = 'Failed!') ⇒ Object



56
57
58
# File 'lib/idid/interactive.rb', line 56

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

.input_or_default(default) ⇒ Object



64
65
66
67
# File 'lib/idid/interactive.rb', line 64

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

.status(text) ⇒ Object



52
53
54
# File 'lib/idid/interactive.rb', line 52

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

.user_configObject



48
49
50
# File 'lib/idid/interactive.rb', line 48

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

.user_config_from_key(key, text, default, config = nil) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/idid/interactive.rb', line 38

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