Class: Albacore::NugetModel::Metadata
- Inherits:
-
Object
- Object
- Albacore::NugetModel::Metadata
show all
- Extended by:
- Logging
- Includes:
- Logging
- Defined in:
- lib/albacore/nuget_model.rb
Overview
the nuget xml metadata element writer
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Logging
debug, err, error, fatal, info, puts, trace, warn
Constructor Details
#initialize(dependencies = nil, framework_assemblies = nil) ⇒ Metadata
initialise a new package data object
122
123
124
125
126
127
128
129
130
|
# File 'lib/albacore/nuget_model.rb', line 122
def initialize dependencies = nil, framework_assemblies = nil
@set_fields = Set.new
@dependencies = dependencies || Hash.new
@framework_assemblies = framework_assemblies || Hash.new
@has_group = false
debug "creating new metadata with dependencies: #{dependencies} [nuget model: metadata]" unless dependencies.nil?
debug "creating new metadata (same as prev) with fw asms: #{framework_assemblies} [nuget model: metadata]" unless framework_assemblies.nil?
end
|
Instance Attribute Details
#set_fields ⇒ Object
gets the field symbols that have been set
119
120
121
|
# File 'lib/albacore/nuget_model.rb', line 119
def set_fields
@set_fields
end
|
Class Method Details
.from_xml(node) ⇒ Object
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
|
# File 'lib/albacore/nuget_model.rb', line 278
def self.from_xml node
m = Metadata.new
node.children.reject { |n| n.text? }.each do |n|
if n.name == 'dependencies'
n.children.reject { |n| n.text? }.each do |node|
if node.name == 'group'
node.children.reject { |n| n.text? }.each do |dep|
tfw = node['targetFramework'] || ''
m.add_dependency dep['id'], dep['version'], tfw, group=true
end
else
m.add_dependency node['id'], node['version'], group=false
end
end
elsif n.name == 'frameworkDependencies'
n.children.reject { |n| n.text? }.each do |node|
if node.name == 'group'
node.children.reject { |n| n.text? }.each do |dep|
tfw = node['targetFramework'] || ''
m.add_framework_dependency dep['id'], dep['version'], tfw, group=true
end
else
m.add_framework_dependency node['id'], node['version'], group=false
end
end
else
m.send(:"#{underscore n.name}=", n.inner_text)
end
end
m
end
|
.nuspec_field(*syms) ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/albacore/nuget_model.rb', line 43
def self.nuspec_field *syms
syms.each do |sym|
self.class_eval(
%{def #{sym}
@#{sym}
end})
self.class_eval(
%{def #{sym}= val
@#{sym} = val
@set_fields.add? :#{sym}
end})
end
end
|
.pascal_case(str) ⇒ Object
311
312
313
314
315
|
# File 'lib/albacore/nuget_model.rb', line 311
def self.pascal_case str
str = str.to_s unless str.respond_to? :split
str = str.split('_').inject([]){ |buffer,e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
:"#{str}"
end
|
.underscore(str) ⇒ Object
317
318
319
320
321
322
323
|
# File 'lib/albacore/nuget_model.rb', line 317
def self.underscore str
str.gsub(/::/, '/').
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
gsub(/([a-z\d])([A-Z])/,'\1_\2').
tr("-", "_").
downcase
end
|
Instance Method Details
#add_dependency(id, version, target_framework = '', group = true) ⇒ Object
add a dependency to the package; id and version
133
134
135
136
137
138
|
# File 'lib/albacore/nuget_model.rb', line 133
def add_dependency id, version, target_framework = '', group = true
guard_groups_or_not group
= (target_framework || '') == '' ? '' : "|#{target_framework}"
@has_group ||= group
@dependencies["#{id}#{}"] = IdVersion.new id, version, group, target_framework
end
|
#add_framework_dependency(id, version, target_framework = '', group = true) ⇒ Object
add a framework dependency for the package
141
142
143
144
145
|
# File 'lib/albacore/nuget_model.rb', line 141
def add_framework_dependency id, version, target_framework = '', group = true
guard_groups_or_not group
@has_group ||= group
@framework_assemblies[id] = IdVersion.new id, version, group, target_framework
end
|
#merge_with(other) ⇒ Object
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
|
# File 'lib/albacore/nuget_model.rb', line 246
def merge_with other
raise ArgumentError, 'other is nil' if other.nil?
raise ArgumentError, 'other is wrong type' unless other.is_a? Metadata
trace { "#{self} merging with #{other} [nuget model: metadata]" }
deps = @dependencies.clone.merge(other.dependencies)
fw_asms = @framework_assemblies.clone.merge(other.framework_assemblies)
m_next = Metadata.new deps, fw_asms
@set_fields.each do |field|
debug "setting field '#{field}' to be '#{send(field)}' [nuget model: metadata]"
m_next.send(:"#{field}=", send(field))
end
other.set_fields.each do |field|
debug "setting field '#{field}' to be '#{send(field)}' [nuget model: metadata]"
m_next.send(:"#{field}=", other.send(field))
end
m_next
end
|
#to_s ⇒ Object
272
273
274
|
# File 'lib/albacore/nuget_model.rb', line 272
def to_s
"NugetModel::Metadata(#{ @set_fields.map { |f| "#{f}=#{send(f)}" }.join(', ') })"
end
|
#to_template ⇒ Object
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
# File 'lib/albacore/nuget_model.rb', line 147
def to_template
lines = []
lines << 'type file'
@set_fields.each do |f|
key, value = Metadata.pascal_case(f), send(f)
if value.is_a?(Array)
lines << "#{key}"
value.map{ |line| " #{line}" }.each do |line|
lines << line
end
else
lines << "#{key} #{value}"
end
end
lines << 'dependencies' unless @dependencies.empty?
if @has_group
groups = @dependencies.group_by { |k, d| d.target_framework }
groups.each do |group|
fw, deps = group
if fw == ''
deps.each do |k, d|
lines << " #{d.id} ~> #{d.version}"
end
else
lines << " framework: #{fw}"
deps.each do |k, d|
lines << " #{d.id} ~> #{d.version}"
end
end
end
else
@dependencies.each do |k, d|
lines << " #{d.id} ~> #{d.version}"
end
end
if @framework_assemblies.respond_to?(:each) && @framework_assemblies.length > 0
lines << 'frameworkAssemblies'
@framework_assemblies.each do |k, d|
lines << " #{d.id}"
end
end
lines
end
|
#to_xml ⇒ Object
transform the data structure to the corresponding xml
242
243
244
|
# File 'lib/albacore/nuget_model.rb', line 242
def to_xml
to_xml_builder.to_xml
end
|
#to_xml_builder ⇒ Object
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
|
# File 'lib/albacore/nuget_model.rb', line 196
def to_xml_builder
Nokogiri::XML::Builder.new do |x|
x.metadata do
@set_fields.each do |f|
x.send(Metadata.pascal_case(f), send(f))
end
x.dependencies do
if @has_group
groups = @dependencies.group_by { |k, d| d.target_framework }
groups.each do |group|
fw, deps = group
if fw == ''
x.group do
deps.each do |k, d|
x.dependency id: d.id, version: d.version
end
end
else
x.group(targetFramework: fw) do
deps.each do |k, d|
x.dependency id: d.id, version: d.version
end
end
end
end
else
@dependencies.each do |k, d|
x.dependency id: d.id, version: d.version
end
end
end
if @framework_assemblies.respond_to?(:each) && @framework_assemblies.length > 0
x.frameworkAssemblies do
@framework_assemblies.each do |k, d|
x.frameworkAssembly assemblyName: d.id, targetFramework: d.version
end
end
end
end
end
end
|