nucleon 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -8
- data/Gemfile.lock +0 -28
- data/README.rdoc +13 -5
- data/Rakefile +9 -1
- data/VERSION +1 -1
- data/bin/nucleon +55 -0
- data/lib/core/codes.rb +107 -0
- data/lib/core/config/collection.rb +57 -0
- data/lib/core/config/options.rb +70 -0
- data/lib/core/config.rb +342 -0
- data/lib/core/core.rb +54 -0
- data/lib/core/errors.rb +84 -0
- data/lib/core/facade.rb +283 -0
- data/lib/core/gems.rb +80 -0
- data/lib/core/manager.rb +594 -0
- data/lib/core/mixin/action/commit.rb +58 -0
- data/lib/core/mixin/action/project.rb +53 -0
- data/lib/core/mixin/action/push.rb +52 -0
- data/lib/core/mixin/config/collection.rb +53 -0
- data/lib/core/mixin/config/options.rb +39 -0
- data/lib/core/mixin/macro/object_interface.rb +361 -0
- data/lib/core/mixin/macro/plugin_interface.rb +380 -0
- data/lib/core/mixin/settings.rb +46 -0
- data/lib/core/mixin/sub_config.rb +148 -0
- data/lib/core/mod/hash.rb +29 -0
- data/lib/core/plugin/action.rb +371 -0
- data/lib/core/plugin/base.rb +313 -0
- data/lib/core/plugin/command.rb +98 -0
- data/lib/core/plugin/event.rb +53 -0
- data/lib/core/plugin/extension.rb +12 -0
- data/lib/core/plugin/project.rb +890 -0
- data/lib/core/plugin/template.rb +80 -0
- data/lib/core/plugin/translator.rb +38 -0
- data/lib/core/util/cli.rb +353 -0
- data/lib/core/util/console.rb +237 -0
- data/lib/core/util/data.rb +404 -0
- data/lib/core/util/disk.rb +114 -0
- data/lib/core/util/git.rb +43 -0
- data/lib/core/util/liquid.rb +17 -0
- data/lib/core/util/logger.rb +147 -0
- data/lib/core/util/package.rb +93 -0
- data/lib/core/util/shell.rb +239 -0
- data/lib/nucleon/action/add.rb +69 -0
- data/lib/nucleon/action/create.rb +52 -0
- data/lib/nucleon/action/extract.rb +49 -0
- data/lib/nucleon/action/remove.rb +51 -0
- data/lib/nucleon/action/save.rb +53 -0
- data/lib/nucleon/action/update.rb +37 -0
- data/lib/nucleon/command/bash.rb +146 -0
- data/lib/nucleon/event/regex.rb +52 -0
- data/lib/nucleon/project/git.rb +465 -0
- data/lib/nucleon/project/github.rb +108 -0
- data/lib/nucleon/template/json.rb +16 -0
- data/lib/nucleon/template/wrapper.rb +16 -0
- data/lib/nucleon/template/yaml.rb +16 -0
- data/lib/nucleon/translator/json.rb +27 -0
- data/lib/nucleon/translator/yaml.rb +27 -0
- data/lib/nucleon.rb +18 -15
- data/locales/en.yml +3 -132
- data/nucleon.gemspec +66 -27
- data/spec/core/util/console_spec.rb +489 -0
- metadata +109 -96
@@ -0,0 +1,108 @@
|
|
1
|
+
|
2
|
+
nucleon_require(File.dirname(__FILE__), :git)
|
3
|
+
|
4
|
+
#---
|
5
|
+
|
6
|
+
module Nucleon
|
7
|
+
module Project
|
8
|
+
class Github < Git
|
9
|
+
|
10
|
+
#-----------------------------------------------------------------------------
|
11
|
+
# Project plugin interface
|
12
|
+
|
13
|
+
def normalize
|
14
|
+
if reference = delete(:reference, nil)
|
15
|
+
myself.name = reference
|
16
|
+
else
|
17
|
+
if url = get(:url, nil)
|
18
|
+
myself.name = url
|
19
|
+
set(:url, myself.class.expand_url(url, get(:ssh, false)))
|
20
|
+
end
|
21
|
+
end
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
#---
|
26
|
+
|
27
|
+
def set_connection
|
28
|
+
require 'octokit'
|
29
|
+
|
30
|
+
@client = Octokit::Client.new :netrc => true
|
31
|
+
@client.login
|
32
|
+
end
|
33
|
+
|
34
|
+
#-----------------------------------------------------------------------------
|
35
|
+
# Property accessor / modifiers
|
36
|
+
|
37
|
+
def client
|
38
|
+
set_connection unless @client
|
39
|
+
@client
|
40
|
+
end
|
41
|
+
|
42
|
+
#-----------------------------------------------------------------------------
|
43
|
+
# Project operations
|
44
|
+
|
45
|
+
def init_auth
|
46
|
+
super do
|
47
|
+
key_id = ENV['USER'] + '@' + lookup(:ipaddress)
|
48
|
+
ssh_key = public_key_str
|
49
|
+
|
50
|
+
if private_key && ssh_key
|
51
|
+
begin
|
52
|
+
deploy_keys = client.deploy_keys(self.name)
|
53
|
+
github_id = nil
|
54
|
+
keys_match = true
|
55
|
+
|
56
|
+
deploy_keys.each do |key_resource|
|
57
|
+
if key_resource.title == key_id
|
58
|
+
github_id = key_resource.id
|
59
|
+
keys_match = false if key_resource.key != ssh_key
|
60
|
+
break
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
if github_id
|
65
|
+
unless keys_match
|
66
|
+
client.edit_deploy_key(self.name, github_id, { :key => ssh_key })
|
67
|
+
verify_key
|
68
|
+
end
|
69
|
+
else
|
70
|
+
client.add_deploy_key(self.name, key_id, ssh_key)
|
71
|
+
verify_key
|
72
|
+
end
|
73
|
+
|
74
|
+
rescue Exception => error
|
75
|
+
logger.error(error.inspect)
|
76
|
+
logger.error(error.message)
|
77
|
+
logger.error(Util::Data.to_yaml(error.backtrace))
|
78
|
+
|
79
|
+
ui.error(error.message, { :prefix => false }) if error.message
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
#-----------------------------------------------------------------------------
|
86
|
+
# Utilities
|
87
|
+
|
88
|
+
def self.expand_url(path, editable = false)
|
89
|
+
if editable
|
90
|
+
protocol = 'git@'
|
91
|
+
separator = ':'
|
92
|
+
else
|
93
|
+
protocol = 'https://'
|
94
|
+
separator = '/'
|
95
|
+
end
|
96
|
+
return "#{protocol}github.com#{separator}" + path + '.git'
|
97
|
+
end
|
98
|
+
|
99
|
+
#---
|
100
|
+
|
101
|
+
def verify_key
|
102
|
+
Util::SSH.init_session('github.com', 'git', 22, private_key)
|
103
|
+
Util::SSH.close('github.com', 'git')
|
104
|
+
end
|
105
|
+
protected :verify_key
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
module Nucleon
|
3
|
+
module Template
|
4
|
+
class Json < Plugin::Template
|
5
|
+
|
6
|
+
#-----------------------------------------------------------------------------
|
7
|
+
# Renderers
|
8
|
+
|
9
|
+
def render_processed(data)
|
10
|
+
return super do
|
11
|
+
Util::Data.to_json(data)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
module Nucleon
|
3
|
+
module Template
|
4
|
+
class Wrapper < Plugin::Template
|
5
|
+
|
6
|
+
#-----------------------------------------------------------------------------
|
7
|
+
# Renderers
|
8
|
+
|
9
|
+
def render_processed(data)
|
10
|
+
return super do
|
11
|
+
get(:template_prefix, '') + data.to_s + get(:template_suffix, '')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
module Nucleon
|
3
|
+
module Template
|
4
|
+
class Yaml < Plugin::Template
|
5
|
+
|
6
|
+
#-----------------------------------------------------------------------------
|
7
|
+
# Renderers
|
8
|
+
|
9
|
+
def render_processed(data)
|
10
|
+
return super do
|
11
|
+
Util::Data.to_yaml(data)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
module Nucleon
|
3
|
+
module Translator
|
4
|
+
class Json < Plugin::Translator
|
5
|
+
|
6
|
+
#-----------------------------------------------------------------------------
|
7
|
+
# Translator operations
|
8
|
+
|
9
|
+
def parse(json_text)
|
10
|
+
return super do |properties|
|
11
|
+
if json_text && ! json_text.empty?
|
12
|
+
properties = Util::Data.parse_json(json_text)
|
13
|
+
end
|
14
|
+
properties
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
#---
|
19
|
+
|
20
|
+
def generate(properties)
|
21
|
+
return super do
|
22
|
+
Util::Data.to_json(properties, get(:pretty, true))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
module Nucleon
|
3
|
+
module Translator
|
4
|
+
class Yaml < Plugin::Translator
|
5
|
+
|
6
|
+
#-----------------------------------------------------------------------------
|
7
|
+
# Translator operations
|
8
|
+
|
9
|
+
def parse(yaml_text)
|
10
|
+
return super do |properties|
|
11
|
+
if yaml_text && ! yaml_text.empty?
|
12
|
+
properties = Util::Data.parse_yaml(yaml_text)
|
13
|
+
end
|
14
|
+
properties
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
#---
|
19
|
+
|
20
|
+
def generate(properties)
|
21
|
+
return super do
|
22
|
+
Util::Data.to_yaml(properties)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/nucleon.rb
CHANGED
@@ -60,10 +60,10 @@ module Kernel
|
|
60
60
|
end
|
61
61
|
|
62
62
|
#-------------------------------------------------------------------------------
|
63
|
-
#
|
63
|
+
# Load paths
|
64
64
|
|
65
65
|
lib_dir = File.dirname(__FILE__)
|
66
|
-
core_dir = File.join(lib_dir, '
|
66
|
+
core_dir = File.join(lib_dir, 'core')
|
67
67
|
mixin_dir = File.join(core_dir, 'mixin')
|
68
68
|
mixin_config_dir = File.join(mixin_dir, 'config')
|
69
69
|
mixin_action_dir = File.join(mixin_dir, 'action')
|
@@ -75,25 +75,25 @@ plugin_dir = File.join(core_dir, 'plugin')
|
|
75
75
|
#-------------------------------------------------------------------------------
|
76
76
|
# Coral requirements
|
77
77
|
|
78
|
-
git_location = nucleon_locate('git')
|
79
|
-
|
80
78
|
$:.unshift(lib_dir) unless $:.include?(lib_dir) || $:.include?(File.expand_path(lib_dir))
|
81
79
|
|
82
80
|
#---
|
83
81
|
|
84
82
|
require 'rubygems'
|
85
83
|
|
84
|
+
require 'optparse'
|
86
85
|
require 'pp'
|
87
86
|
require 'i18n'
|
88
87
|
require 'log4r'
|
89
88
|
require 'log4r/configurator'
|
90
|
-
require 'base64'
|
91
89
|
require 'deep_merge'
|
92
|
-
|
90
|
+
|
91
|
+
require 'digest/sha1'
|
92
|
+
require 'base64'
|
93
|
+
|
93
94
|
require 'yaml'
|
94
95
|
require 'multi_json'
|
95
|
-
|
96
|
-
require 'optparse'
|
96
|
+
|
97
97
|
require 'thread' # Eventually depreciated
|
98
98
|
require 'celluloid'
|
99
99
|
require 'celluloid/autostart'
|
@@ -107,13 +107,18 @@ I18n.load_path << File.expand_path(File.join('..', 'locales', 'en.yml'), lib_dir
|
|
107
107
|
|
108
108
|
#---
|
109
109
|
|
110
|
-
if
|
110
|
+
if nucleon_locate('git')
|
111
111
|
require 'grit'
|
112
112
|
nucleon_require(util_dir, :git)
|
113
113
|
end
|
114
114
|
|
115
115
|
#---
|
116
116
|
|
117
|
+
# Make sure logger is at the top of our load order priorities
|
118
|
+
nucleon_require(util_dir, :logger)
|
119
|
+
|
120
|
+
#---
|
121
|
+
|
117
122
|
# Object modifications (100% pure monkey patches)
|
118
123
|
Dir.glob(File.join(mod_dir, '*.rb')).each do |file|
|
119
124
|
require file
|
@@ -142,7 +147,7 @@ nucleon_require(core_dir, :errors)
|
|
142
147
|
nucleon_require(core_dir, :codes)
|
143
148
|
nucleon_require(util_dir, :data)
|
144
149
|
nucleon_require(core_dir, :config)
|
145
|
-
nucleon_require(util_dir, :
|
150
|
+
nucleon_require(util_dir, :console)
|
146
151
|
nucleon_require(core_dir, :core)
|
147
152
|
|
148
153
|
#---
|
@@ -157,7 +162,7 @@ nucleon_require(core_dir, :core)
|
|
157
162
|
nucleon_require(util_dir, name)
|
158
163
|
end
|
159
164
|
|
160
|
-
# Include
|
165
|
+
# Include plugin system
|
161
166
|
nucleon_require(core_dir, :facade)
|
162
167
|
nucleon_require(core_dir, :gems)
|
163
168
|
nucleon_require(core_dir, :manager)
|
@@ -165,8 +170,6 @@ nucleon_require(plugin_dir, :base)
|
|
165
170
|
nucleon_require(core_dir, :plugin)
|
166
171
|
|
167
172
|
#-------------------------------------------------------------------------------
|
168
|
-
#
|
173
|
+
# Nucleon initialization
|
169
174
|
|
170
|
-
|
171
|
-
VERSION = File.read(File.join(File.dirname(__FILE__), '..', 'VERSION'))
|
172
|
-
end
|
175
|
+
Nucleon.reload
|
data/locales/en.yml
CHANGED
@@ -25,7 +25,7 @@ en:
|
|
25
25
|
project:
|
26
26
|
options:
|
27
27
|
provider: |-
|
28
|
-
|
28
|
+
Nucleon plugin provider to use for this project (default %{default_value})
|
29
29
|
reference: |-
|
30
30
|
Project URL or reference string to set as primary remote (default %{default_value})
|
31
31
|
revision: |-
|
@@ -52,57 +52,6 @@ en:
|
|
52
52
|
Remote name to push to (default %{default_value})
|
53
53
|
revision: |-
|
54
54
|
Branch to push (default %{default_value})
|
55
|
-
node:
|
56
|
-
options:
|
57
|
-
parallel: |-
|
58
|
-
Enable parallelism of node action execution (default %{default_value})
|
59
|
-
net_provider: |-
|
60
|
-
Coral network provider to use for managing cloud nodes (default %{default_value})
|
61
|
-
node_provider: |-
|
62
|
-
Default to using a specific node provider but individual node references can override (default %{default_value})
|
63
|
-
nodes: |-
|
64
|
-
Optional nodes on which to execute this action
|
65
|
-
errors:
|
66
|
-
network_provider: |-
|
67
|
-
Network plugin provider %{value} is not loaded >> Pick from the following: %{choices}
|
68
|
-
node_provider: |-
|
69
|
-
Node plugin provider %{value} is not loaded >> Pick from the following: %{choices}
|
70
|
-
nodes: |-
|
71
|
-
Node reference %{value} failed to parse or provider %{provider} isn't loaded (%{name})
|
72
|
-
keypair:
|
73
|
-
options:
|
74
|
-
private_key: |-
|
75
|
-
Optional existing private SSH key to use for SSH communication (new keys are generated by default)
|
76
|
-
require_password: |-
|
77
|
-
Require and prompt for a password for generated keys (default %{default_value})
|
78
|
-
key_type: |-
|
79
|
-
Type of SSH key to generate (default %{default_value})
|
80
|
-
key_bits: |-
|
81
|
-
Strength of generated key encryption in bits (default %{default_value})
|
82
|
-
key_comment: |-
|
83
|
-
Optional key comment (attached at the end of the public key)
|
84
|
-
errors:
|
85
|
-
private_key_not_found: |-
|
86
|
-
Private key %{value} not found
|
87
|
-
private_key_parse_error: |-
|
88
|
-
Private key %{value} failed to parse and can not be accepted as a valid private SSH key
|
89
|
-
key_type: |-
|
90
|
-
SSH key type %{value} not supported >> Pick from the following: %{choices}
|
91
|
-
key_bits: |-
|
92
|
-
Encryption strength must be greater than %{required} bits (%{value} specified)
|
93
|
-
no_password: |-
|
94
|
-
Password verification of private key was terminated (verification required to use encrypted SSH keys)
|
95
|
-
exec:
|
96
|
-
help:
|
97
|
-
usage: |-
|
98
|
-
Usage
|
99
|
-
header: |-
|
100
|
-
Available actions
|
101
|
-
footer: |-
|
102
|
-
For help on any individual action run `coral <action> -h`
|
103
|
-
errors:
|
104
|
-
missing_argument: |-
|
105
|
-
Argument <%{name}> must be specified
|
106
55
|
actions:
|
107
56
|
extract:
|
108
57
|
options:
|
@@ -128,7 +77,7 @@ en:
|
|
128
77
|
add:
|
129
78
|
options:
|
130
79
|
sub_reference: |-
|
131
|
-
Repository URL of
|
80
|
+
Repository URL of Nucleon component (module or library) to include in the project
|
132
81
|
sub_path: |-
|
133
82
|
Subproject path
|
134
83
|
editable: |-
|
@@ -151,82 +100,4 @@ en:
|
|
151
100
|
files: |-
|
152
101
|
Optional space separated list of files to save
|
153
102
|
start: |-
|
154
|
-
Saving project changes with provider %{project_provider} (ref: %{reference} rev: %{revision})
|
155
|
-
images:
|
156
|
-
options:
|
157
|
-
match_case: |-
|
158
|
-
Match case on any search terms given when searching for images (default %{default_value})
|
159
|
-
require_all: |-
|
160
|
-
Require all search terms to be present in image descriptions to be included (default %{default_value})
|
161
|
-
provider: |-
|
162
|
-
Node provider to retrieve images for
|
163
|
-
search: |-
|
164
|
-
Optional array of search terms to filter image results
|
165
|
-
start: |-
|
166
|
-
Retrieving a list of defined images from %{node_provider}
|
167
|
-
results: |-
|
168
|
-
Total of %{images} images found
|
169
|
-
machines:
|
170
|
-
options:
|
171
|
-
node_provider: |-
|
172
|
-
Node provider to retrieve machine types
|
173
|
-
start: |-
|
174
|
-
Retrieving a list of available machines from %{node_provider}
|
175
|
-
results: |-
|
176
|
-
Total of %{machines} machine types found
|
177
|
-
spawn:
|
178
|
-
options:
|
179
|
-
parallel: |-
|
180
|
-
Enable or disable parallelism of node creation (default %{default_value})
|
181
|
-
seed: |-
|
182
|
-
Coral project reference with cloud project to seed new machines with (default %{default_value})
|
183
|
-
region: |-
|
184
|
-
Machine provider region in which to create the machines (defaults to first defined in provider)
|
185
|
-
machine_type: |-
|
186
|
-
Provider ID of machine type to create (defaults to first defined in provider - usually smallest)
|
187
|
-
provider: |-
|
188
|
-
Create machines with this node provider
|
189
|
-
image: |-
|
190
|
-
Provider ID of operating system image on which to initialize the new machines
|
191
|
-
hostnames: |-
|
192
|
-
Hostnames of machines to create on provider infrastructure
|
193
|
-
start: |-
|
194
|
-
Spawning new machines on %{provider}
|
195
|
-
bootstrap:
|
196
|
-
options:
|
197
|
-
bootstrap_path: |-
|
198
|
-
Bootstrap script top level local directory (default %{default_value})
|
199
|
-
bootstrap_init: |-
|
200
|
-
Gateway bootstrap script within the bootstrap project directory (default %{default_value})
|
201
|
-
bootstrap_glob: |-
|
202
|
-
Path glob to use in searching bootstrap scripts for remote execution (default %{default_value})
|
203
|
-
auth_files: |-
|
204
|
-
Any additional authorization or state files to pass to the node during bootstrap (relative to local home)
|
205
|
-
home_env_var: |-
|
206
|
-
Home directory environment variable on remote server (default %{default_value})
|
207
|
-
home: |-
|
208
|
-
Specified home directory on remote server (default %{default_value})
|
209
|
-
bootstrap_nodes: |-
|
210
|
-
Node references to bootstrap
|
211
|
-
errors:
|
212
|
-
bootstrap_path: |-
|
213
|
-
Bootstrap path must be an existing directory
|
214
|
-
auth_files: |-
|
215
|
-
Authorization file %{value} does not exist on the local system
|
216
|
-
bootstrap_nodes: |-
|
217
|
-
Provider %{node_provider} node %{name} is not a valid node to bootstrap (%{value} given)
|
218
|
-
start: |-
|
219
|
-
Starting bootstrap of machine %{hostname} (%{id})
|
220
|
-
success: |-
|
221
|
-
Machine %{hostname} (%{id}) successfully bootstrapped
|
222
|
-
exec:
|
223
|
-
options:
|
224
|
-
command: |-
|
225
|
-
Command line executable and arguments to execute on machine
|
226
|
-
seed:
|
227
|
-
options:
|
228
|
-
home: |-
|
229
|
-
Home directory in which to initialize the deploy SSH keys (default %default_value})
|
230
|
-
errors:
|
231
|
-
project_reference: |-
|
232
|
-
Project reference %{value} failed to parse or provider %{provider} isn't loaded >> Possible providers: %{choices}
|
103
|
+
Saving project changes with provider %{project_provider} (ref: %{reference} rev: %{revision})
|
data/nucleon.gemspec
CHANGED
@@ -5,13 +5,14 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "nucleon"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.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-02-
|
13
|
-
s.description = "
|
12
|
+
s.date = "2014-02-21"
|
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
|
+
s.executables = ["nucleon"]
|
15
16
|
s.extra_rdoc_files = [
|
16
17
|
"LICENSE.txt",
|
17
18
|
"README.rdoc"
|
@@ -24,11 +25,64 @@ Gem::Specification.new do |s|
|
|
24
25
|
"README.rdoc",
|
25
26
|
"Rakefile",
|
26
27
|
"VERSION",
|
28
|
+
"bin/nucleon",
|
29
|
+
"lib/core/codes.rb",
|
30
|
+
"lib/core/config.rb",
|
31
|
+
"lib/core/config/collection.rb",
|
32
|
+
"lib/core/config/options.rb",
|
33
|
+
"lib/core/core.rb",
|
34
|
+
"lib/core/errors.rb",
|
35
|
+
"lib/core/facade.rb",
|
36
|
+
"lib/core/gems.rb",
|
37
|
+
"lib/core/manager.rb",
|
38
|
+
"lib/core/mixin/action/commit.rb",
|
39
|
+
"lib/core/mixin/action/project.rb",
|
40
|
+
"lib/core/mixin/action/push.rb",
|
41
|
+
"lib/core/mixin/config/collection.rb",
|
42
|
+
"lib/core/mixin/config/options.rb",
|
43
|
+
"lib/core/mixin/macro/object_interface.rb",
|
44
|
+
"lib/core/mixin/macro/plugin_interface.rb",
|
45
|
+
"lib/core/mixin/settings.rb",
|
46
|
+
"lib/core/mixin/sub_config.rb",
|
47
|
+
"lib/core/mod/hash.rb",
|
48
|
+
"lib/core/plugin/action.rb",
|
49
|
+
"lib/core/plugin/base.rb",
|
50
|
+
"lib/core/plugin/command.rb",
|
51
|
+
"lib/core/plugin/event.rb",
|
52
|
+
"lib/core/plugin/extension.rb",
|
53
|
+
"lib/core/plugin/project.rb",
|
54
|
+
"lib/core/plugin/template.rb",
|
55
|
+
"lib/core/plugin/translator.rb",
|
56
|
+
"lib/core/util/cli.rb",
|
57
|
+
"lib/core/util/console.rb",
|
58
|
+
"lib/core/util/data.rb",
|
59
|
+
"lib/core/util/disk.rb",
|
60
|
+
"lib/core/util/git.rb",
|
61
|
+
"lib/core/util/liquid.rb",
|
62
|
+
"lib/core/util/logger.rb",
|
63
|
+
"lib/core/util/package.rb",
|
64
|
+
"lib/core/util/shell.rb",
|
27
65
|
"lib/nucleon.rb",
|
66
|
+
"lib/nucleon/action/add.rb",
|
67
|
+
"lib/nucleon/action/create.rb",
|
68
|
+
"lib/nucleon/action/extract.rb",
|
69
|
+
"lib/nucleon/action/remove.rb",
|
70
|
+
"lib/nucleon/action/save.rb",
|
71
|
+
"lib/nucleon/action/update.rb",
|
72
|
+
"lib/nucleon/command/bash.rb",
|
73
|
+
"lib/nucleon/event/regex.rb",
|
74
|
+
"lib/nucleon/project/git.rb",
|
75
|
+
"lib/nucleon/project/github.rb",
|
76
|
+
"lib/nucleon/template/json.rb",
|
77
|
+
"lib/nucleon/template/wrapper.rb",
|
78
|
+
"lib/nucleon/template/yaml.rb",
|
79
|
+
"lib/nucleon/translator/json.rb",
|
80
|
+
"lib/nucleon/translator/yaml.rb",
|
28
81
|
"locales/en.yml",
|
29
82
|
"nucleon.gemspec",
|
30
83
|
"spec/coral_mock_input.rb",
|
31
84
|
"spec/coral_test_kernel.rb",
|
85
|
+
"spec/core/util/console_spec.rb",
|
32
86
|
"spec/spec_helper.rb"
|
33
87
|
]
|
34
88
|
s.homepage = "http://github.com/coralnexus/nucleon"
|
@@ -46,18 +100,13 @@ Gem::Specification.new do |s|
|
|
46
100
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
47
101
|
s.add_runtime_dependency(%q<log4r>, ["~> 1.1"])
|
48
102
|
s.add_runtime_dependency(%q<i18n>, ["~> 0.6"])
|
103
|
+
s.add_runtime_dependency(%q<rgen>, ["~> 0.6"])
|
104
|
+
s.add_runtime_dependency(%q<netrc>, ["~> 0.7"])
|
49
105
|
s.add_runtime_dependency(%q<deep_merge>, ["~> 1.0"])
|
50
|
-
s.add_runtime_dependency(%q<celluloid>, ["~> 0.15"])
|
51
|
-
s.add_runtime_dependency(%q<sshkey>, ["~> 1.6"])
|
52
|
-
s.add_runtime_dependency(%q<hiera>, ["~> 1.3"])
|
53
106
|
s.add_runtime_dependency(%q<multi_json>, ["~> 1.7"])
|
54
107
|
s.add_runtime_dependency(%q<grit>, ["~> 2.5"])
|
55
108
|
s.add_runtime_dependency(%q<octokit>, ["~> 2.7"])
|
56
|
-
s.add_runtime_dependency(%q<
|
57
|
-
s.add_runtime_dependency(%q<fog>, ["~> 1.20"])
|
58
|
-
s.add_runtime_dependency(%q<rgen>, ["~> 0.6"])
|
59
|
-
s.add_runtime_dependency(%q<facter>, ["~> 1.7"])
|
60
|
-
s.add_runtime_dependency(%q<puppet>, ["~> 3.2"])
|
109
|
+
s.add_runtime_dependency(%q<celluloid>, ["~> 0.15"])
|
61
110
|
s.add_development_dependency(%q<bundler>, ["~> 1.2"])
|
62
111
|
s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
|
63
112
|
s.add_development_dependency(%q<rspec>, ["~> 2.10"])
|
@@ -66,18 +115,13 @@ Gem::Specification.new do |s|
|
|
66
115
|
else
|
67
116
|
s.add_dependency(%q<log4r>, ["~> 1.1"])
|
68
117
|
s.add_dependency(%q<i18n>, ["~> 0.6"])
|
118
|
+
s.add_dependency(%q<rgen>, ["~> 0.6"])
|
119
|
+
s.add_dependency(%q<netrc>, ["~> 0.7"])
|
69
120
|
s.add_dependency(%q<deep_merge>, ["~> 1.0"])
|
70
|
-
s.add_dependency(%q<celluloid>, ["~> 0.15"])
|
71
|
-
s.add_dependency(%q<sshkey>, ["~> 1.6"])
|
72
|
-
s.add_dependency(%q<hiera>, ["~> 1.3"])
|
73
121
|
s.add_dependency(%q<multi_json>, ["~> 1.7"])
|
74
122
|
s.add_dependency(%q<grit>, ["~> 2.5"])
|
75
123
|
s.add_dependency(%q<octokit>, ["~> 2.7"])
|
76
|
-
s.add_dependency(%q<
|
77
|
-
s.add_dependency(%q<fog>, ["~> 1.20"])
|
78
|
-
s.add_dependency(%q<rgen>, ["~> 0.6"])
|
79
|
-
s.add_dependency(%q<facter>, ["~> 1.7"])
|
80
|
-
s.add_dependency(%q<puppet>, ["~> 3.2"])
|
124
|
+
s.add_dependency(%q<celluloid>, ["~> 0.15"])
|
81
125
|
s.add_dependency(%q<bundler>, ["~> 1.2"])
|
82
126
|
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
83
127
|
s.add_dependency(%q<rspec>, ["~> 2.10"])
|
@@ -87,18 +131,13 @@ Gem::Specification.new do |s|
|
|
87
131
|
else
|
88
132
|
s.add_dependency(%q<log4r>, ["~> 1.1"])
|
89
133
|
s.add_dependency(%q<i18n>, ["~> 0.6"])
|
134
|
+
s.add_dependency(%q<rgen>, ["~> 0.6"])
|
135
|
+
s.add_dependency(%q<netrc>, ["~> 0.7"])
|
90
136
|
s.add_dependency(%q<deep_merge>, ["~> 1.0"])
|
91
|
-
s.add_dependency(%q<celluloid>, ["~> 0.15"])
|
92
|
-
s.add_dependency(%q<sshkey>, ["~> 1.6"])
|
93
|
-
s.add_dependency(%q<hiera>, ["~> 1.3"])
|
94
137
|
s.add_dependency(%q<multi_json>, ["~> 1.7"])
|
95
138
|
s.add_dependency(%q<grit>, ["~> 2.5"])
|
96
139
|
s.add_dependency(%q<octokit>, ["~> 2.7"])
|
97
|
-
s.add_dependency(%q<
|
98
|
-
s.add_dependency(%q<fog>, ["~> 1.20"])
|
99
|
-
s.add_dependency(%q<rgen>, ["~> 0.6"])
|
100
|
-
s.add_dependency(%q<facter>, ["~> 1.7"])
|
101
|
-
s.add_dependency(%q<puppet>, ["~> 3.2"])
|
140
|
+
s.add_dependency(%q<celluloid>, ["~> 0.15"])
|
102
141
|
s.add_dependency(%q<bundler>, ["~> 1.2"])
|
103
142
|
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
104
143
|
s.add_dependency(%q<rspec>, ["~> 2.10"])
|