nucleon 0.1.0 → 0.1.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.
- 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"])
|