iron_hammer 0.3.6 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- data/PostInstall.txt +1 -2
- data/README.rdoc +4 -5
- data/Rakefile +1 -1
- data/lib/iron_hammer/anvil.rb +23 -21
- data/lib/iron_hammer/projects/generic_project.rb +9 -1
- data/lib/iron_hammer/projects/project_file.rb +32 -26
- data/lib/iron_hammer/tasks.rb +1 -2
- data/lib/iron_hammer/utils/ivy_builder.rb +1 -0
- metadata +3 -4
data/PostInstall.txt
CHANGED
@@ -17,8 +17,7 @@ $ rake iron:test:unit
|
|
17
17
|
--- rakefile.rb
|
18
18
|
require 'iron_hammer'
|
19
19
|
|
20
|
-
@anvil = Anvil.
|
21
|
-
@anvil.load_projects_from_solution
|
20
|
+
@anvil = Anvil.load_from '.'
|
22
21
|
@hammer = Hammer.new :visual_studio_path => VISUAL_STUDIO_PATH
|
23
22
|
sh @hammer.build @anvil.solution
|
24
23
|
sh @hammer.test *@anvil.test_projects
|
data/README.rdoc
CHANGED
@@ -20,9 +20,7 @@ Iron Hammer gathers together three components to help automate the build, test a
|
|
20
20
|
== SYNOPSIS:
|
21
21
|
|
22
22
|
# Reading the solution file information from the current directory
|
23
|
-
a = Anvil.
|
24
|
-
# Reading the project information based on the solution read before
|
25
|
-
a.load_projects_from_solution
|
23
|
+
a = Anvil.load_from '.'
|
26
24
|
# Initializing a new Hammer
|
27
25
|
h = Hammer.new
|
28
26
|
# Getting the command line for building a solution
|
@@ -32,7 +30,8 @@ Iron Hammer gathers together three components to help automate the build, test a
|
|
32
30
|
|
33
31
|
== REQUIREMENTS:
|
34
32
|
|
35
|
-
rubyzip2 (>= 2.0.1)
|
33
|
+
rubyzip2 (>= 2.0.1)
|
34
|
+
builder (>= 2.1.2)
|
36
35
|
|
37
36
|
== INSTALL:
|
38
37
|
|
@@ -44,7 +43,7 @@ Iron Hammer gathers together three components to help automate the build, test a
|
|
44
43
|
|
45
44
|
MACSkeptic Iron-Hammer
|
46
45
|
|
47
|
-
Copyright (c) 2010 Mozair Alves do Carmo Junior, http://codevil.com
|
46
|
+
Copyright (c) 2010 Mozair Alves do Carmo Junior, http://codevil.com
|
48
47
|
|
49
48
|
Permission is hereby granted, free of charge, to any person obtaining
|
50
49
|
a copy of this software and associated documentation files (the
|
data/Rakefile
CHANGED
data/lib/iron_hammer/anvil.rb
CHANGED
@@ -5,26 +5,11 @@ require 'iron_hammer/solutions/solution_file'
|
|
5
5
|
module IronHammer
|
6
6
|
class Anvil
|
7
7
|
attr_accessor :solution
|
8
|
-
attr_accessor :projects
|
9
8
|
|
10
|
-
def
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
def load_projects_from_solution
|
16
|
-
@projects = @projects || []
|
17
|
-
@solution.file.projects.each do |p|
|
18
|
-
@projects << IronHammer::Projects::ProjectFile.type_of(
|
19
|
-
@solution.path,
|
20
|
-
path = p[:path],
|
21
|
-
csproj = p[:csproj]).
|
22
|
-
send(:new, p)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.load_solution_from *path
|
27
|
-
pattern = File.join path, '*.sln'
|
9
|
+
def self.load_from *path
|
10
|
+
target = path
|
11
|
+
target = '.' if path.nil? || path.empty?
|
12
|
+
pattern = File.join target, '*.sln'
|
28
13
|
entries = Dir[pattern]
|
29
14
|
anvil = Anvil.new(
|
30
15
|
:solution => IronHammer::Solutions::Solution.new(
|
@@ -34,13 +19,30 @@ module IronHammer
|
|
34
19
|
)
|
35
20
|
) unless entries.nil? || entries.empty?
|
36
21
|
end
|
22
|
+
|
23
|
+
def projects
|
24
|
+
@projects ||= (@solution.file.projects.collect do |p|
|
25
|
+
ProjectFile.load_from(root_path = @solution.path, project_path = p[:path], csproj = p[:csproj]).type.new(p)
|
26
|
+
end)
|
27
|
+
end
|
37
28
|
|
38
29
|
def dll_projects
|
39
|
-
@projects.select {|p| p.is_a? DllProject}
|
30
|
+
@dll_projects ||= projects.select {|p| p.is_a? DllProject}
|
40
31
|
end
|
41
32
|
|
42
33
|
def test_projects
|
43
|
-
@projects.select {|p| p.is_a? TestProject}
|
34
|
+
@test_projects ||= projects.select {|p| p.is_a? TestProject}
|
35
|
+
end
|
36
|
+
|
37
|
+
def load_projects_from_solution #deprecated!
|
38
|
+
Kernel::warn '[DEPRECATION] `load_projects_from_solution` is deprecated and now it is a no-op. ' +
|
39
|
+
'Please, just use `projects` instead - they will be loaded in a lazy fashion ;)'
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
def initialize params={}
|
44
|
+
@solution = params[:solution]
|
45
|
+
@projects = params[:projects]
|
44
46
|
end
|
45
47
|
end unless defined? Anvil
|
46
48
|
end
|
@@ -23,7 +23,7 @@ module IronHammer
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def dependencies
|
26
|
-
@dependencies ||=
|
26
|
+
@dependencies ||= file.dependencies
|
27
27
|
end
|
28
28
|
|
29
29
|
def package params={}
|
@@ -40,6 +40,14 @@ module IronHammer
|
|
40
40
|
configuration = params[:configuration]
|
41
41
|
config = (configuration && !configuration.empty? && configuration) || IronHammer::Defaults::CONFIGURATION_RUN
|
42
42
|
end
|
43
|
+
|
44
|
+
def file
|
45
|
+
@file ||= ProjectFile.load_from path_to_csproj
|
46
|
+
end
|
47
|
+
|
48
|
+
def path_to_csproj
|
49
|
+
return File.join @path, @csproj
|
50
|
+
end
|
43
51
|
end unless defined? GenericProject
|
44
52
|
end
|
45
53
|
end
|
@@ -10,41 +10,47 @@ require 'iron_hammer/utils/file_system'
|
|
10
10
|
module IronHammer
|
11
11
|
module Projects
|
12
12
|
class ProjectFile
|
13
|
-
attr_accessor :
|
14
|
-
|
13
|
+
attr_accessor :path
|
14
|
+
|
15
15
|
GUID_EVALUATION_ORDER = [AspNetMvcProject, AspNetProject, TestProject]
|
16
16
|
GUID_PATH = '//Project/PropertyGroup/ProjectTypeGuids'
|
17
17
|
REFERENCE_PATH = '//Reference[not(starts_with(@Include, "System"))]'
|
18
|
-
|
19
|
-
def
|
20
|
-
|
21
|
-
raise ArgumentError.new('type must be a Class') unless @type.class == Class
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.type_of *path
|
25
|
-
self.parse(IronHammer::Utils::FileSystem::read_file(*path)).type
|
18
|
+
|
19
|
+
def self.load_from *path
|
20
|
+
ProjectFile.new path
|
26
21
|
end
|
27
|
-
|
28
|
-
def
|
29
|
-
|
30
|
-
ProjectFile.new :type => ((GUID_EVALUATION_ORDER.inject(false) do |result, current|
|
22
|
+
|
23
|
+
def type
|
24
|
+
@type ||= ((GUID_EVALUATION_ORDER.inject(false) do |result, current|
|
31
25
|
result || (guids.include?(ProjectTypes::guid_for(current)) && current)
|
32
26
|
end) || DllProject)
|
33
27
|
end
|
34
28
|
|
35
|
-
def
|
36
|
-
|
37
|
-
elem = doc && doc.elements[GUID_PATH]
|
38
|
-
guids = ((elem && elem.text) || '').split(';').collect { |e| e.upcase }
|
29
|
+
def dependencies
|
30
|
+
references.collect { |reference| Dependency.from_reference reference }
|
39
31
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
32
|
+
|
33
|
+
private
|
34
|
+
def references
|
35
|
+
doc && doc.get_elements(REFERENCE_PATH)
|
36
|
+
end
|
37
|
+
|
38
|
+
def doc
|
39
|
+
@doc ||= REXML::Document.new xml
|
40
|
+
end
|
41
|
+
|
42
|
+
def xml
|
43
|
+
@xml ||= IronHammer::Utils::FileSystem::read_file(*@path)
|
44
|
+
end
|
45
|
+
|
46
|
+
def guids
|
47
|
+
return @guids if @guids
|
48
|
+
return @guids = [] unless (elem = doc && doc.elements[GUID_PATH]) && elem.text
|
49
|
+
@guids = elem.text.split(';').collect { |e| e.upcase }
|
50
|
+
end
|
51
|
+
|
52
|
+
def initialize *path
|
53
|
+
@path = path
|
48
54
|
end
|
49
55
|
end unless defined? ProjectFile
|
50
56
|
end
|
data/lib/iron_hammer/tasks.rb
CHANGED
@@ -6,8 +6,7 @@ CLEAN.include("TestResults/**")
|
|
6
6
|
|
7
7
|
namespace :iron do
|
8
8
|
task :initialize do
|
9
|
-
@anvil = Anvil.
|
10
|
-
@anvil.load_projects_from_solution
|
9
|
+
@anvil = Anvil.load_from '.'
|
11
10
|
@hammer = Hammer.new(defined?(VISUAL_STUDIO_PATH) ? {:visual_studio_path => VISUAL_STUDIO_PATH} : {})
|
12
11
|
FileUtils.mkdir 'TestResults' unless (File.exists?('TestResults') && File.directory?('TestResults'))
|
13
12
|
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.
|
4
|
+
version: 0.3.7
|
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-01-
|
12
|
+
date: 2010-01-30 00:00:00 -02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -125,8 +125,7 @@ post_install_message: |
|
|
125
125
|
--- rakefile.rb
|
126
126
|
require 'iron_hammer'
|
127
127
|
|
128
|
-
@anvil = Anvil.
|
129
|
-
@anvil.load_projects_from_solution
|
128
|
+
@anvil = Anvil.load_from '.'
|
130
129
|
@hammer = Hammer.new :visual_studio_path => VISUAL_STUDIO_PATH
|
131
130
|
sh @hammer.build @anvil.solution
|
132
131
|
sh @hammer.test *@anvil.test_projects
|