cfhighlander 0.2.1.alpha.27 → 0.2.1.alpha.29
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/cfhighlander.rb +6 -6
- data/lib/highlander.dsl.component.rb +7 -6
- data/lib/highlander.dsl.rb +19 -11
- data/lib/highlander.factory.rb +75 -71
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 243c9e2f57eb637952b598302942a48d166a3189e0a4a7698d918224cd3193ce
|
4
|
+
data.tar.gz: d20c212d3b8a47a6f64e530ec412644a49f5c6ea3d0c93e506b7aa87cc6347f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afbb5e1be2f09e04e577f335a6f3e1155a7ef1688064966253b594199cbe48491e7fb5d49c8efcc9780b736471f51d290b2c510b1718efc3f40f479b94e16648
|
7
|
+
data.tar.gz: 23d771ecf5399a83d25bfd77f3ac3d1c6d5d0989f1f455d54c23a0f04b11015726446f38b1e0645339465735efdfe09d2ccb5cefae9a7f63817598aa56af33d7
|
data/bin/cfhighlander.rb
CHANGED
@@ -22,11 +22,11 @@ class HighlanderCli < Thor
|
|
22
22
|
|
23
23
|
desc 'configcompile component[@version]', 'Compile Highlander components configuration'
|
24
24
|
|
25
|
-
def configcompile(
|
25
|
+
def configcompile(template_name)
|
26
26
|
|
27
27
|
# find and load component
|
28
28
|
component_loader = Highlander::Factory::ComponentFactory.new
|
29
|
-
component = component_loader.
|
29
|
+
component = component_loader.loadComponentFromTemplate(template_name)
|
30
30
|
component.load
|
31
31
|
|
32
32
|
# compile cfndsl template
|
@@ -117,14 +117,14 @@ class HighlanderCli < Thor
|
|
117
117
|
method_option :version, :type => :string, :required => false, :default => nil, :aliases => '-v',
|
118
118
|
:desc => 'Distribution component version, defaults to latest'
|
119
119
|
|
120
|
-
def publish(
|
120
|
+
def publish(template_name)
|
121
121
|
component_version = options[:version]
|
122
122
|
distribution_bucket = options[:dstbucket]
|
123
123
|
distribution_prefix = options[:dstprefix]
|
124
124
|
|
125
125
|
# find and load component
|
126
126
|
component_loader = Highlander::Factory::ComponentFactory.new
|
127
|
-
component = component_loader.
|
127
|
+
component = component_loader.loadComponentFromTemplate(template_name)
|
128
128
|
component.version = component_version
|
129
129
|
component.distribution_bucket = distribution_bucket unless distribution_bucket.nil?
|
130
130
|
component.distribution_prefix = distribution_prefix unless distribution_prefix.nil?
|
@@ -137,7 +137,7 @@ class HighlanderCli < Thor
|
|
137
137
|
end
|
138
138
|
|
139
139
|
# build component from passed cli options
|
140
|
-
def build_component(options,
|
140
|
+
def build_component(options, template_name)
|
141
141
|
|
142
142
|
component_version = options[:version]
|
143
143
|
distribution_bucket = options[:dstbucket]
|
@@ -145,7 +145,7 @@ def build_component(options, component_name)
|
|
145
145
|
|
146
146
|
# find and load component
|
147
147
|
component_loader = Highlander::Factory::ComponentFactory.new
|
148
|
-
component = component_loader.
|
148
|
+
component = component_loader.loadComponentFromTemplate(template_name)
|
149
149
|
component.version = component_version unless component_version.nil?
|
150
150
|
component.distribution_bucket = distribution_bucket unless distribution_bucket.nil?
|
151
151
|
component.distribution_prefix = distribution_prefix unless distribution_prefix.nil?
|
@@ -66,9 +66,10 @@ module Highlander
|
|
66
66
|
|
67
67
|
# load component
|
68
68
|
factory = Highlander::Factory::ComponentFactory.new(@component_sources)
|
69
|
-
@component_loaded = factory.
|
69
|
+
@component_loaded = factory.loadComponentFromTemplate(
|
70
70
|
@template,
|
71
|
-
@template_version
|
71
|
+
@template_version,
|
72
|
+
@name
|
72
73
|
)
|
73
74
|
@component_loaded.config.extend @config
|
74
75
|
|
@@ -176,7 +177,7 @@ module Highlander
|
|
176
177
|
key_name = nil
|
177
178
|
|
178
179
|
# priority 0: stack-level parameter of map name
|
179
|
-
stack_param_mapname = component.parameters.param_list.find {
|
180
|
+
stack_param_mapname = component.parameters.param_list.find {|p| p.name == mappings_name}
|
180
181
|
unless stack_param_mapname.nil?
|
181
182
|
key_name = "Ref('#{mappings_name}')"
|
182
183
|
end
|
@@ -195,7 +196,7 @@ module Highlander
|
|
195
196
|
# could still be nil after this line
|
196
197
|
end
|
197
198
|
|
198
|
-
value =
|
199
|
+
value = mapping_value(component: component,
|
199
200
|
provider_name: mappings_name,
|
200
201
|
value_name: param.mapAttribute,
|
201
202
|
key_name: key_name
|
@@ -223,10 +224,10 @@ module Highlander
|
|
223
224
|
|
224
225
|
if resource_name.nil?
|
225
226
|
# find by component
|
226
|
-
resource = component.components.find {
|
227
|
+
resource = component.components.find {|c| c.name == component_name}
|
227
228
|
resource_name = resource.name unless resource.nil?
|
228
229
|
if resource_name.nil?
|
229
|
-
resource = component.components.find {
|
230
|
+
resource = component.components.find {|c| c.template == component_name}
|
230
231
|
resource_name = resource.name unless resource.nil?
|
231
232
|
end
|
232
233
|
end
|
data/lib/highlander.dsl.rb
CHANGED
@@ -54,8 +54,12 @@ module Highlander
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def Name(name)
|
57
|
-
|
58
|
-
|
57
|
+
# nested components always have their name dictated by parent
|
58
|
+
# component, defaulting to template name
|
59
|
+
if (not @config.key? 'nested_component')
|
60
|
+
@name = name
|
61
|
+
@config['component_name'] = name
|
62
|
+
end
|
59
63
|
end
|
60
64
|
|
61
65
|
def Description(description)
|
@@ -78,7 +82,7 @@ module Highlander
|
|
78
82
|
end
|
79
83
|
|
80
84
|
|
81
|
-
def Component(
|
85
|
+
def Component(template:, name: template, param_values: {}, config: {}, export_config: {}, &block)
|
82
86
|
puts "Initialize #{name} with template #{template}"
|
83
87
|
|
84
88
|
# load component
|
@@ -147,7 +151,7 @@ module Highlander
|
|
147
151
|
def loadComponents()
|
148
152
|
|
149
153
|
# empty config overrides to start with
|
150
|
-
@config_overrides = Hash[@components.collect { |c| [c.name, {}] }]
|
154
|
+
@config_overrides = Hash[@components.collect { |c| [c.name, {'nested_component' => true}] }]
|
151
155
|
@named_components = Hash[@components.collect { |c| [c.name, c] }]
|
152
156
|
|
153
157
|
# populate overrides with master config defined overrides
|
@@ -257,7 +261,11 @@ module Highlander
|
|
257
261
|
if (@config.key? 'components')
|
258
262
|
@config['components'].each { |component_name, component_config|
|
259
263
|
if component_config.key?('config')
|
260
|
-
@config_overrides
|
264
|
+
if @config_overrides.key? component_name
|
265
|
+
@config_overrides[component_name].extend(component_config['config'])
|
266
|
+
else
|
267
|
+
STDERR.puts("WARN: Overriding config for non-existing component #{component_name}")
|
268
|
+
end
|
261
269
|
end
|
262
270
|
}
|
263
271
|
end
|
@@ -368,9 +376,9 @@ module Highlander
|
|
368
376
|
build_distribution_url
|
369
377
|
end
|
370
378
|
|
371
|
-
def name=(value)
|
372
|
-
|
373
|
-
end
|
379
|
+
# def name=(value)
|
380
|
+
# self.Name(value)
|
381
|
+
# end
|
374
382
|
|
375
383
|
def build_distribution_url
|
376
384
|
if not (@distribution_bucket.nil? or @distribution_prefix.nil?)
|
@@ -406,6 +414,7 @@ def HighlanderComponent(&block)
|
|
406
414
|
|
407
415
|
unless @version.nil?
|
408
416
|
instance.version = @version
|
417
|
+
instance.config['component_version'] = @version
|
409
418
|
end
|
410
419
|
|
411
420
|
unless @distribution_bucket.nil?
|
@@ -415,10 +424,9 @@ def HighlanderComponent(&block)
|
|
415
424
|
instance.DistributionPrefix(@distribution_prefix)
|
416
425
|
end
|
417
426
|
|
427
|
+
instance.name = @template
|
418
428
|
instance.instance_eval(&block)
|
419
|
-
|
420
|
-
instance.name = @name
|
421
|
-
end
|
429
|
+
|
422
430
|
|
423
431
|
# load sub-components
|
424
432
|
instance.loadComponents
|
data/lib/highlander.factory.rb
CHANGED
@@ -18,6 +18,7 @@ module Highlander
|
|
18
18
|
:cfndsl_content,
|
19
19
|
:mappings,
|
20
20
|
:name,
|
21
|
+
:template,
|
21
22
|
:version,
|
22
23
|
:distribution_bucket,
|
23
24
|
:distribution_prefix,
|
@@ -25,11 +26,14 @@ module Highlander
|
|
25
26
|
:cfndsl_ext_files,
|
26
27
|
:lambda_src_files
|
27
28
|
|
28
|
-
def initialize(
|
29
|
+
def initialize(component_template_name,
|
30
|
+
component_template_version,
|
31
|
+
component_name, component_dir)
|
32
|
+
@template = component_template_name
|
29
33
|
@name = component_name
|
30
34
|
@component_dir = component_dir
|
31
35
|
@mappings = {}
|
32
|
-
@version =
|
36
|
+
@version = component_template_version
|
33
37
|
@distribution_bucket = nil
|
34
38
|
@distribution_prefix = nil
|
35
39
|
@component_files = []
|
@@ -65,11 +69,10 @@ module Highlander
|
|
65
69
|
end
|
66
70
|
|
67
71
|
|
68
|
-
@highlander_dsl_path = "#{@component_dir}/#{@
|
69
|
-
@cfndsl_path = "#{@component_dir}/#{@
|
70
|
-
candidate_config_path = "#{@component_dir}/#{@name}.config.yaml"
|
72
|
+
@highlander_dsl_path = "#{@component_dir}/#{@template}.highlander.rb"
|
73
|
+
@cfndsl_path = "#{@component_dir}/#{@template}.cfndsl.rb"
|
71
74
|
candidate_mappings_path = "#{@component_dir}/*.mappings.yaml"
|
72
|
-
candidate_dynamic_mappings_path = "#{@component_dir}/#{@
|
75
|
+
candidate_dynamic_mappings_path = "#{@component_dir}/#{@template}.mappings.rb"
|
73
76
|
|
74
77
|
@cfndsl_ext_files += Dir["#{@component_dir}/ext/cfndsl/*.rb"]
|
75
78
|
@lambda_src_files += Dir["#{@component_dir}/lambdas/**/*"].find_all {|p| not File.directory? p}
|
@@ -80,6 +83,7 @@ module Highlander
|
|
80
83
|
|
81
84
|
@config.extend config_override unless config_override.nil?
|
82
85
|
@config['component_version'] = @version unless @version.nil?
|
86
|
+
@config['component_name'] = @name
|
83
87
|
# allow override of components
|
84
88
|
# config_override.each do |key, value|
|
85
89
|
# @config[key] = value
|
@@ -101,17 +105,10 @@ module Highlander
|
|
101
105
|
# 1st pass - parse the file
|
102
106
|
@component_files << @highlander_dsl_path
|
103
107
|
@highlander_dsl = eval(File.read(@highlander_dsl_path), binding)
|
104
|
-
|
105
108
|
# set version if not defined
|
106
109
|
@highlander_dsl.ComponentVersion(@version) unless @version.nil?
|
107
110
|
|
108
111
|
|
109
|
-
# Handle name and description defaults if they are not specified
|
110
|
-
# in template itself
|
111
|
-
if @highlander_dsl.name.nil?
|
112
|
-
@highlander_dsl.name = @name
|
113
|
-
end
|
114
|
-
|
115
112
|
if @highlander_dsl.description.nil?
|
116
113
|
@highlander_dsl.Description("#{@highlander_dsl.name} - #{@highlander_dsl.version}")
|
117
114
|
end
|
@@ -160,46 +157,46 @@ module Highlander
|
|
160
157
|
@component_sources = component_sources
|
161
158
|
end
|
162
159
|
|
163
|
-
def
|
160
|
+
def findTemplateDefault(template_name, component_version)
|
164
161
|
default_lookup_url = 'https://github.com/theonestack'
|
165
162
|
default_lookup_url = ENV['HIGHLANDER_DEFAULT_COMPONENT_GIT_LOOKUP'] if ENV.key? 'HIGHLANDER_DEFAULT_COMPONENT_GIT_LOOKUP'
|
166
163
|
|
167
|
-
git_url = "#{default_lookup_url}/hl-component-#{
|
164
|
+
git_url = "#{default_lookup_url}/hl-component-#{template_name}"
|
168
165
|
|
169
166
|
if component_version.nil? or component_version.empty? or component_version == 'latest'
|
170
167
|
branch = 'master'
|
171
168
|
else
|
172
169
|
branch = component_version
|
173
170
|
end
|
174
|
-
local_path = "#{LOCAL_HIGHLANDER_CACHE_LOCATION}/#{
|
175
|
-
return
|
171
|
+
local_path = "#{LOCAL_HIGHLANDER_CACHE_LOCATION}/#{template_name}/#{component_version}"
|
172
|
+
return findTemplateGit(local_path, template_name, component_version, git_url, branch)
|
176
173
|
|
177
174
|
end
|
178
175
|
|
179
|
-
def
|
176
|
+
def findTemplateGit(cache_path, component_name, component_version, git_url, branch)
|
180
177
|
begin
|
181
|
-
|
178
|
+
cache_path = "#{cache_path}/" unless cache_path.end_with? '/'
|
182
179
|
# if this is snapshot, clean local cache
|
183
180
|
if branch.end_with? '.snapshot'
|
184
181
|
branch = branch.gsub('.snapshot', '')
|
185
|
-
FileUtils.rmtree
|
182
|
+
FileUtils.rmtree cache_path if File.exist? cache_path and File.directory? cache_path
|
186
183
|
end
|
187
184
|
|
188
185
|
# if local cache exists, return from cache
|
189
|
-
if not Dir.glob("#{
|
186
|
+
if not Dir.glob("#{cache_path}*.highlander.rb").empty?
|
190
187
|
# if cache exists, just return from cache
|
191
|
-
component_name = Dir.glob("#{
|
192
|
-
return component_name,
|
188
|
+
component_name = Dir.glob("#{cache_path}*.highlander.rb")[0].gsub(cache_path, '').gsub('.highlander.rb', '')
|
189
|
+
return component_name, cache_path
|
193
190
|
end
|
194
191
|
|
195
192
|
# shallow clone
|
196
193
|
puts "Trying to load #{component_name}/#{component_version} from #{git_url}##{branch} ... "
|
197
194
|
clone_opts = { depth: 1 }
|
198
195
|
clone_opts[:branch] = branch if not (branch.nil? or branch.empty?)
|
199
|
-
Git.clone git_url,
|
200
|
-
puts "\t .. cached in #{
|
196
|
+
Git.clone git_url, cache_path, clone_opts
|
197
|
+
puts "\t .. cached in #{cache_path}\n"
|
201
198
|
# return from cache once it's cloned
|
202
|
-
return
|
199
|
+
return findTemplateGit(cache_path, component_name, component_version, git_url, branch)
|
203
200
|
rescue Exception => e
|
204
201
|
STDERR.puts "Failed to resolve component #{component_name}@#{component_version} from #{git_url}"
|
205
202
|
STDERR.puts e
|
@@ -207,7 +204,7 @@ module Highlander
|
|
207
204
|
end
|
208
205
|
end
|
209
206
|
|
210
|
-
def
|
207
|
+
def findTemplateS3(s3_location, component_name, component_version)
|
211
208
|
parts = s3_location.split('/')
|
212
209
|
bucket = parts[2]
|
213
210
|
prefix = parts[3]
|
@@ -243,42 +240,44 @@ module Highlander
|
|
243
240
|
end
|
244
241
|
end
|
245
242
|
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
243
|
+
# will try and locate template based on git template location
|
244
|
+
# if template location is not git repo, returns nil
|
245
|
+
def tryFindTemplateGit(template_location, template_version)
|
246
|
+
if template_location.include? '#'
|
247
|
+
parts = template_location.split('#')
|
248
|
+
template_location = parts[0]
|
249
|
+
template_version = parts[1]
|
251
250
|
end
|
252
251
|
|
253
252
|
# avoid any nres
|
254
|
-
|
253
|
+
template_version = '' if template_version.nil?
|
255
254
|
|
256
255
|
# if empty or latest branch is empty
|
257
|
-
if
|
256
|
+
if template_version.empty? or template_version == 'latest' or template_version == 'latest.snapshot'
|
258
257
|
branch = ''
|
259
258
|
else
|
260
259
|
# otherwise component version is actual branch
|
261
|
-
branch =
|
260
|
+
branch = template_version
|
262
261
|
end
|
263
262
|
|
264
263
|
|
265
264
|
git_url = nil
|
266
|
-
if
|
267
|
-
git_url =
|
268
|
-
elsif
|
269
|
-
git_url = "https://github.com/#{
|
270
|
-
elsif
|
271
|
-
git_url = "https://github.com/#{
|
265
|
+
if template_location.start_with? 'git:'
|
266
|
+
git_url = template_location.gsub('git:', '')
|
267
|
+
elsif template_location.start_with? 'github:'
|
268
|
+
git_url = "https://github.com/#{template_location.gsub('github:', '')}"
|
269
|
+
elsif template_location.start_with? 'github.com:'
|
270
|
+
git_url = "https://github.com/#{template_location.gsub('github.com:', '')}"
|
272
271
|
end
|
273
272
|
|
274
|
-
local_path = "#{LOCAL_HIGHLANDER_CACHE_LOCATION}/#{
|
273
|
+
local_path = "#{LOCAL_HIGHLANDER_CACHE_LOCATION}/#{template_location}/#{template_version}"
|
275
274
|
|
276
275
|
if not git_url.nil?
|
277
|
-
|
276
|
+
template_name, location = findTemplateGit(local_path, template_location, template_version, git_url, branch)
|
278
277
|
if location.nil?
|
279
|
-
raise "Could not resolve component #{
|
278
|
+
raise "Could not resolve component #{template_location}@#{template_version}"
|
280
279
|
else
|
281
|
-
return
|
280
|
+
return template_name, template_version, location
|
282
281
|
end
|
283
282
|
end
|
284
283
|
|
@@ -287,69 +286,74 @@ module Highlander
|
|
287
286
|
|
288
287
|
# Find component and given list of sources
|
289
288
|
# @return [Highlander::Factory::Component]
|
290
|
-
def
|
289
|
+
def loadComponentFromTemplate(template_name, template_version = nil, component_name = nil)
|
291
290
|
|
292
|
-
component_version_s =
|
293
|
-
|
291
|
+
component_version_s = template_version.nil? ? 'latest' : template_version
|
292
|
+
template_version = nil if template_version == 'latest'
|
293
|
+
component_name = template_name if component_name.nil?
|
294
294
|
|
295
|
-
if
|
296
|
-
parts =
|
297
|
-
|
298
|
-
|
295
|
+
if template_name.include? '@' and (not template_name.start_with? 'git')
|
296
|
+
parts = template_name.split('@')
|
297
|
+
template_name = parts[0]
|
298
|
+
template_version = parts[1]
|
299
|
+
component_version_s = template_version
|
299
300
|
end
|
300
301
|
|
301
302
|
# if component specified as git location
|
302
|
-
|
303
|
-
return
|
303
|
+
new_template_name, new_version, candidate_git = tryFindTemplateGit(template_name, component_version_s)
|
304
|
+
return buildComponentFromLocation(new_template_name, new_version, component_name, candidate_git) unless candidate_git.nil?
|
304
305
|
|
305
306
|
# if not git but has .snapshot lookup in default
|
306
|
-
if (not
|
307
|
-
|
308
|
-
return
|
307
|
+
if (not template_version.nil?) and template_version.end_with? '.snapshot'
|
308
|
+
new_template_name, default_candidate = findTemplateDefault(template_name, component_version_s)
|
309
|
+
return buildComponentFromLocation(new_template_name, template_version, component_name, default_candidate) unless default_candidate.nil?
|
309
310
|
end
|
310
311
|
|
311
312
|
# try in all of the component source
|
312
313
|
@component_sources.each do |source|
|
313
|
-
component_full_name = "#{
|
314
|
+
component_full_name = "#{template_name}@#{template_version.nil? ? 'latest' : template_version}"
|
314
315
|
# TODO handle http(s) sources and their download to local
|
315
316
|
if source.start_with?('http')
|
316
317
|
raise StandardError, 'http(s) sources not supported yet'
|
317
318
|
elsif source.start_with?('s3://')
|
318
319
|
# s3 candidate
|
319
320
|
|
320
|
-
s3_candidate =
|
321
|
+
s3_candidate = findTemplateS3(source, template_name, component_version_s)
|
321
322
|
if not s3_candidate.nil?
|
322
323
|
# at this point all component files are download to local file system and consumed from there
|
323
|
-
return
|
324
|
+
return buildComponentFromLocation(template_name, template_version, component_name, s3_candidate)
|
324
325
|
end
|
325
326
|
|
326
327
|
else
|
327
328
|
# file system candidate
|
328
|
-
candidate = "#{source}/#{
|
329
|
-
candidate = "#{candidate}/#{
|
330
|
-
candidate_hl_path = "#{candidate}/#{
|
331
|
-
candidate2_hl_path = "#{source}/#{
|
329
|
+
candidate = "#{source}/#{template_name}"
|
330
|
+
candidate = "#{candidate}/#{template_version}" unless template_version.nil?
|
331
|
+
candidate_hl_path = "#{candidate}/#{template_name}.highlander.rb"
|
332
|
+
candidate2_hl_path = "#{source}/#{template_name}.highlander.rb"
|
332
333
|
puts "Trying to load #{component_full_name} from #{candidate} ... "
|
333
334
|
if File.exist?(candidate_hl_path)
|
334
|
-
return
|
335
|
+
return buildComponentFromLocation(template_name, template_version, component_name, candidate)
|
335
336
|
end
|
336
337
|
puts "Trying to load #{component_full_name} from #{source} ... "
|
337
338
|
if File.exist?(candidate2_hl_path)
|
338
|
-
return
|
339
|
+
return buildComponentFromLocation(template_name, template_version, component_name, source)
|
339
340
|
end unless component_version_s != 'latest'
|
340
341
|
end
|
341
342
|
end
|
342
343
|
|
343
344
|
# try default component source on github
|
344
|
-
|
345
|
-
return
|
345
|
+
template_name, default_candidate = findTemplateDefault(template_name, component_version_s)
|
346
|
+
return buildComponentFromLocation(template_name, template_version, component_name, default_candidate) unless default_candidate.nil?
|
346
347
|
|
347
|
-
raise StandardError, "highlander template #{
|
348
|
+
raise StandardError, "highlander template #{template_name}@#{component_version_s} not located" +
|
348
349
|
" in sources #{@component_sources}"
|
349
350
|
end
|
350
351
|
|
351
|
-
def
|
352
|
-
|
352
|
+
def buildComponentFromLocation(template_name,
|
353
|
+
template_version,
|
354
|
+
component_name,
|
355
|
+
template_location)
|
356
|
+
component = Component.new(template_name, template_version, component_name, template_location)
|
353
357
|
component.load_config
|
354
358
|
return component
|
355
359
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfhighlander
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.1.alpha.
|
4
|
+
version: 0.2.1.alpha.29
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikola Tosic
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-06-
|
12
|
+
date: 2018-06-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: highline
|