iron_hammer 1.0.5 → 1.0.6

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.5'
17
+ self.version = '1.0.6'
18
18
  end
19
19
 
20
20
  require 'newgem/tasks'
@@ -34,7 +34,7 @@ namespace :iron do
34
34
 
35
35
  puts "Dependency #{dependency.name}"
36
36
 
37
- builder = IvyBuilder.new dependency_project
37
+ builder = IvyConfiguration.builder_for dependency_project
38
38
 
39
39
  builder.write_to "ivy-#{dependency.name}.xml"
40
40
 
@@ -48,21 +48,21 @@ namespace :iron do
48
48
  task :generate do
49
49
  puts "Generating ivy files for projects"
50
50
  @anvil.projects.each do |project|
51
- builder = IvyBuilder.new project
51
+ builder = IvyConfiguration.builder_for project
52
52
  builder.write_to "ivy-#{project.name}.xml"
53
53
  end
54
54
  end
55
55
 
56
56
  desc 'Retrieves all project dependencies from ivy repository and modify project csproj to reference them'
57
57
  task :retrieve do
58
- builder = IvyBuilder.new(SolutionProject.new(@anvil.solution.name, all_dependencies))
58
+ builder = IvyConfiguration.builder_for(SolutionProject.new(@anvil.solution.name, all_dependencies))
59
59
  xml = "ivy-#{@anvil.solution.name}.xml"
60
60
  builder.write_to xml
61
61
 
62
62
  sh builder.retrieve xml
63
63
 
64
64
  @anvil.projects.each do |project|
65
- builder = IvyBuilder.new project
65
+ builder = IvyConfiguration.builder_for project
66
66
 
67
67
  builder.modify_csproj
68
68
  end
@@ -72,7 +72,7 @@ namespace :iron do
72
72
  task :publish => [:generate] do
73
73
  @anvil.dll_projects.topological_sort.each do |project|
74
74
  xml = "ivy-#{project.name}.xml"
75
- builder = IvyBuilder.new project
75
+ builder = IvyConfiguration.builder_for project
76
76
 
77
77
  FileSystem.write! :name => xml, :path => '.',
78
78
  :content => builder.generate_xml(project.dependencies_with_projects @anvil.projects)
@@ -25,7 +25,7 @@ class ProjectVersion
25
25
 
26
26
  def self.greatest_from projects
27
27
  greatest = parse '1.0.0.0'
28
- @anvil.projects.each do |project|
28
+ projects.each do |project|
29
29
  current = parse project.version
30
30
  greatest = current if current > greatest
31
31
  end
@@ -42,10 +42,10 @@ namespace :iron do
42
42
  desc 'back to 1.0.0.*'
43
43
  task :reset do
44
44
  @anvil.projects.each do |project|
45
- old_version = ProjectVersion.parse project.version
46
- old_version.major = 1
47
- old_version.minor = 0
48
- old_version.revision = 0
45
+ new_version = ProjectVersion.parse project.version
46
+ new_version.major = 1
47
+ new_version.minor = 0
48
+ new_version.revision = 0
49
49
  project.version = v.to_s
50
50
  end
51
51
  end
@@ -65,8 +65,8 @@ namespace :iron do
65
65
  desc 'updates version of AssemblyInfo based on BUILD_NUMBER environment variable'
66
66
  task :update_build do
67
67
  @anvil.projects.each do |project|
68
- old_version = project.version
69
- project.version = old_version.gsub /\.\d+$/, ".#{build_number}"
68
+ new_version = project.version
69
+ project.version = new_version.gsub /\.\d+$/, ".#{build_number}"
70
70
  end
71
71
  end
72
72
 
@@ -77,34 +77,41 @@ namespace :iron do
77
77
  namespace :bump do
78
78
  desc 'bumps the major version'
79
79
  task :major do
80
- old_version = ProjectVersion.greatest_from @anvil.projects
81
- old_version.major += 1
82
- old_version.minor = 0
83
- old_version.revision = 0
80
+ new_version = ProjectVersion.greatest_from @anvil.projects
81
+ new_version.major += 1
82
+ new_version.minor = 0
83
+ new_version.revision = 0
84
84
 
85
85
  @anvil.projects.each do |project|
86
- project.version = old_version.to_s
86
+ change_version project, new_version
87
87
  end
88
88
  end
89
89
 
90
+ def change_version project, version
91
+ from = project.version
92
+ to = version.to_s
93
+ puts "Changing version of #{project.name} from #{from} to #{to}"
94
+ project.version = version.to_s
95
+ end
96
+
90
97
  desc 'bumps the minor version'
91
98
  task :minor do
92
- old_version = ProjectVersion.greatest_from @anvil.projects
93
- old_version.minor += 1
94
- old_version.revision = 0
99
+ new_version = ProjectVersion.greatest_from @anvil.projects
100
+ new_version.minor += 1
101
+ new_version.revision = 0
95
102
 
96
103
  @anvil.projects.each do |project|
97
- project.version = old_version.to_s
104
+ change_version project, new_version
98
105
  end
99
106
  end
100
107
 
101
108
  desc 'bumps the revision version'
102
109
  task :revision do
103
- old_version = ProjectVersion.greatest_from @anvil.projects
104
- old_version.revision += 1
110
+ new_version = ProjectVersion.greatest_from @anvil.projects
111
+ new_version.revision += 1
105
112
 
106
113
  @anvil.projects.each do |project|
107
- project.version = old_version.to_s
114
+ change_version project, new_version
108
115
  end
109
116
  end
110
117
  end
@@ -4,12 +4,18 @@ require 'rexml/document'
4
4
  module IronHammer
5
5
  module Utils
6
6
  class IvyBuilder
7
-
8
- def initialize project
9
- @project = project
10
- @organisation = defined?(ORGANISATION)? ORGANISATION : 'org'
11
- @ivy_jar = defined?(IVY_JAR)? IVY_JAR : 'ivy.jar'
12
- @ivy_settings = defined?(IVY_SETTINGS)? IVY_SETTINGS : 'ivysettings.xml'
7
+ VERSION_PATTERN = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/
8
+ VERSION_REPLACE = {
9
+ 'latest' => '+',
10
+ 'latest.major' => '+',
11
+ 'latest.minor' => '\\1.+',
12
+ 'latest.revision' => '\\1.\\2.+',
13
+ 'latest.build' => '\\1.\\2.\\3.+',
14
+ 'specific' => '\\1.\\2.\\3.\\4'
15
+ }
16
+ def initialize params={}
17
+ @project = params[:project] || raise('You must specify a project')
18
+ @config = params[:config] || raise('You must specify a config')
13
19
  end
14
20
 
15
21
  def to_s
@@ -20,7 +26,7 @@ module IronHammer
20
26
  xml = Builder::XmlMarkup.new(:indent => 2)
21
27
  xml.tag! 'ivy-module', :version => '2.0' do
22
28
  name = @project.assembly_name
23
- xml.info :organisation => @organisation, :module => name
29
+ xml.info :organisation => @config.organisation, :module => name
24
30
  xml.publications do
25
31
  @project.artifacts.each do |artifact|
26
32
  names = artifact.split '.'
@@ -32,8 +38,8 @@ module IronHammer
32
38
 
33
39
  xml.dependencies do
34
40
  dependencies.each do |dependency|
35
- rev = dependency.version.gsub /\.\d+$/, '.+'
36
- xml.dependency :org => @organisation, :name => dependency.name, :rev => rev do
41
+ rev = dependency.version.gsub VERSION_PATTERN, VERSION_REPLACE[@config.retrieve_version]
42
+ xml.dependency :org => @config.organisation, :name => dependency.name, :rev => rev do
37
43
  xml.artifact :type => dependency.extension, :name => dependency.name
38
44
  end
39
45
  end
@@ -42,16 +48,16 @@ module IronHammer
42
48
  end
43
49
 
44
50
  def retrieve ivy_file
45
- "java -jar #{@ivy_jar}
51
+ "java -jar #{@config.ivy_jar}
46
52
  -ivy #{ivy_file}
47
- -settings #{@ivy_settings}
53
+ -settings #{@config.ivy_settings}
48
54
  -retrieve Libraries/[artifact]-[revision].[ext]".gsub(/\s+/, ' ')
49
55
  end
50
56
 
51
57
  def publish ivy_file
52
- "java -jar #{@ivy_jar}
58
+ "java -jar #{@config.ivy_jar}
53
59
  -ivy #{ivy_file}
54
- -settings #{@ivy_settings}
60
+ -settings #{@config.ivy_settings}
55
61
  -publish default
56
62
  -publishpattern #{@project.path_to_binaries}/[artifact].[ext]
57
63
  -revision #{@project.version}
@@ -0,0 +1,32 @@
1
+
2
+ module IronHammer
3
+ module Utils
4
+ class IvyConfiguration
5
+ attr_accessor :organisation
6
+ attr_accessor :ivy_jar
7
+ attr_accessor :ivy_settings
8
+ attr_accessor :retrieve_version
9
+
10
+
11
+
12
+ def self.builder_for project
13
+ IvyBuilder.new :config => instance, :project => project
14
+ end
15
+
16
+
17
+ def self.instance
18
+ @@instance ||= IvyConfiguration.new
19
+ end
20
+
21
+ private
22
+ def initialize
23
+ @organisation = defined?(ORGANISATION)? ORGANISATION : 'org'
24
+ @ivy_jar = defined?(IVY_JAR)? IVY_JAR : 'ivy.jar'
25
+ @ivy_settings = defined?(IVY_SETTINGS)? IVY_SETTINGS : 'ivysettings.xml'
26
+ @retrieve_version = ENV['retrieve_version'] || 'latest.build'
27
+ end
28
+
29
+ end unless defined? IvyConfiguration
30
+ end
31
+ end
32
+
data/lib/iron_hammer.rb CHANGED
@@ -40,6 +40,7 @@ require 'iron_hammer/utils/code_analyzers_environment'
40
40
  require 'iron_hammer/utils/dot_net_environment'
41
41
  require 'iron_hammer/utils/file_system'
42
42
  require 'iron_hammer/utils/ivy_builder'
43
+ require 'iron_hammer/utils/ivy_configuration'
43
44
  require 'iron_hammer/utils/windows'
44
45
  require 'iron_hammer/utils/zipper'
45
46
  require 'iron_hammer/version'
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.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mozair Alves do Carmo Junior
@@ -111,6 +111,7 @@ files:
111
111
  - lib/iron_hammer/utils/dot_net_environment.rb
112
112
  - lib/iron_hammer/utils/file_system.rb
113
113
  - lib/iron_hammer/utils/ivy_builder.rb
114
+ - lib/iron_hammer/utils/ivy_configuration.rb
114
115
  - lib/iron_hammer/utils/topological_sort.rb
115
116
  - lib/iron_hammer/utils/windows.rb
116
117
  - lib/iron_hammer/utils/zipper.rb