nucleon 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -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