Class: Datapimp::Configuration
- Inherits:
-
Object
- Object
- Datapimp::Configuration
show all
- Includes:
- Singleton
- Defined in:
- lib/datapimp/configuration.rb
Constant Summary
collapse
- DefaultSettings =
{
manifest_filename: "datapimp.json",
github_username: '',
github_organization: '',
github_app_key: '',
github_app_secret: '',
github_access_token: '',
dnsimple_api_token: '',
dnsimple_username: '',
dropbox_app_key: '',
dropbox_app_secret: '',
dropbox_app_type: 'sandbox',
dropbox_client_token: '',
dropbox_client_secret: '',
aws_access_key_id: '',
aws_secret_access_key: '',
google_client_id: '',
google_client_secret: '',
google_refresh_token: '',
google_access_token: ''
}
Class Method Summary
collapse
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *args, &block) ⇒ Object
43
44
45
46
47
48
49
|
# File 'lib/datapimp/configuration.rb', line 43
def method_missing(meth, *args, &block)
if current.key?(meth.to_s)
return current.fetch(meth)
end
super
end
|
Class Method Details
.method_missing(meth, *args, &block) ⇒ Object
35
36
37
38
39
40
41
|
# File 'lib/datapimp/configuration.rb', line 35
def self.method_missing(meth, *args, &block)
if instance.respond_to?(meth)
return instance.send meth, *args, &block
end
nil
end
|
Instance Method Details
#amazon_setup? ⇒ Boolean
77
78
79
|
# File 'lib/datapimp/configuration.rb', line 77
def amazon_setup?
aws_access_key_id.to_s.length > 0 && aws_secret_access_key.to_s.length > 0
end
|
#applied_config ⇒ Object
Applied config is configuration values passed in context usually from the cli, but also in the unit tests
172
173
174
|
# File 'lib/datapimp/configuration.rb', line 172
def applied_config
@applied_config ||= {}
end
|
#apply_all(options = {}) ⇒ Object
107
108
109
|
# File 'lib/datapimp/configuration.rb', line 107
def apply_all(options={})
current.merge!(options)
end
|
#apply_config(hash = {}) ⇒ Object
137
138
139
140
|
# File 'lib/datapimp/configuration.rb', line 137
def apply_config(hash={})
applied_config.merge!(hash)
current.merge(applied_config)
end
|
#apply_config_from_path(path) ⇒ Object
142
143
144
145
146
147
|
# File 'lib/datapimp/configuration.rb', line 142
def apply_config_from_path(path)
path = Pathname(path)
parsed = JSON.parse(path.read) rescue {}
applied_config.merge!(parsed)
nil
end
|
#calculate_config(using_environment = true) ⇒ Object
124
125
126
127
128
129
130
131
132
133
134
135
|
# File 'lib/datapimp/configuration.rb', line 124
def calculate_config(using_environment = true)
@current = defaults.merge(home_config.merge(cwd_config.merge(applied_config))).to_mash
(defaults.keys + home_config.keys + cwd_config.keys).uniq.each do |key|
upper = key.to_s.upcase
if ENV[upper]
@current[key] = ENV[upper]
end
end if using_environment
@current
end
|
#current(using_environment = true) ⇒ Object
120
121
122
|
# File 'lib/datapimp/configuration.rb', line 120
def current(using_environment = true)
@current ||= calculate_config(using_environment)
end
|
#cwd_config ⇒ Object
176
177
178
179
180
181
182
|
# File 'lib/datapimp/configuration.rb', line 176
def cwd_config
@cwd_config ||= begin
(cwd_config_path.exist? rescue false) ? JSON.parse(cwd_config_path.read) : {}
rescue
{}
end
end
|
#cwd_config_path ⇒ Object
206
207
208
|
# File 'lib/datapimp/configuration.rb', line 206
def cwd_config_path
@cwd_config_path || Pathname(Datapimp.pwd).join(manifest_filename)
end
|
#cwd_config_path=(value) ⇒ Object
202
203
204
|
# File 'lib/datapimp/configuration.rb', line 202
def cwd_config_path= value
@cwd_config_path = Pathname(value)
end
|
#defaults ⇒ Object
116
117
118
|
# File 'lib/datapimp/configuration.rb', line 116
def defaults
DefaultSettings.dup
end
|
#dnsimple_setup? ⇒ Boolean
65
66
67
|
# File 'lib/datapimp/configuration.rb', line 65
def dnsimple_setup?
dnsimple_api_token.to_s.length > 0 && dnsimple_username.to_s.length > 0
end
|
#dropbox_setup? ⇒ Boolean
69
70
71
|
# File 'lib/datapimp/configuration.rb', line 69
def dropbox_setup?
dropbox_app_key.to_s.length > 0 && dropbox_app_secret.to_s.length > 0
end
|
#get(setting) ⇒ Object
95
96
97
98
|
# File 'lib/datapimp/configuration.rb', line 95
def get(setting)
setting = setting.to_s.downcase
primary_config[setting]
end
|
#google_setup? ⇒ Boolean
73
74
75
|
# File 'lib/datapimp/configuration.rb', line 73
def google_setup?
google_client_secret.to_s.length > 0 && google_client_id.to_s.length > 0
end
|
#home_config ⇒ Object
184
185
186
187
188
189
190
191
192
|
# File 'lib/datapimp/configuration.rb', line 184
def home_config
initialize! unless home_config_path.exist?
@home_config ||= begin
(home_config_path.exist? rescue false) ? JSON.parse(home_config_path.read) : {}
rescue
{}
end
end
|
#home_config_path ⇒ Object
198
199
200
|
# File 'lib/datapimp/configuration.rb', line 198
def home_config_path
@home_config_path || Pathname(ENV['HOME']).join(".datapimp", manifest_filename)
end
|
#home_config_path=(value) ⇒ Object
194
195
196
|
# File 'lib/datapimp/configuration.rb', line 194
def home_config_path= value
@home_config_path = Pathname(value)
end
|
#initialize!(fresh = false) ⇒ Object
51
52
53
54
55
56
57
58
59
|
# File 'lib/datapimp/configuration.rb', line 51
def initialize!(fresh=false)
return if home_config_path.exist? && !fresh
FileUtils.mkdir_p home_config_path.dirname
home_config_path.open("w+") do |fh|
fh.write(DefaultSettings.to_json)
end
end
|
#manifest_filename ⇒ Object
61
62
63
|
# File 'lib/datapimp/configuration.rb', line 61
def manifest_filename
"datapimp.json"
end
|
#primary_config ⇒ Object
91
92
93
|
# File 'lib/datapimp/configuration.rb', line 91
def primary_config
cwd_config_path.exist? ? cwd_config : home_config
end
|
#save! ⇒ Object
149
150
151
152
153
154
|
# File 'lib/datapimp/configuration.rb', line 149
def save!
save_home_config
save_cwd_config
@current = nil
true
end
|
#save_cwd_config ⇒ Object
156
157
158
159
160
161
162
|
# File 'lib/datapimp/configuration.rb', line 156
def save_cwd_config
return nil unless cwd_config_path.exist?
File.open(cwd_config_path, 'w+') do |fh|
fh.write JSON.generate(cwd_config.to_hash)
end
end
|
#save_home_config ⇒ Object
164
165
166
167
168
|
# File 'lib/datapimp/configuration.rb', line 164
def save_home_config
File.open(home_config_path, 'w+') do |fh|
fh.write JSON.generate(home_config.to_hash)
end
end
|
#set(setting, value, persist = true, options = {}) ⇒ Object
100
101
102
103
104
105
|
# File 'lib/datapimp/configuration.rb', line 100
def set(setting, value, persist = true, options={})
setting = setting.to_s.downcase
primary_config[setting] = value
save! if persist == true
value
end
|
#show ⇒ Object
81
82
83
84
85
86
87
88
89
|
# File 'lib/datapimp/configuration.rb', line 81
def show
current.each do |p|
key, value = p
unless key == 'sites_directory'
puts "#{key}: #{ value.inspect }"
end
end
end
|
#unset(setting, persist = true) ⇒ Object
111
112
113
114
|
# File 'lib/datapimp/configuration.rb', line 111
def unset(setting, persist = true)
primary_config.delete(setting)
save! if persist == true
end
|