nucleon 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.5
1
+ 0.1.6
@@ -40,15 +40,13 @@ class Collection
40
40
 
41
41
  #---
42
42
 
43
- def self.save
44
- log_options = Options.get(:nucleon_log)
45
-
46
- unless Util::Data.empty?(log_options[:config_log])
47
- config_log = log_options[:config_log]
43
+ def self.save(options = {})
44
+ unless Util::Data.empty?(options[:log_dir])
45
+ log_dir = options[:log_dir]
48
46
 
49
- if log_options[:config_store]
50
- Util::Disk.write(config_log, MultiJson.dump(@@properties, :pretty => true))
51
- Util::Disk.close(config_log)
47
+ if options[:config_store]
48
+ Util::Disk.write(File.join(log_dir, "common.json"), Util::Data.to_json(@@properties, true))
49
+ Util::Disk.write(File.join(log_dir, "common.yaml"), Util::Data.to_yaml(Util::Data.string_map(@@properties)))
52
50
  end
53
51
  end
54
52
  end
@@ -27,6 +27,12 @@ class Options
27
27
 
28
28
  #---
29
29
 
30
+ def self.all
31
+ @@options
32
+ end
33
+
34
+ #---
35
+
30
36
  def self.get(contexts, force = true)
31
37
  options = {}
32
38
 
@@ -447,6 +447,13 @@ module Facade
447
447
  $stderr.reopen orig_stderr
448
448
  end
449
449
  result
450
+ end
451
+
452
+ #---
453
+
454
+ def render_object(data)
455
+ require 'pp'
456
+ PP.pp(data, "").strip
450
457
  end
451
458
  end
452
459
  end
@@ -12,41 +12,37 @@ module ConfigCollection
12
12
  # Configuration collection interface
13
13
 
14
14
  def all_properties
15
- return Config::Collection.all
15
+ Config::Collection.all
16
16
  end
17
17
 
18
18
  #---
19
19
 
20
20
  def get_property(name)
21
- return Config::Collection.get(name)
21
+ Config::Collection.get(name)
22
22
  end
23
23
 
24
24
  #---
25
25
 
26
26
  def set_property(name, value)
27
27
  Config::Collection.set(name, value)
28
- return self
29
28
  end
30
29
 
31
30
  #---
32
31
 
33
32
  def delete_property(name)
34
33
  Config::Collection.delete(name)
35
- return self
36
34
  end
37
35
 
38
36
  #---
39
37
 
40
38
  def clear_properties
41
39
  Config::Collection.clear
42
- return self
43
40
  end
44
41
 
45
42
  #---
46
43
 
47
- def save_properties
48
- Config::Collection.save
49
- return self
44
+ def save_properties(options = {})
45
+ Config::Collection.save(options)
50
46
  end
51
47
  end
52
48
  end
@@ -12,27 +12,31 @@ module ConfigOptions
12
12
  # Configuration options interface
13
13
 
14
14
  def contexts(contexts = [], hierarchy = [])
15
- return Config::Options.contexts(contexts, hierarchy)
15
+ Config::Options.contexts(contexts, hierarchy)
16
+ end
17
+
18
+ #---
19
+
20
+ def all_options
21
+ Config::Options.all
16
22
  end
17
23
 
18
24
  #---
19
25
 
20
26
  def get_options(contexts, force = true)
21
- return Config::Options.get(contexts, force)
27
+ Config::Options.get(contexts, force)
22
28
  end
23
29
 
24
30
  #---
25
31
 
26
32
  def set_options(contexts, options, force = true)
27
33
  Config::Options.set(contexts, options, force)
28
- return self
29
34
  end
30
35
 
31
36
  #---
32
37
 
33
38
  def clear_options(contexts)
34
39
  Config::Options.clear(contexts)
35
- return self
36
40
  end
37
41
  end
38
42
  end
@@ -3,22 +3,34 @@ module Nucleon
3
3
  module Util
4
4
  class Console
5
5
 
6
+ # Flush output immediately.
7
+ $stderr.sync = true
8
+ $stdout.sync = true
9
+
10
+ #---
11
+
6
12
  @@console_lock = Mutex.new
7
13
  @@quiet = false
14
+ @@use_colors = true
8
15
 
9
16
  #---
10
17
 
11
- COLORS = {
18
+ @@colors = {
12
19
  :clear => "\e[0m",
20
+ :black => "\e[30m",
13
21
  :red => "\e[31m",
14
22
  :green => "\e[32m",
15
- :yellow => "\e[33m"
23
+ :yellow => "\e[33m",
24
+ :blue => "\e[34m",
25
+ :purple => "\e[35m",
26
+ :cyan => "\e[36m",
27
+ :grey => "\e[37m"
16
28
  }
17
29
 
18
- COLOR_MAP = {
19
- :warn => COLORS[:yellow],
20
- :error => COLORS[:red],
21
- :success => COLORS[:green]
30
+ @@color_map = {
31
+ :warn => @@colors[:yellow],
32
+ :error => @@colors[:red],
33
+ :success => @@colors[:green]
22
34
  }
23
35
 
24
36
  #-----------------------------------------------------------------------------
@@ -55,10 +67,24 @@ class Console
55
67
 
56
68
  #---
57
69
 
70
+ def self.quiet
71
+ @@quiet
72
+ end
73
+
58
74
  def self.quiet=quiet
59
75
  @@quiet = quiet
60
76
  end
61
77
 
78
+ #---
79
+
80
+ def self.use_colors
81
+ @@use_colors
82
+ end
83
+
84
+ def self.use_colors=use_colors
85
+ @@use_colors = use_colors
86
+ end
87
+
62
88
  #-----------------------------------------------------------------------------
63
89
  # UI functionality
64
90
 
@@ -198,12 +224,12 @@ class Console
198
224
  end
199
225
  message = "#{prefix} #{message}".lstrip.gsub(/\n+$/, '')
200
226
 
201
- if @color
227
+ if @@use_colors && @color
202
228
  if options.has_key?(:color)
203
- color = COLORS[options[:color]]
204
- message = "#{color}#{message}#{COLORS[:clear]}"
229
+ color = @@colors[options[:color]]
230
+ message = "#{color}#{message}#{@@colors[:clear]}"
205
231
  else
206
- message = "#{COLOR_MAP[type]}#{message}#{COLORS[:clear]}" if COLOR_MAP[type]
232
+ message = "#{@@color_map[type]}#{message}#{@@colors[:clear]}" if @@color_map[type]
207
233
  end
208
234
  end
209
235
  return message
@@ -232,6 +258,63 @@ class Console
232
258
  def check_delegate(method)
233
259
  return ( @delegate && @delegate.respond_to?(method.to_s) )
234
260
  end
261
+
262
+ #-----------------------------------------------------------------------------
263
+ # Color translation
264
+
265
+ def self.black(string)
266
+ return string unless @@use_colors
267
+ "#{@@colors[:black]}#{string}#{@@colors[:clear]}"
268
+ end
269
+
270
+ #---
271
+
272
+ def self.red(string)
273
+ return string unless @@use_colors
274
+ "#{@@colors[:red]}#{string}#{@@colors[:clear]}"
275
+ end
276
+
277
+ #---
278
+
279
+ def self.green(string)
280
+ return string unless @@use_colors
281
+ "#{@@colors[:green]}#{string}#{@@colors[:clear]}"
282
+ end
283
+
284
+ #---
285
+
286
+ def self.yellow(string)
287
+ return string unless @@use_colors
288
+ "#{@@colors[:yellow]}#{string}#{@@colors[:clear]}"
289
+ end
290
+
291
+ #---
292
+
293
+ def self.blue(string)
294
+ return string unless @@use_colors
295
+ "#{@@colors[:blue]}#{string}#{@@colors[:clear]}"
296
+ end
297
+
298
+ #---
299
+
300
+ def self.purple(string)
301
+ return string unless @@use_colors
302
+ "#{@@colors[:purple]}#{string}#{@@colors[:clear]}"
303
+ end
304
+
305
+ #---
306
+
307
+ def self.cyan(string)
308
+ return string unless @@use_colors
309
+ "#{@@colors[:cyan]}#{string}#{@@colors[:clear]}"
310
+ end
311
+
312
+ #---
313
+
314
+ def self.grey(string)
315
+ return string unless @@use_colors
316
+ "#{@@colors[:grey]}#{string}#{@@colors[:clear]}"
317
+ end
235
318
  end
236
319
  end
237
320
  end
@@ -126,11 +126,11 @@ class Data
126
126
 
127
127
  #---
128
128
 
129
- def self.value(value)
129
+ def self.value(value, undefined_value = nil)
130
130
  case value
131
131
  when String
132
132
  if undef?(value)
133
- value = nil
133
+ value = undefined_value
134
134
  elsif true?(value)
135
135
  value = true
136
136
  elsif false?(value)
@@ -139,12 +139,12 @@ class Data
139
139
 
140
140
  when Array
141
141
  value.each_with_index do |item, index|
142
- value[index] = value(item)
142
+ value[index] = value(item, undefined_value)
143
143
  end
144
144
 
145
145
  when Hash
146
146
  value.each do |key, data|
147
- value[key] = value(data)
147
+ value[key] = value(data, undefined_value)
148
148
  end
149
149
  end
150
150
  return value
@@ -244,6 +244,22 @@ class Data
244
244
 
245
245
  #---
246
246
 
247
+ def self.deep_clean(data, remove_empty = true)
248
+ data.keys.each do |key|
249
+ obj = data[key]
250
+
251
+ if obj.nil? || ( remove_empty && obj.is_a?(Hash) && obj.empty? )
252
+ data.delete(key)
253
+
254
+ elsif data[key].is_a?(Hash)
255
+ deep_clean(data[key], remove_empty)
256
+ end
257
+ end
258
+ data
259
+ end
260
+
261
+ #---
262
+
247
263
  def self.merge(data, force = true)
248
264
  value = data
249
265
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "nucleon"
8
- s.version = "0.1.5"
8
+ s.version = "0.1.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Adrian Webb"]
12
- s.date = "2014-03-16"
12
+ s.date = "2014-03-19"
13
13
  s.description = "\nA framework that provides a simple foundation for building Ruby applications that are:\n\n* Highly configurable (with both distributed and persistent configurations)\n* Extremely pluggable and extendable\n* Easily parallel\n\nNote: This framework is still very early in development!\n"
14
14
  s.email = "adrian.webb@coralnexus.com"
15
15
  s.executables = ["nucleon"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nucleon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-16 00:00:00.000000000 Z
12
+ date: 2014-03-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: log4r
16
- requirement: &21624320 !ruby/object:Gem::Requirement
16
+ requirement: &6185280 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *21624320
24
+ version_requirements: *6185280
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: i18n
27
- requirement: &21623400 !ruby/object:Gem::Requirement
27
+ requirement: &6184240 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0.6'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *21623400
35
+ version_requirements: *6184240
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: netrc
38
- requirement: &21180980 !ruby/object:Gem::Requirement
38
+ requirement: &6183160 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0.7'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *21180980
46
+ version_requirements: *6183160
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: deep_merge
49
- requirement: &20893780 !ruby/object:Gem::Requirement
49
+ requirement: &6182300 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '1.0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *20893780
57
+ version_requirements: *6182300
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: multi_json
60
- requirement: &20891780 !ruby/object:Gem::Requirement
60
+ requirement: &6177800 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '1.7'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *20891780
68
+ version_requirements: *6177800
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sshkey
71
- requirement: &20890120 !ruby/object:Gem::Requirement
71
+ requirement: &6176180 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '1.6'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *20890120
79
+ version_requirements: *6176180
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: childprocess
82
- requirement: &20875100 !ruby/object:Gem::Requirement
82
+ requirement: &6174600 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 0.5.0
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *20875100
90
+ version_requirements: *6174600
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: celluloid
93
- requirement: &20868900 !ruby/object:Gem::Requirement
93
+ requirement: &6173300 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0.15'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *20868900
101
+ version_requirements: *6173300
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: grit
104
- requirement: &20863720 !ruby/object:Gem::Requirement
104
+ requirement: &6171960 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '2.5'
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *20863720
112
+ version_requirements: *6171960
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: octokit
115
- requirement: &20862300 !ruby/object:Gem::Requirement
115
+ requirement: &6123040 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '2.7'
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *20862300
123
+ version_requirements: *6123040
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: bundler
126
- requirement: &20860560 !ruby/object:Gem::Requirement
126
+ requirement: &6121580 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: '1.2'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *20860560
134
+ version_requirements: *6121580
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: jeweler
137
- requirement: &20859660 !ruby/object:Gem::Requirement
137
+ requirement: &6120220 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ~>
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: '2.0'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *20859660
145
+ version_requirements: *6120220
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: rspec
148
- requirement: &20858540 !ruby/object:Gem::Requirement
148
+ requirement: &6119220 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ~>
@@ -153,10 +153,10 @@ dependencies:
153
153
  version: '2.10'
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *20858540
156
+ version_requirements: *6119220
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: rdoc
159
- requirement: &20853600 !ruby/object:Gem::Requirement
159
+ requirement: &6117760 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ~>
@@ -164,10 +164,10 @@ dependencies:
164
164
  version: '3.12'
165
165
  type: :development
166
166
  prerelease: false
167
- version_requirements: *20853600
167
+ version_requirements: *6117760
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: yard
170
- requirement: &20851920 !ruby/object:Gem::Requirement
170
+ requirement: &6113400 !ruby/object:Gem::Requirement
171
171
  none: false
172
172
  requirements:
173
173
  - - ~>
@@ -175,7 +175,7 @@ dependencies:
175
175
  version: '0.8'
176
176
  type: :development
177
177
  prerelease: false
178
- version_requirements: *20851920
178
+ version_requirements: *6113400
179
179
  description: ! '
180
180
 
181
181
  A framework that provides a simple foundation for building Ruby applications that