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: '',
pivotal_access_token: '',
keen_project_id: '',
keen_read_key: '',
keen_write_key: '',
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: '',
aws_region: 'us-east-1',
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
54
55
56
57
58
59
60
|
# File 'lib/datapimp/configuration.rb', line 54
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
46
47
48
49
50
51
52
|
# File 'lib/datapimp/configuration.rb', line 46
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
94
95
96
|
# File 'lib/datapimp/configuration.rb', line 94
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
190
191
192
|
# File 'lib/datapimp/configuration.rb', line 190
def applied_config
@applied_config ||= {}
end
|
#apply_all(options = {}) ⇒ Object
124
125
126
|
# File 'lib/datapimp/configuration.rb', line 124
def apply_all(options={})
current.merge!(options)
end
|
#apply_config(hash = {}) ⇒ Object
155
156
157
158
|
# File 'lib/datapimp/configuration.rb', line 155
def apply_config(hash={})
applied_config.merge!(hash)
current.merge(applied_config)
end
|
#apply_config_from_path(path) ⇒ Object
160
161
162
163
164
165
|
# File 'lib/datapimp/configuration.rb', line 160
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
# File 'lib/datapimp/configuration.rb', line 137
def calculate_config(using_environment = true)
@current = defaults.merge(home_config.merge(cwd_config.merge(applied_config))).to_mash
if ENV['DATAPIMP_CONFIG_EXTRA'].to_s.length > 0
= Datapimp::Util.load_config_file(ENV['DATAPIMP_CONFIG_EXTRA'])
@current.merge!() if .is_a?(Hash)
end
(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
42
43
44
|
# File 'lib/datapimp/configuration.rb', line 42
def current(using_environment = true)
@current ||= calculate_config(using_environment)
end
|
#cwd_config ⇒ Object
194
195
196
197
198
199
200
|
# File 'lib/datapimp/configuration.rb', line 194
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
224
225
226
|
# File 'lib/datapimp/configuration.rb', line 224
def cwd_config_path
@cwd_config_path || Pathname(Datapimp.pwd).join(manifest_filename)
end
|
#cwd_config_path=(value) ⇒ Object
220
221
222
|
# File 'lib/datapimp/configuration.rb', line 220
def cwd_config_path= value
@cwd_config_path = Pathname(value)
end
|
#defaults ⇒ Object
133
134
135
|
# File 'lib/datapimp/configuration.rb', line 133
def defaults
DefaultSettings.dup
end
|
#deploy_manifests_path ⇒ Object
72
73
74
75
76
|
# File 'lib/datapimp/configuration.rb', line 72
def deploy_manifests_path
Pathname(home_config_path.dirname).join("deploy-manifests").tap do |dir|
FileUtils.mkdir_p(dir) unless dir.exist?
end
end
|
#dnsimple_setup? ⇒ Boolean
82
83
84
|
# File 'lib/datapimp/configuration.rb', line 82
def dnsimple_setup?
dnsimple_api_token.to_s.length > 0 && dnsimple_username.to_s.length > 0
end
|
#dropbox_setup? ⇒ Boolean
86
87
88
|
# File 'lib/datapimp/configuration.rb', line 86
def dropbox_setup?
dropbox_app_key.to_s.length > 0 && dropbox_app_secret.to_s.length > 0
end
|
#get(setting) ⇒ Object
112
113
114
115
|
# File 'lib/datapimp/configuration.rb', line 112
def get(setting)
setting = setting.to_s.downcase
primary_config[setting]
end
|
#google_setup? ⇒ Boolean
90
91
92
|
# File 'lib/datapimp/configuration.rb', line 90
def google_setup?
google_client_secret.to_s.length > 0 && google_client_id.to_s.length > 0
end
|
#home_config ⇒ Object
202
203
204
205
206
207
208
209
210
|
# File 'lib/datapimp/configuration.rb', line 202
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
216
217
218
|
# File 'lib/datapimp/configuration.rb', line 216
def home_config_path
@home_config_path || Pathname(ENV['HOME']).join(".datapimp", manifest_filename)
end
|
#home_config_path=(value) ⇒ Object
212
213
214
|
# File 'lib/datapimp/configuration.rb', line 212
def home_config_path= value
@home_config_path = Pathname(value)
end
|
#initialize!(fresh = false) ⇒ Object
62
63
64
65
66
67
68
69
70
|
# File 'lib/datapimp/configuration.rb', line 62
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
78
79
80
|
# File 'lib/datapimp/configuration.rb', line 78
def manifest_filename
"datapimp.json"
end
|
#primary_config ⇒ Object
108
109
110
|
# File 'lib/datapimp/configuration.rb', line 108
def primary_config
cwd_config_path.exist? ? cwd_config : home_config
end
|
#save! ⇒ Object
167
168
169
170
171
172
|
# File 'lib/datapimp/configuration.rb', line 167
def save!
save_home_config
save_cwd_config
@current = nil
true
end
|
#save_cwd_config ⇒ Object
174
175
176
177
178
179
180
|
# File 'lib/datapimp/configuration.rb', line 174
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
182
183
184
185
186
|
# File 'lib/datapimp/configuration.rb', line 182
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
117
118
119
120
121
122
|
# File 'lib/datapimp/configuration.rb', line 117
def set(setting, value, persist = true, options={})
setting = setting.to_s.downcase
primary_config[setting] = value
save! if persist == true
value
end
|
#show ⇒ Object
98
99
100
101
102
103
104
105
106
|
# File 'lib/datapimp/configuration.rb', line 98
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
128
129
130
131
|
# File 'lib/datapimp/configuration.rb', line 128
def unset(setting, persist = true)
primary_config.delete(setting)
save! if persist == true
end
|