iron_hammer 0.3.8 → 0.3.9

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
@@ -12,7 +12,7 @@ $hoe = Hoe.spec 'iron_hammer' do
12
12
  self.rubyforge_name = self.name
13
13
  self.extra_deps = [['rubyzip2','>= 2.0.1'],
14
14
  ['builder', '>= 2.1.2']]
15
- self.version = '0.3.8'
15
+ self.version = '0.3.9'
16
16
  end
17
17
 
18
18
  require 'newgem/tasks'
data/lib/iron_hammer.rb CHANGED
@@ -23,6 +23,7 @@ require 'iron_hammer/package'
23
23
  require 'iron_hammer/projects/asp_net_mvc_project'
24
24
  require 'iron_hammer/projects/asp_net_project'
25
25
  require 'iron_hammer/projects/dependency'
26
+ require 'iron_hammer/projects/dependency_project'
26
27
  require 'iron_hammer/projects/dll_project'
27
28
  require 'iron_hammer/projects/generic_project'
28
29
  require 'iron_hammer/projects/project_file'
@@ -42,3 +43,4 @@ include IronHammer::Projects
42
43
  include IronHammer::Solutions
43
44
  include IronHammer::Utils
44
45
  include IronHammer::Deliverables
46
+
@@ -0,0 +1,31 @@
1
+ require 'iron_hammer/projects/dll_project'
2
+
3
+ module IronHammer
4
+ module Projects
5
+ class DependencyProject < DllProject
6
+
7
+ def initialize params
8
+ super(params)
9
+ @binaries_path = params[:binaries_path]
10
+ @version = params[:version] || '1.0.0.0'
11
+ end
12
+
13
+ def dependencies
14
+ []
15
+ end
16
+
17
+ def assembly_name
18
+ name
19
+ end
20
+
21
+ def version
22
+ @version
23
+ end
24
+
25
+ def path_to_binaries
26
+ @binaries_path
27
+ end
28
+ end unless defined? DependencyProject
29
+ end
30
+ end
31
+
@@ -6,48 +6,57 @@ module IronHammer
6
6
  attr_accessor :name
7
7
  attr_accessor :path
8
8
  attr_accessor :csproj
9
-
9
+
10
10
  def initialize params={}
11
- @name = params[:name] ||
11
+ @name = params[:name] ||
12
12
  raise(ArgumentError.new 'must provide a project name')
13
13
  @path = params[:path] || @name
14
14
  @csproj = params[:csproj] || "#{@name}.csproj"
15
15
  end
16
-
16
+
17
17
  def path_to_binaries params={}
18
18
  ''
19
19
  end
20
20
 
21
+ def version
22
+ '1.0.0.0'
23
+ end
24
+
21
25
  def deliverables params={}
22
26
  []
23
27
  end
24
-
28
+
29
+ def assembly_name
30
+ @assembly_name ||= file.assembly_name
31
+ end
32
+
25
33
  def dependencies
26
34
  @dependencies ||= file.dependencies
27
35
  end
28
-
36
+
29
37
  def package params={}
30
38
  package_root(params)
31
39
  Package.new :root => package_root, :deliverables => deliverables(params)
32
40
  end
33
-
41
+
34
42
  protected
35
43
  def package_root params={}
36
44
  root = params[:root] || params[:target] || params[:package_root] || IronHammer::Defaults::DELIVERY_DIRECTORY
37
45
  end
38
-
46
+
39
47
  def run_configuration params={}
40
48
  configuration = params[:configuration]
41
49
  config = (configuration && !configuration.empty? && configuration) || IronHammer::Defaults::CONFIGURATION_RUN
42
50
  end
43
-
51
+
44
52
  def file
45
53
  @file ||= ProjectFile.load_from path_to_csproj
46
54
  end
47
-
55
+
48
56
  def path_to_csproj
49
57
  return File.join @path, @csproj
50
58
  end
51
59
  end unless defined? GenericProject
52
60
  end
53
61
  end
62
+
@@ -11,44 +11,49 @@ module IronHammer
11
11
  module Projects
12
12
  class ProjectFile
13
13
  attr_accessor :path
14
-
14
+
15
15
  GUID_EVALUATION_ORDER = [AspNetMvcProject, AspNetProject, TestProject]
16
16
  GUID_PATH = '//Project/PropertyGroup/ProjectTypeGuids'
17
+ ASSEMBLY_NAME_PATH = '//Project/PropertyGroup/AssemblyName'
17
18
  REFERENCE_PATH = '//Reference[not(starts_with(@Include, "System"))]'
18
-
19
+
19
20
  def self.load_from *path
20
21
  ProjectFile.new path
21
22
  end
22
-
23
+
23
24
  def type
24
25
  @type ||= ((GUID_EVALUATION_ORDER.inject(false) do |result, current|
25
26
  result || (guids.include?(ProjectTypes::guid_for(current)) && current)
26
27
  end) || DllProject)
27
28
  end
28
29
 
30
+ def assembly_name
31
+ @assembly_name ||= doc.elements[ASSEMBLY_NAME_PATH].text
32
+ end
33
+
29
34
  def dependencies
30
35
  references.collect { |reference| Dependency.from_reference reference }
31
36
  end
32
-
37
+
33
38
  private
34
39
  def references
35
40
  doc && doc.get_elements(REFERENCE_PATH)
36
41
  end
37
-
42
+
38
43
  def doc
39
44
  @doc ||= REXML::Document.new xml
40
45
  end
41
-
46
+
42
47
  def xml
43
48
  @xml ||= IronHammer::Utils::FileSystem::read_file(*@path)
44
49
  end
45
-
50
+
46
51
  def guids
47
52
  return @guids if @guids
48
53
  return @guids = [] unless (elem = doc && doc.elements[GUID_PATH]) && elem.text
49
54
  @guids = elem.text.split(';').collect { |e| e.upcase }
50
55
  end
51
-
56
+
52
57
  def initialize *path
53
58
  @path = path
54
59
  end
@@ -8,21 +8,24 @@ module IronHammer
8
8
  attr_accessor :dll
9
9
  attr_accessor :name
10
10
  attr_accessor :path
11
-
12
- def initialize params
13
- @name = params[:name] || "#{ params[:project] || params[:solution] }.Tests"
11
+
12
+ def initialize params = {}
13
+ params[:name] ||= "#{ params[:project] || params[:solution] }.Tests"
14
+ @name = params[:name]
14
15
  @dll = "#{ params[:dll] || @name}.dll"
15
16
  @config = params[:config] || IronHammer::Defaults::TEST_CONFIG
16
17
  @path = params[:path]
18
+ super(params)
17
19
  end
18
20
 
19
21
  def container configuration
20
22
  [@name, 'bin', configuration, @dll].patheticalize
21
23
  end
22
-
24
+
23
25
  def results_file
24
26
  ['TestResults', 'TestResults.trx'].patheticalize
25
27
  end
26
28
  end unless defined? TestProject
27
29
  end
28
30
  end
31
+
@@ -3,6 +3,7 @@ require 'rake/clean'
3
3
  require 'iron_hammer'
4
4
 
5
5
  CLEAN.include("TestResults/**")
6
+ CLEAN.include("ivy*.xml")
6
7
 
7
8
  namespace :iron do
8
9
  task :initialize do
@@ -24,9 +25,30 @@ namespace :iron do
24
25
  end
25
26
 
26
27
  namespace :ivy do
27
- desc 'Generates ivy-<project_name>.xml for all dll projects of the solution'
28
+ desc 'Publish project dependencies into ivy repository'
29
+ task :setup do
30
+ @anvil = Anvil.load_from '.'
31
+ @anvil.projects.each do |project|
32
+ project.dependencies.each do |dependency|
33
+ dependency_project = DependencyProject.new(
34
+ :name => dependency.name,
35
+ :binaries_path => ENV['binaries_path'],
36
+ :version => dependency.version)
37
+
38
+ puts "Dependency #{dependency.name}"
39
+
40
+ builder = IvyBuilder.new dependency_project
41
+
42
+ builder.write_to "ivy-#{dependency.name}.xml"
43
+
44
+ sh builder.publish "ivy-#{dependency.name}.xml"
45
+ end
46
+ end
47
+ end
48
+
49
+ desc 'Generates ivy-<project_name>.xml for all projects of the solution'
28
50
  task :generate => [:initialize] do
29
- @anvil.dll_projects.each do |project|
51
+ @anvil.projects.each do |project|
30
52
  builder = IvyBuilder.new project
31
53
  builder.write_to "ivy-#{project.name}.xml"
32
54
  end
@@ -34,7 +56,7 @@ namespace :iron do
34
56
 
35
57
  desc 'Retrieves all project dependencies from ivy repository and modify project csproj to reference them'
36
58
  task :retrieve => [:generate] do
37
- @anvil.dll_projects.each do |project|
59
+ @anvil.projects.each do |project|
38
60
  xml = "ivy-#{project.name}.xml"
39
61
  builder = IvyBuilder.new project
40
62
 
@@ -44,7 +66,7 @@ namespace :iron do
44
66
  end
45
67
  end
46
68
 
47
- desc 'Publish project assemblies to ivy repository'
69
+ desc 'Publish project assemblies to ivy repository (only dll projects)'
48
70
  task :publish => [:generate] do
49
71
  @anvil.dll_projects.each do |project|
50
72
  xml = "ivy-#{project.name}.xml"
@@ -15,13 +15,11 @@ module IronHammer
15
15
  def to_s
16
16
  xml = Builder::XmlMarkup.new(:indent => 2)
17
17
  xml.tag! 'ivy-module', :version => '2.0' do
18
- xml.info :organisation => @organisation, :module => @project.name
18
+ name = @project.assembly_name
19
+ xml.info :organisation => @organisation, :module => name
19
20
  xml.publications do
20
- @project.binaries.each do |binary|
21
- extension = binary.actual_name.split(/\./).last
22
- name = binary.actual_name.gsub(/\.[^\.]+$/, '')
23
- xml.artifact :name => name, :type => extension
24
- end
21
+ extension = 'dll'
22
+ xml.artifact :name => name, :type => extension
25
23
  end if @project.is_a? DllProject
26
24
 
27
25
  xml.dependencies do
@@ -45,7 +43,7 @@ module IronHammer
45
43
  -settings #{@ivy_settings}
46
44
  -publish default
47
45
  -publishpattern #{@project.path_to_binaries}/[artifact].[ext]
48
- -revision 1.0.0.0
46
+ -revision #{@project.version}
49
47
  -overwrite true".gsub(/\s+/, ' ')
50
48
  end
51
49
 
@@ -60,16 +58,20 @@ module IronHammer
60
58
  references.each do |reference|
61
59
  reference.elements['SpecificVersion'] = REXML::Element.new('SpecificVersion').add_text('false')
62
60
  reference.elements['HintPath'] = REXML::Element.new('HintPath').
63
- add_text("..\\Libraries\\#{artifact_for reference}")
61
+ add_text([relative, 'Libraries', "#{artifact_for reference}"].flatten.patheticalize)
64
62
  end
65
63
 
66
64
  FileSystem.write! :path => @project.path, :name => @project.csproj, :content => doc.to_s
67
65
  end
68
66
 
67
+ def relative
68
+ ['..'] * @project.path.split(/\/|\\/).size
69
+ end
70
+
69
71
  private
70
72
  def artifact_for reference
71
73
  dependency = Dependency.from_reference reference
72
- libraries_dir = Dir.new(File.join(@project.path, '..', 'Libraries'))
74
+ libraries_dir = Dir.new('Libraries')
73
75
  libraries_dir.find {|f| f.match "#{dependency.name}\\.(dll|exe)"}
74
76
  end
75
77
  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: 0.3.8
4
+ version: 0.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mozair Alves do Carmo Junior
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-01 00:00:00 -02:00
12
+ date: 2010-02-02 00:00:00 -02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -88,6 +88,7 @@ files:
88
88
  - lib/iron_hammer/projects/asp_net_project.rb
89
89
  - lib/iron_hammer/projects/dll_project.rb
90
90
  - lib/iron_hammer/projects/dependency.rb
91
+ - lib/iron_hammer/projects/dependency_project.rb
91
92
  - lib/iron_hammer/projects/generic_project.rb
92
93
  - lib/iron_hammer/projects/project_file.rb
93
94
  - lib/iron_hammer/projects/project_types.rb