nucleon 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,7 +44,7 @@ GEM
44
44
  log4r (1.1.10)
45
45
  mime-types (1.25.1)
46
46
  mini_portile (0.5.2)
47
- multi_json (1.9.0)
47
+ multi_json (1.9.2)
48
48
  multi_xml (0.5.5)
49
49
  multipart-post (2.0.0)
50
50
  netrc (0.7.7)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.6
1
+ 0.1.7
@@ -2,6 +2,8 @@
2
2
  module Nucleon
3
3
  class Core < Config
4
4
 
5
+ include Mixin::Colors
6
+
5
7
  #-----------------------------------------------------------------------------
6
8
  # Properties
7
9
 
@@ -15,10 +17,11 @@ class Core < Config
15
17
  def initialize(data = {}, defaults = {}, force = true)
16
18
  super(data, defaults, force)
17
19
 
18
- class_label = self.class.to_s.downcase.gsub(/^nucleon::/, '')
20
+ @class_color = Util::Data.ensure_value(delete(:class_color, :cyan), :cyan)
21
+ @class_label = self.class.to_s.downcase.gsub(/^nucleon::/, '')
19
22
 
20
- self.logger = delete(:logger, class_label)
21
- self.ui = Config.new(export).defaults({ :resource => class_label })
23
+ self.logger = delete(:logger, @class_label)
24
+ self.ui = Config.new(export).defaults({ :resource => Util::Console.colorize(@class_label, @class_color) })
22
25
 
23
26
  logger.debug('Initialized instance logger and interface')
24
27
  end
@@ -61,11 +64,11 @@ class Core < Config
61
64
  #-----------------------------------------------------------------------------
62
65
  # General utilities
63
66
 
64
- def self.ui_group(resource)
67
+ def self.ui_group(resource, color = :cyan)
65
68
  @@ui_lock.synchronize do
66
69
  begin
67
70
  ui_resource = ui.resource
68
- ui.resource = resource
71
+ ui.resource = Util::Console.colorize(resource, color)
69
72
  yield(ui)
70
73
 
71
74
  ensure
@@ -76,9 +79,9 @@ class Core < Config
76
79
 
77
80
  #---
78
81
 
79
- def ui_group(resource)
82
+ def ui_group(resource, color = :cyan)
80
83
  ui_resource = ui.resource
81
- ui.resource = resource
84
+ ui.resource = Util::Console.colorize(resource, color)
82
85
  yield(ui)
83
86
 
84
87
  ensure
@@ -2,12 +2,16 @@
2
2
  module Nucleon
3
3
  module Facade
4
4
 
5
+ include Mixin::Colors
6
+
7
+ #-----------------------------------------------------------------------------
8
+
5
9
  def ui
6
10
  Core.ui
7
11
  end
8
12
 
9
- def ui_group(resource, &code)
10
- Core.ui_group(resource, &code)
13
+ def ui_group(resource, color = :cyan, &code)
14
+ Core.ui_group(resource, color, &code)
11
15
  end
12
16
 
13
17
  def quiet=quiet
@@ -3,6 +3,7 @@ module Nucleon
3
3
  class Manager
4
4
 
5
5
  include Celluloid
6
+ task_class TaskThread
6
7
 
7
8
  #-----------------------------------------------------------------------------
8
9
 
@@ -429,7 +430,7 @@ class Manager
429
430
  results = nil
430
431
 
431
432
  if Nucleon.log_level == :hook # To save processing on rendering
432
- logger.hook("Executing extension hook { #{method} } at #{Time.now}")
433
+ logger.hook("Executing extension hook #{Nucleon.blue(method)} at #{Nucleon.green(Time.now.to_s)}")
433
434
  end
434
435
 
435
436
  extensions = plugins(:extension)
@@ -541,6 +542,7 @@ class Manager
541
542
  values << data unless data.nil?
542
543
  end
543
544
  end
545
+ values = values.flatten
544
546
 
545
547
  logger.debug("Extension #{method} collected values: #{values.inspect}")
546
548
  values
@@ -0,0 +1,59 @@
1
+
2
+ # Should be included via include
3
+ #
4
+ # include Mixin::Colors
5
+ #
6
+
7
+ module Nucleon
8
+ module Mixin
9
+ module Colors
10
+
11
+ def black(string)
12
+ ::Nucleon::Util::Console.black(string)
13
+ end
14
+
15
+ #---
16
+
17
+ def red(string)
18
+ ::Nucleon::Util::Console.red(string)
19
+ end
20
+
21
+ #---
22
+
23
+ def green(string)
24
+ ::Nucleon::Util::Console.green(string)
25
+ end
26
+
27
+ #---
28
+
29
+ def yellow(string)
30
+ ::Nucleon::Util::Console.yellow(string)
31
+ end
32
+
33
+ #---
34
+
35
+ def blue(string)
36
+ ::Nucleon::Util::Console.blue(string)
37
+ end
38
+
39
+ #---
40
+
41
+ def purple(string)
42
+ ::Nucleon::Util::Console.purple(string)
43
+ end
44
+
45
+ #---
46
+
47
+ def cyan(string)
48
+ ::Nucleon::Util::Console.cyan(string)
49
+ end
50
+
51
+ #---
52
+
53
+ def grey(string)
54
+ ::Nucleon::Util::Console.grey(string)
55
+ end
56
+ end
57
+ end
58
+ end
59
+
@@ -177,6 +177,8 @@ class Action < Base
177
177
  #---
178
178
 
179
179
  def configure
180
+ register :color, :bool, true, 'nucleon.core.action.options.color'
181
+
180
182
  yield if block_given?
181
183
 
182
184
  usage = "#{plugin_provider} "
@@ -327,6 +329,10 @@ class Action < Base
327
329
  myself.status = code.success
328
330
  myself.result = nil
329
331
 
332
+ # TODO: Figure out how to deal with paralleization of actions with global ui settings
333
+ use_colors = Util::Console.use_colors
334
+ Util::Console.use_colors = @parser.options[:color]
335
+
330
336
  if processed?
331
337
  begin
332
338
  if skip_validate || validate
@@ -355,6 +361,9 @@ class Action < Base
355
361
  end
356
362
 
357
363
  status
364
+
365
+ ensure
366
+ Util::Console.use_colors = use_colors
358
367
  end
359
368
 
360
369
  #---
@@ -44,7 +44,7 @@ class Project < Base
44
44
 
45
45
  set_url(get(:url)) if get(:url, false)
46
46
 
47
- myself.plugin_name = path
47
+ myself.plugin_name = path if ! plugin_name || plugin_name == plugin_provider
48
48
 
49
49
  ui.resource = plugin_name
50
50
  logger = plugin_name
@@ -411,7 +411,7 @@ class Project < Base
411
411
  logger.info("Committing changes to project #{name}: #{files.inspect}")
412
412
 
413
413
  time = Time.new.strftime("%Y-%m-%d %H:%M:%S")
414
- user = config.delete(:user, ENV['USER'] + '@' + fact(:hostname))
414
+ user = config.delete(:user, ENV['USER'] + '@' + fact(:fqdn))
415
415
 
416
416
  message = config.get(:message, '')
417
417
  message = 'Saving state: ' + ( files.is_a?(Array) ? "\n\n" + files.join("\n") : files.to_s ) if message.empty?
@@ -28,9 +28,9 @@ class Console
28
28
  }
29
29
 
30
30
  @@color_map = {
31
- :warn => @@colors[:yellow],
32
- :error => @@colors[:red],
33
- :success => @@colors[:green]
31
+ :warn => :yellow,
32
+ :error => :red,
33
+ :success => :green
34
34
  }
35
35
 
36
36
  #-----------------------------------------------------------------------------
@@ -172,7 +172,7 @@ class Console
172
172
  try_again = false
173
173
  end
174
174
  end
175
- password
175
+ password.strip
176
176
  end
177
177
 
178
178
  if options[:sync]
@@ -222,14 +222,13 @@ class Console
222
222
  if @resource && ! @resource.empty? && options[:prefix]
223
223
  prefix = "[#{@resource}]"
224
224
  end
225
- message = "#{prefix} #{message}".lstrip.gsub(/\n+$/, '')
225
+ message = "#{prefix} #{message}".lstrip
226
226
 
227
227
  if @@use_colors && @color
228
228
  if options.has_key?(:color)
229
- color = @@colors[options[:color]]
230
- message = "#{color}#{message}#{@@colors[:clear]}"
229
+ message = self.class.colorize(message, options[:color])
231
230
  else
232
- message = "#{@@color_map[type]}#{message}#{@@colors[:clear]}" if @@color_map[type]
231
+ message = self.class.colorize(message, @@color_map[type]) if @@color_map[type]
233
232
  end
234
233
  end
235
234
  return message
@@ -262,58 +261,72 @@ class Console
262
261
  #-----------------------------------------------------------------------------
263
262
  # Color translation
264
263
 
264
+ def self.colorize(string, color)
265
+ return '' unless string
266
+ return string.to_s unless @@use_colors
267
+
268
+ color = color.to_sym
269
+ string = string.to_s
270
+ color_string = string
271
+
272
+ if @@colors[color]
273
+ color = @@colors[color]
274
+ clear_color = @@colors[:clear]
275
+ escaped_clear = Regexp.escape(clear_color)
276
+
277
+ color_string = "#{color}"
278
+ color_string << string.gsub(/#{escaped_clear}(?!\e\[)/, "#{clear_color}#{color}")
279
+ color_string << "#{clear_color}"
280
+ end
281
+ color_string
282
+ end
283
+
284
+ #---
285
+
265
286
  def self.black(string)
266
- return string unless @@use_colors
267
- "#{@@colors[:black]}#{string}#{@@colors[:clear]}"
287
+ colorize(string, :black)
268
288
  end
269
289
 
270
290
  #---
271
291
 
272
292
  def self.red(string)
273
- return string unless @@use_colors
274
- "#{@@colors[:red]}#{string}#{@@colors[:clear]}"
293
+ colorize(string, :red)
275
294
  end
276
295
 
277
296
  #---
278
297
 
279
298
  def self.green(string)
280
- return string unless @@use_colors
281
- "#{@@colors[:green]}#{string}#{@@colors[:clear]}"
299
+ colorize(string, :green)
282
300
  end
283
301
 
284
302
  #---
285
303
 
286
304
  def self.yellow(string)
287
- return string unless @@use_colors
288
- "#{@@colors[:yellow]}#{string}#{@@colors[:clear]}"
305
+ colorize(string, :yellow)
289
306
  end
290
307
 
291
308
  #---
292
309
 
293
310
  def self.blue(string)
294
- return string unless @@use_colors
295
- "#{@@colors[:blue]}#{string}#{@@colors[:clear]}"
311
+ colorize(string, :blue)
296
312
  end
297
313
 
298
314
  #---
299
315
 
300
316
  def self.purple(string)
301
- return string unless @@use_colors
302
- "#{@@colors[:purple]}#{string}#{@@colors[:clear]}"
317
+ colorize(string, :purple)
303
318
  end
304
319
 
305
320
  #---
306
321
 
307
322
  def self.cyan(string)
308
- return string unless @@use_colors
309
- "#{@@colors[:cyan]}#{string}#{@@colors[:clear]}"
323
+ colorize(string, :cyan)
310
324
  end
311
325
 
312
326
  #---
313
327
 
314
328
  def self.grey(string)
315
- return string unless @@use_colors
316
- "#{@@colors[:grey]}#{string}#{@@colors[:clear]}"
329
+ colorize(string, :grey)
317
330
  end
318
331
  end
319
332
  end
@@ -49,7 +49,7 @@ class Github < Git
49
49
 
50
50
  if private_key && ssh_key
51
51
  begin
52
- deploy_keys = client.deploy_keys(myself.plugin_name)
52
+ deploy_keys = client.deploy_keys(plugin_name)
53
53
  github_id = nil
54
54
  keys_match = true
55
55
 
@@ -26,6 +26,10 @@ en:
26
26
  parse:
27
27
  error: |-
28
28
  There was a problem with the command arguments given
29
+ action:
30
+ options:
31
+ color: |-
32
+ Whether or not to output console messages in color (default %{default_value})
29
33
  mixin:
30
34
  action:
31
35
  project:
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "nucleon"
8
- s.version = "0.1.6"
8
+ s.version = "0.1.7"
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-19"
12
+ s.date = "2014-03-20"
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"]
@@ -38,6 +38,7 @@ Gem::Specification.new do |s|
38
38
  "lib/core/mixin/action/commit.rb",
39
39
  "lib/core/mixin/action/project.rb",
40
40
  "lib/core/mixin/action/push.rb",
41
+ "lib/core/mixin/colors.rb",
41
42
  "lib/core/mixin/config/collection.rb",
42
43
  "lib/core/mixin/config/options.rb",
43
44
  "lib/core/mixin/macro/object_interface.rb",
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.6
4
+ version: 0.1.7
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-19 00:00:00.000000000 Z
12
+ date: 2014-03-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: log4r
16
- requirement: &6185280 !ruby/object:Gem::Requirement
16
+ requirement: &10501460 !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: *6185280
24
+ version_requirements: *10501460
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: i18n
27
- requirement: &6184240 !ruby/object:Gem::Requirement
27
+ requirement: &10500720 !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: *6184240
35
+ version_requirements: *10500720
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: netrc
38
- requirement: &6183160 !ruby/object:Gem::Requirement
38
+ requirement: &10499780 !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: *6183160
46
+ version_requirements: *10499780
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: deep_merge
49
- requirement: &6182300 !ruby/object:Gem::Requirement
49
+ requirement: &10498680 !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: *6182300
57
+ version_requirements: *10498680
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: multi_json
60
- requirement: &6177800 !ruby/object:Gem::Requirement
60
+ requirement: &10498200 !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: *6177800
68
+ version_requirements: *10498200
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sshkey
71
- requirement: &6176180 !ruby/object:Gem::Requirement
71
+ requirement: &10497580 !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: *6176180
79
+ version_requirements: *10497580
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: childprocess
82
- requirement: &6174600 !ruby/object:Gem::Requirement
82
+ requirement: &10496840 !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: *6174600
90
+ version_requirements: *10496840
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: celluloid
93
- requirement: &6173300 !ruby/object:Gem::Requirement
93
+ requirement: &10496120 !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: *6173300
101
+ version_requirements: *10496120
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: grit
104
- requirement: &6171960 !ruby/object:Gem::Requirement
104
+ requirement: &10485880 !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: *6171960
112
+ version_requirements: *10485880
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: octokit
115
- requirement: &6123040 !ruby/object:Gem::Requirement
115
+ requirement: &10485160 !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: *6123040
123
+ version_requirements: *10485160
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: bundler
126
- requirement: &6121580 !ruby/object:Gem::Requirement
126
+ requirement: &10484480 !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: *6121580
134
+ version_requirements: *10484480
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: jeweler
137
- requirement: &6120220 !ruby/object:Gem::Requirement
137
+ requirement: &10483800 !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: *6120220
145
+ version_requirements: *10483800
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: rspec
148
- requirement: &6119220 !ruby/object:Gem::Requirement
148
+ requirement: &10483240 !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: *6119220
156
+ version_requirements: *10483240
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: rdoc
159
- requirement: &6117760 !ruby/object:Gem::Requirement
159
+ requirement: &10482740 !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: *6117760
167
+ version_requirements: *10482740
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: yard
170
- requirement: &6113400 !ruby/object:Gem::Requirement
170
+ requirement: &10482080 !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: *6113400
178
+ version_requirements: *10482080
179
179
  description: ! '
180
180
 
181
181
  A framework that provides a simple foundation for building Ruby applications that
@@ -220,6 +220,7 @@ files:
220
220
  - lib/core/mixin/action/commit.rb
221
221
  - lib/core/mixin/action/project.rb
222
222
  - lib/core/mixin/action/push.rb
223
+ - lib/core/mixin/colors.rb
223
224
  - lib/core/mixin/config/collection.rb
224
225
  - lib/core/mixin/config/options.rb
225
226
  - lib/core/mixin/macro/object_interface.rb