Module: Arisaid::Configurable

Included in:
Arisaid
Defined in:
lib/arisaid/configurable.rb

Constant Summary collapse

OPTIONS_KEYS =
%i(
  debug
  read_only
  slack_team
  slack_token
  save_token
  conf_prefix
  exit_status
)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



18
19
20
# File 'lib/arisaid/configurable.rb', line 18

def self.extended(base)
  base.reset
end

Instance Method Details

#ask_slack_teamObject



58
59
60
61
# File 'lib/arisaid/configurable.rb', line 58

def ask_slack_team
  $stdout.print 'Slack Team: '
  $stdin.gets.gsub(/\n/, '')
end

#ask_slack_tokenObject



78
79
80
81
# File 'lib/arisaid/configurable.rb', line 78

def ask_slack_token
  $stdout.print 'Slack Token(https://api.slack.com/web): '
  $stdin.noecho(&:gets).tap{ $stdout.print "\n" }.gsub(/\n/, '')
end

#configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



34
35
36
# File 'lib/arisaid/configurable.rb', line 34

def configure
  yield self
end

#debug?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/arisaid/configurable.rb', line 38

def debug?
  @debug ||= false
end

#optionsObject



30
31
32
# File 'lib/arisaid/configurable.rb', line 30

def options
  OPTIONS_KEYS.inject({}) { |o, k| o.merge!(k => send(k)) }
end

#pitObject



91
92
93
# File 'lib/arisaid/configurable.rb', line 91

def pit
  Pit.get('arisaid')
end

#pit=(data) ⇒ Object



95
96
97
# File 'lib/arisaid/configurable.rb', line 95

def pit=(data)
  Pit.set('arisaid', data: data)
end

#read_only?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/arisaid/configurable.rb', line 42

def read_only?
  @read_only ||= false
end

#resetObject



22
23
24
25
26
27
28
# File 'lib/arisaid/configurable.rb', line 22

def reset
  self.debug       = false
  self.read_only   = true
  self.save_token  = false
  self.conf_prefix = nil
  self.exit_status = 0
end

#save_slack_token_by_pit(token) ⇒ Object



83
84
85
86
87
88
89
# File 'lib/arisaid/configurable.rb', line 83

def save_slack_token_by_pit(token)
  self.pit= if pit.is_a?(Hash)
      pit.merge(slack_team => token)
    else
      { slack_team => token }
    end
end

#save_token?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/arisaid/configurable.rb', line 46

def save_token?
  @save_token ||= false
end

#slack_teamObject



50
51
52
# File 'lib/arisaid/configurable.rb', line 50

def slack_team
  ENV['BREACAN_TEAM'] ||= ask_slack_team
end

#slack_team=(team) ⇒ Object



54
55
56
# File 'lib/arisaid/configurable.rb', line 54

def slack_team=(team)
  ENV['BREACAN_TEAM'] = team
end

#slack_tokenObject



63
64
65
# File 'lib/arisaid/configurable.rb', line 63

def slack_token
  ENV['BREACAN_ACCESS_TOKEN'] ||= slack_token!
end

#slack_token!Object



67
68
69
70
71
72
73
74
75
76
# File 'lib/arisaid/configurable.rb', line 67

def slack_token!
  token = slack_token_by_pit

  if token.nil?
    token = ask_slack_token
    save_slack_token_by_pit(token) if save_token?
  end

  token
end

#slack_token_by_pitObject



99
100
101
# File 'lib/arisaid/configurable.rb', line 99

def slack_token_by_pit
  pit[slack_team]
end