nucleon 0.2.0 → 0.2.1
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.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/Gemfile.lock +2 -0
- data/VERSION +1 -1
- data/lib/core/config.rb +21 -20
- data/lib/core/environment.rb +2 -2
- data/lib/core/facade.rb +15 -0
- data/lib/core/mixin/action/registration.rb +84 -0
- data/lib/core/mixin/sub_config.rb +5 -5
- data/lib/core/plugin/action.rb +66 -10
- data/lib/core/plugin/base.rb +100 -19
- data/lib/core/plugin/command.rb +4 -0
- data/lib/core/util/cache.rb +13 -1
- data/lib/core/util/cli.rb +77 -11
- data/lib/core/util/console.rb +55 -72
- data/lib/core/util/data.rb +19 -9
- data/lib/core/util/logger.rb +16 -6
- data/lib/core/util/shell.rb +3 -1
- data/lib/core/util/ssh.rb +28 -25
- data/lib/nucleon/translator/JSON.rb +2 -2
- data/lib/nucleon/translator/YAML.rb +2 -2
- data/lib/nucleon_base.rb +22 -8
- data/nucleon.gemspec +122 -2
- data/rdoc/site/0.2.0/ARCHITECTURE_rdoc.html +638 -0
- data/rdoc/site/0.2.0/Hash.html +351 -0
- data/rdoc/site/0.2.0/Kernel.html +416 -0
- data/rdoc/site/0.2.0/Nucleon.html +607 -0
- data/rdoc/site/0.2.0/Nucleon/Action.html +284 -0
- data/rdoc/site/0.2.0/Nucleon/Action/Extract.html +455 -0
- data/rdoc/site/0.2.0/Nucleon/Action/Project.html +283 -0
- data/rdoc/site/0.2.0/Nucleon/Action/Project/Add.html +500 -0
- data/rdoc/site/0.2.0/Nucleon/Action/Project/Create.html +457 -0
- data/rdoc/site/0.2.0/Nucleon/Action/Project/Remove.html +503 -0
- data/rdoc/site/0.2.0/Nucleon/Action/Project/Save.html +476 -0
- data/rdoc/site/0.2.0/Nucleon/Action/Project/Update.html +423 -0
- data/rdoc/site/0.2.0/Nucleon/Codes.html +567 -0
- data/rdoc/site/0.2.0/Nucleon/Command.html +279 -0
- data/rdoc/site/0.2.0/Nucleon/Command/Bash.html +548 -0
- data/rdoc/site/0.2.0/Nucleon/Config.html +1631 -0
- data/rdoc/site/0.2.0/Nucleon/Config/Collection.html +513 -0
- data/rdoc/site/0.2.0/Nucleon/Config/Options.html +493 -0
- data/rdoc/site/0.2.0/Nucleon/Core.html +639 -0
- data/rdoc/site/0.2.0/Nucleon/Environment.html +1208 -0
- data/rdoc/site/0.2.0/Nucleon/Errors.html +279 -0
- data/rdoc/site/0.2.0/Nucleon/Errors/BatchError.html +285 -0
- data/rdoc/site/0.2.0/Nucleon/Errors/NucleonError.html +661 -0
- data/rdoc/site/0.2.0/Nucleon/Errors/SSHUnavailable.html +285 -0
- data/rdoc/site/0.2.0/Nucleon/Event.html +279 -0
- data/rdoc/site/0.2.0/Nucleon/Event/Regex.html +471 -0
- data/rdoc/site/0.2.0/Nucleon/Facade.html +2409 -0
- data/rdoc/site/0.2.0/Nucleon/Gems.html +639 -0
- data/rdoc/site/0.2.0/Nucleon/Manager.html +1860 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin.html +288 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/Action.html +281 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/Action/Commit.html +385 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/Action/Project.html +399 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/Action/Push.html +375 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/Colors.html +549 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/ConfigCollection.html +485 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/ConfigOptions.html +453 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/Macro.html +280 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/Macro/ObjectInterface.html +699 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/Macro/PluginInterface.html +686 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/Settings.html +485 -0
- data/rdoc/site/0.2.0/Nucleon/Mixin/SubConfig.html +891 -0
- data/rdoc/site/0.2.0/Nucleon/Parallel.html +330 -0
- data/rdoc/site/0.2.0/Nucleon/Parallel/ClassMethods.html +329 -0
- data/rdoc/site/0.2.0/Nucleon/Parallel/InstanceMethods.html +456 -0
- data/rdoc/site/0.2.0/Nucleon/Plugin.html +286 -0
- data/rdoc/site/0.2.0/Nucleon/Plugin/Action.html +1829 -0
- data/rdoc/site/0.2.0/Nucleon/Plugin/Action/Option.html +463 -0
- data/rdoc/site/0.2.0/Nucleon/Plugin/Base.html +1803 -0
- data/rdoc/site/0.2.0/Nucleon/Plugin/Command.html +725 -0
- data/rdoc/site/0.2.0/Nucleon/Plugin/Event.html +446 -0
- data/rdoc/site/0.2.0/Nucleon/Plugin/Extension.html +285 -0
- data/rdoc/site/0.2.0/Nucleon/Plugin/Project.html +2898 -0
- data/rdoc/site/0.2.0/Nucleon/Plugin/Template.html +480 -0
- data/rdoc/site/0.2.0/Nucleon/Plugin/Translator.html +375 -0
- data/rdoc/site/0.2.0/Nucleon/Project.html +280 -0
- data/rdoc/site/0.2.0/Nucleon/Project/Git.html +1805 -0
- data/rdoc/site/0.2.0/Nucleon/Project/Github.html +553 -0
- data/rdoc/site/0.2.0/Nucleon/Template.html +281 -0
- data/rdoc/site/0.2.0/Nucleon/Template/JSON.html +333 -0
- data/rdoc/site/0.2.0/Nucleon/Template/Wrapper.html +333 -0
- data/rdoc/site/0.2.0/Nucleon/Template/YAML.html +333 -0
- data/rdoc/site/0.2.0/Nucleon/Translator.html +280 -0
- data/rdoc/site/0.2.0/Nucleon/Translator/JSON.html +370 -0
- data/rdoc/site/0.2.0/Nucleon/Translator/YAML.html +370 -0
- data/rdoc/site/0.2.0/Nucleon/Util.html +289 -0
- data/rdoc/site/0.2.0/Nucleon/Util/CLI.html +392 -0
- data/rdoc/site/0.2.0/Nucleon/Util/CLI/Parser.html +1250 -0
- data/rdoc/site/0.2.0/Nucleon/Util/Cache.html +784 -0
- data/rdoc/site/0.2.0/Nucleon/Util/Console.html +1318 -0
- data/rdoc/site/0.2.0/Nucleon/Util/Data.html +1411 -0
- data/rdoc/site/0.2.0/Nucleon/Util/Disk.html +526 -0
- data/rdoc/site/0.2.0/Nucleon/Util/Git.html +365 -0
- data/rdoc/site/0.2.0/Nucleon/Util/Liquid.html +369 -0
- data/rdoc/site/0.2.0/Nucleon/Util/Logger.html +810 -0
- data/rdoc/site/0.2.0/Nucleon/Util/Package.html +562 -0
- data/rdoc/site/0.2.0/Nucleon/Util/SSH.html +1033 -0
- data/rdoc/site/0.2.0/Nucleon/Util/SSH/Keypair.html +605 -0
- data/rdoc/site/0.2.0/Nucleon/Util/Shell.html +693 -0
- data/rdoc/site/0.2.0/Nucleon/Util/Shell/Result.html +501 -0
- data/rdoc/site/0.2.0/README_rdoc.html +316 -0
- data/rdoc/site/0.2.0/TODO_rdoc.html +265 -0
- data/rdoc/site/0.2.0/created.rid +61 -0
- data/rdoc/site/0.2.0/images/add.png +0 -0
- data/rdoc/site/0.2.0/images/brick.png +0 -0
- data/rdoc/site/0.2.0/images/brick_link.png +0 -0
- data/rdoc/site/0.2.0/images/bug.png +0 -0
- data/rdoc/site/0.2.0/images/bullet_black.png +0 -0
- data/rdoc/site/0.2.0/images/bullet_toggle_minus.png +0 -0
- data/rdoc/site/0.2.0/images/bullet_toggle_plus.png +0 -0
- data/rdoc/site/0.2.0/images/date.png +0 -0
- data/rdoc/site/0.2.0/images/delete.png +0 -0
- data/rdoc/site/0.2.0/images/find.png +0 -0
- data/rdoc/site/0.2.0/images/loadingAnimation.gif +0 -0
- data/rdoc/site/0.2.0/images/macFFBgHack.png +0 -0
- data/rdoc/site/0.2.0/images/package.png +0 -0
- data/rdoc/site/0.2.0/images/page_green.png +0 -0
- data/rdoc/site/0.2.0/images/page_white_text.png +0 -0
- data/rdoc/site/0.2.0/images/page_white_width.png +0 -0
- data/rdoc/site/0.2.0/images/plugin.png +0 -0
- data/rdoc/site/0.2.0/images/ruby.png +0 -0
- data/rdoc/site/0.2.0/images/tag_blue.png +0 -0
- data/rdoc/site/0.2.0/images/tag_green.png +0 -0
- data/rdoc/site/0.2.0/images/transparent.png +0 -0
- data/rdoc/site/0.2.0/images/wrench.png +0 -0
- data/rdoc/site/0.2.0/images/wrench_orange.png +0 -0
- data/rdoc/site/0.2.0/images/zoom.png +0 -0
- data/rdoc/site/0.2.0/index.html +315 -0
- data/rdoc/site/0.2.0/js/darkfish.js +155 -0
- data/rdoc/site/0.2.0/js/jquery.js +18 -0
- data/rdoc/site/0.2.0/js/navigation.js +142 -0
- data/rdoc/site/0.2.0/js/search.js +94 -0
- data/rdoc/site/0.2.0/js/search_index.js +1 -0
- data/rdoc/site/0.2.0/js/searcher.js +228 -0
- data/rdoc/site/0.2.0/rdoc.css +543 -0
- data/rdoc/site/0.2.0/table_of_contents.html +1657 -0
- data/spec/core/util/console_spec.rb +50 -18
- metadata +133 -2
data/lib/core/util/data.rb
CHANGED
|
@@ -260,12 +260,15 @@ class Data
|
|
|
260
260
|
|
|
261
261
|
#---
|
|
262
262
|
|
|
263
|
-
def self.merge(data, force = true)
|
|
263
|
+
def self.merge(data, force = true, basic = true)
|
|
264
264
|
value = data
|
|
265
265
|
|
|
266
266
|
# Special case because this method is called from within Config.new so we
|
|
267
267
|
# can not use Config.ensure, as that would cause an infinite loop.
|
|
268
|
-
|
|
268
|
+
if force.is_a?(Nucleon::Config)
|
|
269
|
+
basic = force.get(:basic, true)
|
|
270
|
+
force = force.get(:force, true)
|
|
271
|
+
end
|
|
269
272
|
|
|
270
273
|
if data.is_a?(Array)
|
|
271
274
|
value = undef?(data[0]) ? nil : data.shift.clone
|
|
@@ -275,15 +278,23 @@ class Data
|
|
|
275
278
|
|
|
276
279
|
case value
|
|
277
280
|
when Hash
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
value = force ? value.deep_merge!(item) : value.deep_merge(item)
|
|
281
|
-
|
|
282
|
-
rescue LoadError
|
|
283
|
-
if item.is_a?(Hash) # Non recursive top level by default.
|
|
281
|
+
if basic
|
|
282
|
+
if item.is_a?(Hash)
|
|
284
283
|
value = value.merge(item)
|
|
285
284
|
elsif force
|
|
286
285
|
value = item
|
|
286
|
+
end
|
|
287
|
+
else
|
|
288
|
+
begin
|
|
289
|
+
require 'deep_merge'
|
|
290
|
+
value = force ? value.deep_merge!(item) : value.deep_merge(item)
|
|
291
|
+
|
|
292
|
+
rescue LoadError
|
|
293
|
+
if item.is_a?(Hash) # Non recursive top level by default.
|
|
294
|
+
value = value.merge(item)
|
|
295
|
+
elsif force
|
|
296
|
+
value = item
|
|
297
|
+
end
|
|
287
298
|
end
|
|
288
299
|
end
|
|
289
300
|
when Array
|
|
@@ -298,7 +309,6 @@ class Data
|
|
|
298
309
|
end
|
|
299
310
|
end
|
|
300
311
|
end
|
|
301
|
-
|
|
302
312
|
return value
|
|
303
313
|
end
|
|
304
314
|
|
data/lib/core/util/logger.rb
CHANGED
|
@@ -116,32 +116,42 @@ class Logger
|
|
|
116
116
|
# Log statements
|
|
117
117
|
|
|
118
118
|
def debug(message)
|
|
119
|
-
|
|
119
|
+
unless Util::Console.quiet
|
|
120
|
+
@logger.debug(message)
|
|
121
|
+
end
|
|
120
122
|
end
|
|
121
123
|
|
|
122
124
|
#---
|
|
123
125
|
|
|
124
126
|
def info(message)
|
|
125
|
-
|
|
127
|
+
unless Util::Console.quiet
|
|
128
|
+
@logger.info(message)
|
|
129
|
+
end
|
|
126
130
|
end
|
|
127
131
|
|
|
128
132
|
#---
|
|
129
133
|
|
|
130
134
|
def warn(message)
|
|
131
|
-
|
|
135
|
+
unless Util::Console.quiet
|
|
136
|
+
@logger.warn(message)
|
|
137
|
+
end
|
|
132
138
|
end
|
|
133
139
|
|
|
134
140
|
#---
|
|
135
141
|
|
|
136
142
|
def error(message)
|
|
137
|
-
|
|
143
|
+
unless Util::Console.quiet
|
|
144
|
+
@logger.error(message)
|
|
145
|
+
end
|
|
138
146
|
end
|
|
139
147
|
|
|
140
148
|
#---
|
|
141
149
|
|
|
142
150
|
def hook(message)
|
|
143
|
-
|
|
144
|
-
|
|
151
|
+
unless Util::Console.quiet
|
|
152
|
+
@logger.hook(message)
|
|
153
|
+
end
|
|
154
|
+
end
|
|
145
155
|
end
|
|
146
156
|
end
|
|
147
157
|
end
|
data/lib/core/util/shell.rb
CHANGED
|
@@ -111,7 +111,9 @@ class Shell < Core
|
|
|
111
111
|
error_success = close_exec_pipe(t2, $stderr, error_orig, error_new, 'error')
|
|
112
112
|
end
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
unless config.get(:quiet, false)
|
|
115
|
+
logger.warn("`#{command}` messages: #{system_result.errors}") if system_result.errors.length > 0
|
|
116
|
+
end
|
|
115
117
|
logger.warn("`#{command}` status: #{system_result.status}") unless system_result.status == 0
|
|
116
118
|
|
|
117
119
|
success = ( system_success && output_success && error_success )
|
data/lib/core/util/ssh.rb
CHANGED
|
@@ -140,6 +140,8 @@ class SSH < Core
|
|
|
140
140
|
@@sessions = {}
|
|
141
141
|
@@auth = {}
|
|
142
142
|
|
|
143
|
+
@@session_lock = Mutex.new
|
|
144
|
+
|
|
143
145
|
#---
|
|
144
146
|
|
|
145
147
|
def self.session_id(hostname, user)
|
|
@@ -152,37 +154,40 @@ class SSH < Core
|
|
|
152
154
|
require 'net/ssh'
|
|
153
155
|
|
|
154
156
|
session_id = session_id(hostname, user)
|
|
155
|
-
config = Config.ensure(options)
|
|
156
157
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
:auth_methods => [ 'publickey' ],
|
|
160
|
-
:paranoid => :very
|
|
161
|
-
}).import(Util::Data.subset(config, config.keys - [ :keypair, :key_dir, :key_name ]))
|
|
158
|
+
@@session_lock.synchronize do
|
|
159
|
+
config = Config.ensure(options)
|
|
162
160
|
|
|
163
|
-
|
|
164
|
-
|
|
161
|
+
ssh_options = Config.new({
|
|
162
|
+
:user_known_hosts_file => [ File.join(key_path, 'known_hosts'), File.join(key_path, 'known_hosts2') ],
|
|
163
|
+
:auth_methods => [ 'publickey' ],
|
|
164
|
+
:paranoid => :very
|
|
165
|
+
}).import(Util::Data.subset(config, config.keys - [ :keypair, :key_dir, :key_name ]))
|
|
166
|
+
|
|
167
|
+
if private_key
|
|
168
|
+
auth_id = [ session_id, private_key ].join('_')
|
|
165
169
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
+
if ! @@auth[auth_id] && keypair = unlock_private_key(private_key, config)
|
|
171
|
+
@@auth[auth_id] = keypair
|
|
172
|
+
end
|
|
173
|
+
config[:keypair] = @@auth[auth_id] # Reset so caller can access updated keypair
|
|
170
174
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
175
|
+
if @@auth[auth_id].is_a?(String)
|
|
176
|
+
ssh_options[:keys_only] = false
|
|
177
|
+
ssh_options[:keys] = [ @@auth[auth_id] ]
|
|
178
|
+
else
|
|
179
|
+
ssh_options[:keys_only] = true
|
|
180
|
+
ssh_options[:key_data] = [ @@auth[auth_id].private_key ]
|
|
181
|
+
end
|
|
177
182
|
end
|
|
178
|
-
end
|
|
179
183
|
|
|
180
|
-
|
|
184
|
+
ssh_options[:port] = port
|
|
181
185
|
|
|
182
|
-
|
|
183
|
-
|
|
186
|
+
if reset || ! @@sessions.has_key?(session_id)
|
|
187
|
+
@@sessions[session_id] = Net::SSH.start(hostname, user, ssh_options.export)
|
|
188
|
+
end
|
|
184
189
|
end
|
|
185
|
-
yield(@@sessions[session_id]) if block_given? && @@sessions[session_id]
|
|
190
|
+
yield(@@sessions[session_id]) if block_given? && @@sessions[session_id]
|
|
186
191
|
@@sessions[session_id]
|
|
187
192
|
end
|
|
188
193
|
|
|
@@ -244,7 +249,6 @@ class SSH < Core
|
|
|
244
249
|
logger.info(">> running SSH: #{command}")
|
|
245
250
|
|
|
246
251
|
ssh.open_channel do |ssh_channel|
|
|
247
|
-
ssh_channel.request_pty
|
|
248
252
|
ssh_channel.exec(command) do |channel, success|
|
|
249
253
|
unless success
|
|
250
254
|
raise "Could not execute command: #{command.inspect}"
|
|
@@ -256,7 +260,6 @@ class SSH < Core
|
|
|
256
260
|
end
|
|
257
261
|
|
|
258
262
|
channel.on_extended_data do |ch, type, data|
|
|
259
|
-
next unless type == 1
|
|
260
263
|
result.append_errors(data)
|
|
261
264
|
yield(:error, command, data) if block_given?
|
|
262
265
|
end
|
|
@@ -9,7 +9,7 @@ class JSON < Nucleon.plugin_class(:nucleon, :translator)
|
|
|
9
9
|
def parse(json_text)
|
|
10
10
|
return super do |properties|
|
|
11
11
|
if json_text && ! json_text.empty?
|
|
12
|
-
properties = Util::Data.parse_json(json_text)
|
|
12
|
+
properties = Util::Data.symbol_map(Util::Data.parse_json(json_text))
|
|
13
13
|
end
|
|
14
14
|
properties
|
|
15
15
|
end
|
|
@@ -19,7 +19,7 @@ class JSON < Nucleon.plugin_class(:nucleon, :translator)
|
|
|
19
19
|
|
|
20
20
|
def generate(properties)
|
|
21
21
|
return super do
|
|
22
|
-
Util::Data.to_json(properties, get(:pretty, true))
|
|
22
|
+
Util::Data.to_json(Util::Data.string_map(properties), get(:pretty, true))
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
end
|
|
@@ -9,7 +9,7 @@ class YAML < Nucleon.plugin_class(:nucleon, :translator)
|
|
|
9
9
|
def parse(yaml_text)
|
|
10
10
|
return super do |properties|
|
|
11
11
|
if yaml_text && ! yaml_text.empty?
|
|
12
|
-
properties = Util::Data.parse_yaml(yaml_text)
|
|
12
|
+
properties = Util::Data.symbol_map(Util::Data.parse_yaml(yaml_text))
|
|
13
13
|
end
|
|
14
14
|
properties
|
|
15
15
|
end
|
|
@@ -19,7 +19,7 @@ class YAML < Nucleon.plugin_class(:nucleon, :translator)
|
|
|
19
19
|
|
|
20
20
|
def generate(properties)
|
|
21
21
|
return super do
|
|
22
|
-
Util::Data.to_yaml(properties)
|
|
22
|
+
Util::Data.to_yaml(Util::Data.string_map(properties))
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
end
|
data/lib/nucleon_base.rb
CHANGED
|
@@ -64,6 +64,18 @@ module Nucleon
|
|
|
64
64
|
def self.VERSION
|
|
65
65
|
File.read(File.join(File.dirname(__FILE__), '..', 'VERSION'))
|
|
66
66
|
end
|
|
67
|
+
|
|
68
|
+
#-----------------------------------------------------------------------------
|
|
69
|
+
|
|
70
|
+
@@dump_enabled = false
|
|
71
|
+
|
|
72
|
+
def self.dump_enabled=dump
|
|
73
|
+
@@dump_enabled = dump
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def self.dump_enabled
|
|
77
|
+
@@dump_enabled
|
|
78
|
+
end
|
|
67
79
|
|
|
68
80
|
#-----------------------------------------------------------------------------
|
|
69
81
|
|
|
@@ -170,16 +182,18 @@ end
|
|
|
170
182
|
|
|
171
183
|
module Kernel
|
|
172
184
|
|
|
173
|
-
def dbg(data, label = '')
|
|
185
|
+
def dbg(data, label = '', override_enabled = false)
|
|
174
186
|
# Invocations of this function should NOT be committed to the project
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
187
|
+
if Nucleon.dump_enabled || override_enabled
|
|
188
|
+
require 'pp'
|
|
189
|
+
puts '>>----------------------'
|
|
190
|
+
unless ! label || label.empty?
|
|
191
|
+
puts label
|
|
192
|
+
puts '---'
|
|
193
|
+
end
|
|
194
|
+
pp data
|
|
195
|
+
puts '<<'
|
|
180
196
|
end
|
|
181
|
-
pp data
|
|
182
|
-
puts '<<'
|
|
183
197
|
end
|
|
184
198
|
end
|
|
185
199
|
|
data/nucleon.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = "nucleon"
|
|
8
|
-
s.version = "0.2.
|
|
8
|
+
s.version = "0.2.1"
|
|
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-07-
|
|
12
|
+
s.date = "2014-07-10"
|
|
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"]
|
|
@@ -42,6 +42,7 @@ Gem::Specification.new do |s|
|
|
|
42
42
|
"lib/core/mixin/action/commit.rb",
|
|
43
43
|
"lib/core/mixin/action/project.rb",
|
|
44
44
|
"lib/core/mixin/action/push.rb",
|
|
45
|
+
"lib/core/mixin/action/registration.rb",
|
|
45
46
|
"lib/core/mixin/colors.rb",
|
|
46
47
|
"lib/core/mixin/config/collection.rb",
|
|
47
48
|
"lib/core/mixin/config/options.rb",
|
|
@@ -202,6 +203,122 @@ Gem::Specification.new do |s|
|
|
|
202
203
|
"rdoc/site/0.1.19/js/searcher.js",
|
|
203
204
|
"rdoc/site/0.1.19/rdoc.css",
|
|
204
205
|
"rdoc/site/0.1.19/table_of_contents.html",
|
|
206
|
+
"rdoc/site/0.2.0/ARCHITECTURE_rdoc.html",
|
|
207
|
+
"rdoc/site/0.2.0/Hash.html",
|
|
208
|
+
"rdoc/site/0.2.0/Kernel.html",
|
|
209
|
+
"rdoc/site/0.2.0/Nucleon.html",
|
|
210
|
+
"rdoc/site/0.2.0/Nucleon/Action.html",
|
|
211
|
+
"rdoc/site/0.2.0/Nucleon/Action/Extract.html",
|
|
212
|
+
"rdoc/site/0.2.0/Nucleon/Action/Project.html",
|
|
213
|
+
"rdoc/site/0.2.0/Nucleon/Action/Project/Add.html",
|
|
214
|
+
"rdoc/site/0.2.0/Nucleon/Action/Project/Create.html",
|
|
215
|
+
"rdoc/site/0.2.0/Nucleon/Action/Project/Remove.html",
|
|
216
|
+
"rdoc/site/0.2.0/Nucleon/Action/Project/Save.html",
|
|
217
|
+
"rdoc/site/0.2.0/Nucleon/Action/Project/Update.html",
|
|
218
|
+
"rdoc/site/0.2.0/Nucleon/Codes.html",
|
|
219
|
+
"rdoc/site/0.2.0/Nucleon/Command.html",
|
|
220
|
+
"rdoc/site/0.2.0/Nucleon/Command/Bash.html",
|
|
221
|
+
"rdoc/site/0.2.0/Nucleon/Config.html",
|
|
222
|
+
"rdoc/site/0.2.0/Nucleon/Config/Collection.html",
|
|
223
|
+
"rdoc/site/0.2.0/Nucleon/Config/Options.html",
|
|
224
|
+
"rdoc/site/0.2.0/Nucleon/Core.html",
|
|
225
|
+
"rdoc/site/0.2.0/Nucleon/Environment.html",
|
|
226
|
+
"rdoc/site/0.2.0/Nucleon/Errors.html",
|
|
227
|
+
"rdoc/site/0.2.0/Nucleon/Errors/BatchError.html",
|
|
228
|
+
"rdoc/site/0.2.0/Nucleon/Errors/NucleonError.html",
|
|
229
|
+
"rdoc/site/0.2.0/Nucleon/Errors/SSHUnavailable.html",
|
|
230
|
+
"rdoc/site/0.2.0/Nucleon/Event.html",
|
|
231
|
+
"rdoc/site/0.2.0/Nucleon/Event/Regex.html",
|
|
232
|
+
"rdoc/site/0.2.0/Nucleon/Facade.html",
|
|
233
|
+
"rdoc/site/0.2.0/Nucleon/Gems.html",
|
|
234
|
+
"rdoc/site/0.2.0/Nucleon/Manager.html",
|
|
235
|
+
"rdoc/site/0.2.0/Nucleon/Mixin.html",
|
|
236
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/Action.html",
|
|
237
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/Action/Commit.html",
|
|
238
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/Action/Project.html",
|
|
239
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/Action/Push.html",
|
|
240
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/Colors.html",
|
|
241
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/ConfigCollection.html",
|
|
242
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/ConfigOptions.html",
|
|
243
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/Macro.html",
|
|
244
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/Macro/ObjectInterface.html",
|
|
245
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/Macro/PluginInterface.html",
|
|
246
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/Settings.html",
|
|
247
|
+
"rdoc/site/0.2.0/Nucleon/Mixin/SubConfig.html",
|
|
248
|
+
"rdoc/site/0.2.0/Nucleon/Parallel.html",
|
|
249
|
+
"rdoc/site/0.2.0/Nucleon/Parallel/ClassMethods.html",
|
|
250
|
+
"rdoc/site/0.2.0/Nucleon/Parallel/InstanceMethods.html",
|
|
251
|
+
"rdoc/site/0.2.0/Nucleon/Plugin.html",
|
|
252
|
+
"rdoc/site/0.2.0/Nucleon/Plugin/Action.html",
|
|
253
|
+
"rdoc/site/0.2.0/Nucleon/Plugin/Action/Option.html",
|
|
254
|
+
"rdoc/site/0.2.0/Nucleon/Plugin/Base.html",
|
|
255
|
+
"rdoc/site/0.2.0/Nucleon/Plugin/Command.html",
|
|
256
|
+
"rdoc/site/0.2.0/Nucleon/Plugin/Event.html",
|
|
257
|
+
"rdoc/site/0.2.0/Nucleon/Plugin/Extension.html",
|
|
258
|
+
"rdoc/site/0.2.0/Nucleon/Plugin/Project.html",
|
|
259
|
+
"rdoc/site/0.2.0/Nucleon/Plugin/Template.html",
|
|
260
|
+
"rdoc/site/0.2.0/Nucleon/Plugin/Translator.html",
|
|
261
|
+
"rdoc/site/0.2.0/Nucleon/Project.html",
|
|
262
|
+
"rdoc/site/0.2.0/Nucleon/Project/Git.html",
|
|
263
|
+
"rdoc/site/0.2.0/Nucleon/Project/Github.html",
|
|
264
|
+
"rdoc/site/0.2.0/Nucleon/Template.html",
|
|
265
|
+
"rdoc/site/0.2.0/Nucleon/Template/JSON.html",
|
|
266
|
+
"rdoc/site/0.2.0/Nucleon/Template/Wrapper.html",
|
|
267
|
+
"rdoc/site/0.2.0/Nucleon/Template/YAML.html",
|
|
268
|
+
"rdoc/site/0.2.0/Nucleon/Translator.html",
|
|
269
|
+
"rdoc/site/0.2.0/Nucleon/Translator/JSON.html",
|
|
270
|
+
"rdoc/site/0.2.0/Nucleon/Translator/YAML.html",
|
|
271
|
+
"rdoc/site/0.2.0/Nucleon/Util.html",
|
|
272
|
+
"rdoc/site/0.2.0/Nucleon/Util/CLI.html",
|
|
273
|
+
"rdoc/site/0.2.0/Nucleon/Util/CLI/Parser.html",
|
|
274
|
+
"rdoc/site/0.2.0/Nucleon/Util/Cache.html",
|
|
275
|
+
"rdoc/site/0.2.0/Nucleon/Util/Console.html",
|
|
276
|
+
"rdoc/site/0.2.0/Nucleon/Util/Data.html",
|
|
277
|
+
"rdoc/site/0.2.0/Nucleon/Util/Disk.html",
|
|
278
|
+
"rdoc/site/0.2.0/Nucleon/Util/Git.html",
|
|
279
|
+
"rdoc/site/0.2.0/Nucleon/Util/Liquid.html",
|
|
280
|
+
"rdoc/site/0.2.0/Nucleon/Util/Logger.html",
|
|
281
|
+
"rdoc/site/0.2.0/Nucleon/Util/Package.html",
|
|
282
|
+
"rdoc/site/0.2.0/Nucleon/Util/SSH.html",
|
|
283
|
+
"rdoc/site/0.2.0/Nucleon/Util/SSH/Keypair.html",
|
|
284
|
+
"rdoc/site/0.2.0/Nucleon/Util/Shell.html",
|
|
285
|
+
"rdoc/site/0.2.0/Nucleon/Util/Shell/Result.html",
|
|
286
|
+
"rdoc/site/0.2.0/README_rdoc.html",
|
|
287
|
+
"rdoc/site/0.2.0/TODO_rdoc.html",
|
|
288
|
+
"rdoc/site/0.2.0/created.rid",
|
|
289
|
+
"rdoc/site/0.2.0/images/add.png",
|
|
290
|
+
"rdoc/site/0.2.0/images/brick.png",
|
|
291
|
+
"rdoc/site/0.2.0/images/brick_link.png",
|
|
292
|
+
"rdoc/site/0.2.0/images/bug.png",
|
|
293
|
+
"rdoc/site/0.2.0/images/bullet_black.png",
|
|
294
|
+
"rdoc/site/0.2.0/images/bullet_toggle_minus.png",
|
|
295
|
+
"rdoc/site/0.2.0/images/bullet_toggle_plus.png",
|
|
296
|
+
"rdoc/site/0.2.0/images/date.png",
|
|
297
|
+
"rdoc/site/0.2.0/images/delete.png",
|
|
298
|
+
"rdoc/site/0.2.0/images/find.png",
|
|
299
|
+
"rdoc/site/0.2.0/images/loadingAnimation.gif",
|
|
300
|
+
"rdoc/site/0.2.0/images/macFFBgHack.png",
|
|
301
|
+
"rdoc/site/0.2.0/images/package.png",
|
|
302
|
+
"rdoc/site/0.2.0/images/page_green.png",
|
|
303
|
+
"rdoc/site/0.2.0/images/page_white_text.png",
|
|
304
|
+
"rdoc/site/0.2.0/images/page_white_width.png",
|
|
305
|
+
"rdoc/site/0.2.0/images/plugin.png",
|
|
306
|
+
"rdoc/site/0.2.0/images/ruby.png",
|
|
307
|
+
"rdoc/site/0.2.0/images/tag_blue.png",
|
|
308
|
+
"rdoc/site/0.2.0/images/tag_green.png",
|
|
309
|
+
"rdoc/site/0.2.0/images/transparent.png",
|
|
310
|
+
"rdoc/site/0.2.0/images/wrench.png",
|
|
311
|
+
"rdoc/site/0.2.0/images/wrench_orange.png",
|
|
312
|
+
"rdoc/site/0.2.0/images/zoom.png",
|
|
313
|
+
"rdoc/site/0.2.0/index.html",
|
|
314
|
+
"rdoc/site/0.2.0/js/darkfish.js",
|
|
315
|
+
"rdoc/site/0.2.0/js/jquery.js",
|
|
316
|
+
"rdoc/site/0.2.0/js/navigation.js",
|
|
317
|
+
"rdoc/site/0.2.0/js/search.js",
|
|
318
|
+
"rdoc/site/0.2.0/js/search_index.js",
|
|
319
|
+
"rdoc/site/0.2.0/js/searcher.js",
|
|
320
|
+
"rdoc/site/0.2.0/rdoc.css",
|
|
321
|
+
"rdoc/site/0.2.0/table_of_contents.html",
|
|
205
322
|
"spec/coral_mock_input.rb",
|
|
206
323
|
"spec/coral_test_kernel.rb",
|
|
207
324
|
"spec/core/util/console_spec.rb",
|
|
@@ -224,6 +341,7 @@ Gem::Specification.new do |s|
|
|
|
224
341
|
s.add_runtime_dependency(%q<i18n>, ["~> 0.6"])
|
|
225
342
|
s.add_runtime_dependency(%q<netrc>, ["~> 0.7"])
|
|
226
343
|
s.add_runtime_dependency(%q<highline>, ["~> 1.6"])
|
|
344
|
+
s.add_runtime_dependency(%q<erubis>, ["~> 2.7"])
|
|
227
345
|
s.add_runtime_dependency(%q<deep_merge>, ["~> 1.0"])
|
|
228
346
|
s.add_runtime_dependency(%q<multi_json>, ["~> 1.7"])
|
|
229
347
|
s.add_runtime_dependency(%q<sshkey>, ["~> 1.6"])
|
|
@@ -244,6 +362,7 @@ Gem::Specification.new do |s|
|
|
|
244
362
|
s.add_dependency(%q<i18n>, ["~> 0.6"])
|
|
245
363
|
s.add_dependency(%q<netrc>, ["~> 0.7"])
|
|
246
364
|
s.add_dependency(%q<highline>, ["~> 1.6"])
|
|
365
|
+
s.add_dependency(%q<erubis>, ["~> 2.7"])
|
|
247
366
|
s.add_dependency(%q<deep_merge>, ["~> 1.0"])
|
|
248
367
|
s.add_dependency(%q<multi_json>, ["~> 1.7"])
|
|
249
368
|
s.add_dependency(%q<sshkey>, ["~> 1.6"])
|
|
@@ -265,6 +384,7 @@ Gem::Specification.new do |s|
|
|
|
265
384
|
s.add_dependency(%q<i18n>, ["~> 0.6"])
|
|
266
385
|
s.add_dependency(%q<netrc>, ["~> 0.7"])
|
|
267
386
|
s.add_dependency(%q<highline>, ["~> 1.6"])
|
|
387
|
+
s.add_dependency(%q<erubis>, ["~> 2.7"])
|
|
268
388
|
s.add_dependency(%q<deep_merge>, ["~> 1.0"])
|
|
269
389
|
s.add_dependency(%q<multi_json>, ["~> 1.7"])
|
|
270
390
|
s.add_dependency(%q<sshkey>, ["~> 1.6"])
|