iron_hammer 1.0.7 → 1.0.8

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/Rakefile CHANGED
@@ -14,7 +14,7 @@ $hoe = Hoe.spec 'iron_hammer' do
14
14
  self.rubyforge_name = self.name
15
15
  self.extra_deps = [['rubyzip2','>= 2.0.1'],
16
16
  ['builder', '>= 2.1.2']]
17
- self.version = '1.0.7'
17
+ self.version = '1.0.8'
18
18
  end
19
19
 
20
20
  require 'newgem/tasks'
@@ -4,11 +4,13 @@ module IronHammer
4
4
  attr_accessor :name
5
5
  attr_accessor :version
6
6
  attr_accessor :extension
7
+ attr_accessor :specific
7
8
 
8
9
  def initialize params = {}
9
10
  @name = params[:name] || raise(ArgumentError.new('you must specify a name'))
10
11
  @version = params[:version]
11
12
  @extension = params[:extension] || 'dll'
13
+ @specific = params[:specific] || false
12
14
  end
13
15
 
14
16
  def == other
@@ -26,7 +28,9 @@ module IronHammer
26
28
  version = match[1] if match
27
29
  raise "Cannot parse version on include: #{includes}" unless version
28
30
  extension = get_extension reference
29
- Dependency.new :name => name, :version => version, :extension => extension
31
+ specific_el = reference.elements['SpecificVersion']
32
+ specific = (specific_el && specific_el.text == 'true') || false
33
+ Dependency.new :name => name, :version => version, :extension => extension, :specific => specific
30
34
  end
31
35
 
32
36
  def self.from_project project
@@ -66,6 +66,7 @@ namespace :iron do
66
66
 
67
67
  builder.modify_csproj
68
68
  end
69
+ IvyBuilder.rename_artifacts
69
70
  end
70
71
 
71
72
  desc 'Publishes project assemblies to ivy repository (only dll projects)'
@@ -38,7 +38,8 @@ module IronHammer
38
38
 
39
39
  xml.dependencies do
40
40
  dependencies.each do |dependency|
41
- rev = dependency.version.gsub VERSION_PATTERN, VERSION_REPLACE[@config.retrieve_version]
41
+ rev = dependency.version
42
+ rev = rev.gsub VERSION_PATTERN, VERSION_REPLACE[@config.retrieve_version] unless dependency.specific
42
43
  xml.dependency :org => @config.organisation, :name => dependency.name, :rev => rev do
43
44
  xml.artifact :type => dependency.extension, :name => dependency.name
44
45
  end
@@ -51,7 +52,7 @@ module IronHammer
51
52
  "java -jar #{@config.ivy_jar}
52
53
  -ivy #{ivy_file}
53
54
  -settings #{@config.ivy_settings}
54
- -retrieve Libraries/[revision]/[artifact].[ext]".gsub(/\s+/, ' ')
55
+ -retrieve Libraries/[artifact]-[revision].[ext]".gsub(/\s+/, ' ')
55
56
  end
56
57
 
57
58
  def publish ivy_file
@@ -74,19 +75,29 @@ module IronHammer
74
75
  references = doc.get_elements(ProjectFile::REFERENCE_PATH)
75
76
  references.each do |reference|
76
77
  artifact = artifact_for reference
77
- artifact.scan(/Libraries\/(.*)\/(.*)/) do |version, extension|
78
+ artifact.scan(/Libraries\/(.*)-([\d\.]*)\.(.*)/) do |name, version, extension|
78
79
  includes = reference.attribute('Include').value
79
80
  includes.gsub!(/Version=(.*?)(,|$)/, "Version=#{version}\\2")
80
81
  reference.add_attribute('Include', includes)
82
+
83
+ artifact = "Libraries\\#{name}.#{extension}"
81
84
  end
82
85
  reference.elements['SpecificVersion'] = REXML::Element.new('SpecificVersion').add_text('false')
83
86
  reference.elements['HintPath'] = REXML::Element.new('HintPath').
84
- add_text([relative, "#{artifact.gsub(/\//, '\\')}"].flatten.patheticalize)
87
+ add_text([relative, "#{artifact}"].flatten.patheticalize)
85
88
  end
86
89
 
87
90
  FileSystem.write! :path => @project.path, :name => @project.csproj, :content => doc.to_s
88
91
  end
89
92
 
93
+ def self.rename_artifacts
94
+ Dir["Libraries/*.{dll,exe}"].each do |file|
95
+ file.scan(/Libraries\/(.*)-([\d\.]*)\.(.*)/) do |name, version, extension|
96
+ FileUtils.mv(file, "Libraries\\#{name}.#{extension}")
97
+ end
98
+ end
99
+ end
100
+
90
101
  def relative
91
102
  ['..'] * @project.path.split(/\/|\\/).size
92
103
  end
@@ -94,7 +105,10 @@ module IronHammer
94
105
  private
95
106
  def artifact_for reference
96
107
  dependency = Dependency.from_reference reference
97
- Dir["Libraries/**/#{dependency.name}.{dll,exe}"].last
108
+ pattern = "Libraries/#{dependency.name}-*.{dll,exe}"
109
+ files = Dir[pattern]
110
+ raise "No file found with name like: #{pattern}" if files.empty?
111
+ files.last
98
112
  end
99
113
  end
100
114
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iron_hammer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mozair Alves do Carmo Junior
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-02-19 00:00:00 -02:00
13
+ date: 2010-02-22 00:00:00 -03:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency