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
)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



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

def self.extended(base)
  base.reset
end

Instance Method Details

#ask_slack_teamObject



56
57
58
59
# File 'lib/arisaid/configurable.rb', line 56

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

#ask_slack_tokenObject



76
77
78
79
# File 'lib/arisaid/configurable.rb', line 76

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:



32
33
34
# File 'lib/arisaid/configurable.rb', line 32

def configure
  yield self
end

#debug?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/arisaid/configurable.rb', line 36

def debug?
  @debug
end

#optionsObject



28
29
30
# File 'lib/arisaid/configurable.rb', line 28

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

#pitObject



89
90
91
# File 'lib/arisaid/configurable.rb', line 89

def pit
  Pit.get('arisaid')
end

#pit=(data) ⇒ Object



93
94
95
# File 'lib/arisaid/configurable.rb', line 93

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

#read_only?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/arisaid/configurable.rb', line 40

def read_only?
  @read_only
end

#resetObject



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

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

#save_slack_token_by_pit(token) ⇒ Object



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

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)


44
45
46
# File 'lib/arisaid/configurable.rb', line 44

def save_token?
  @save_token
end

#slack_teamObject



48
49
50
# File 'lib/arisaid/configurable.rb', line 48

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

#slack_team=(team) ⇒ Object



52
53
54
# File 'lib/arisaid/configurable.rb', line 52

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

#slack_tokenObject



61
62
63
# File 'lib/arisaid/configurable.rb', line 61

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

#slack_token!Object



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

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



97
98
99
# File 'lib/arisaid/configurable.rb', line 97

def slack_token_by_pit
  pit[slack_team]
end