fuburake 0.9.5.37 → 1.0.0.38
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/assembly_info.rb +43 -42
- data/lib/bottles.rb +16 -15
- data/lib/fubudocs.rb +103 -104
- data/lib/fuburake.rb +348 -346
- data/lib/msbuild.rb +54 -53
- data/lib/nuget.rb +20 -20
- data/lib/nunit.rb +81 -86
- data/lib/platform.rb +48 -15
- data/lib/ripple.rb +35 -34
- metadata +4 -4
data/lib/msbuild.rb
CHANGED
@@ -1,83 +1,84 @@
|
|
1
|
+
# vim: tabstop=4:softtabstop=4:shiftwidth=4:noexpandtab
|
1
2
|
module FubuRake
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
class MSBuild
|
4
|
+
def self.create_task(tasks, options)
|
5
|
+
if tasks.compile == nil
|
6
|
+
return nil
|
7
|
+
end
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
compileTask = Rake::Task.define_task :compile do
|
10
|
+
MSBuildRunner.compile options.merge(tasks.compile)
|
11
|
+
end
|
11
12
|
|
12
|
-
|
13
|
+
compileTask.add_description "Compiles the solution #{tasks.compile[:solutionfile]}"
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
openTask = Rake::Task.define_task :sln do
|
16
|
+
Platform.open("#{tasks.compile[:solutionfile]}")
|
17
|
+
end
|
18
|
+
openTask.add_description "Open solution #{tasks.compile[:solutionfile]}"
|
18
19
|
|
19
|
-
|
20
|
+
return compileTask
|
21
|
+
end
|
20
22
|
end
|
21
|
-
end
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
class CompileTarget
|
25
|
+
def initialize(name, solution)
|
26
|
+
@name = name
|
27
|
+
@solution = solution
|
28
|
+
end
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
def create(options)
|
31
|
+
compileTask = Rake::Task.define_task @name do
|
32
|
+
MSBuildRunner.compile options.merge({:solutionfile => @solution})
|
33
|
+
end
|
33
34
|
|
34
|
-
|
35
|
+
compileTask.add_description "Compiles #{@solution}"
|
36
|
+
end
|
35
37
|
end
|
36
|
-
end
|
37
38
|
end
|
38
39
|
|
39
40
|
|
40
41
|
class MSBuildRunner
|
41
42
|
def self.compile(attributes)
|
42
|
-
compileTarget = attributes.fetch(:compilemode, '
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
43
|
+
compileTarget = attributes.fetch(:compilemode, 'Debug')
|
44
|
+
solutionFile = attributes[:solutionfile]
|
45
|
+
|
46
|
+
attributes[:projFile] = solutionFile
|
47
|
+
attributes[:properties] ||= []
|
48
|
+
attributes[:properties] << "Configuration=#{compileTarget}"
|
49
|
+
attributes[:extraSwitches] = ["v:m", "t:rebuild"]
|
49
50
|
attributes[:extraSwitches] << "maxcpucount:2" unless Platform.is_nix
|
50
51
|
|
51
|
-
|
52
|
+
self.runProjFile(attributes);
|
52
53
|
end
|
53
|
-
|
54
|
+
|
54
55
|
def self.runProjFile(attributes)
|
55
56
|
version = attributes.fetch(:clrversion, 'v4.0.30319')
|
56
57
|
compileTarget = attributes.fetch(:compilemode, 'debug')
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
58
|
+
projFile = attributes[:projFile]
|
59
|
+
|
60
|
+
if Platform.is_nix
|
61
|
+
msbuildFile = `which xbuild`.chop
|
62
|
+
attributes[:properties] << "TargetFrameworkProfile="""""
|
63
|
+
else
|
64
|
+
frameworkDir = File.join(ENV['windir'].dup, 'Microsoft.NET', 'Framework', version)
|
65
|
+
msbuildFile = File.join(frameworkDir, 'msbuild.exe')
|
66
|
+
end
|
67
|
+
|
68
|
+
properties = attributes.fetch(:properties, [])
|
66
69
|
|
67
|
-
properties = attributes.fetch(:properties, [])
|
68
|
-
|
69
70
|
switchesValue = ""
|
70
|
-
|
71
|
+
|
71
72
|
properties.each do |prop|
|
72
73
|
switchesValue += " /property:#{prop}"
|
73
|
-
end
|
74
|
-
|
75
|
-
extraSwitches = attributes.fetch(:extraSwitches, [])
|
76
|
-
|
74
|
+
end
|
75
|
+
|
76
|
+
extraSwitches = attributes.fetch(:extraSwitches, [])
|
77
|
+
|
77
78
|
extraSwitches.each do |switch|
|
78
79
|
switchesValue += " /#{switch}"
|
79
|
-
end
|
80
|
-
|
80
|
+
end
|
81
|
+
|
81
82
|
targets = attributes.fetch(:targets, [])
|
82
83
|
targetsValue = ""
|
83
84
|
targets.each do |target|
|
data/lib/nuget.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
+
# vim: tabstop=4:softtabstop=4:shiftwidth=4:noexpandtab
|
1
2
|
module Nuget
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
File.join(Dir.glob(File.join(package_root,"#{package}.[0-9]*")).sort.last, "tools", tool)
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.package_root
|
11
|
-
root = nil
|
12
|
-
|
13
|
-
packroots = Dir.glob("{source,src}/packages")
|
3
|
+
def self.tool(package, tool)
|
4
|
+
nugetDir = Dir.glob(File.join(package_root,"#{package}*")).sort.last
|
5
|
+
return File.join(nugetDir, "tools", tool) if File.directory?(nugetDir)
|
14
6
|
|
15
|
-
|
7
|
+
File.join(Dir.glob(File.join(package_root,"#{package}.[0-9]*")).sort.last, "tools", tool)
|
8
|
+
end
|
16
9
|
|
17
|
-
|
18
|
-
|
19
|
-
FileUtils.mkdir_p(packroot)
|
20
|
-
root = packroot
|
21
|
-
end
|
10
|
+
def self.package_root
|
11
|
+
root = nil
|
22
12
|
|
23
|
-
|
24
|
-
|
13
|
+
packroots = Dir.glob("{source,src}/packages")
|
14
|
+
|
15
|
+
return packroots.last if packroots.length > 0
|
16
|
+
|
17
|
+
Dir.glob("{source,src}").each do |d|
|
18
|
+
packroot = File.join d, "packages"
|
19
|
+
FileUtils.mkdir_p(packroot)
|
20
|
+
root = packroot
|
21
|
+
end
|
22
|
+
|
23
|
+
root
|
24
|
+
end
|
25
25
|
end
|
data/lib/nunit.rb
CHANGED
@@ -1,101 +1,96 @@
|
|
1
|
+
# vim: tabstop=4:softtabstop=4:shiftwidth=4:noexpandtab
|
1
2
|
module FubuRake
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
tests = Array.new
|
7
|
-
|
8
|
-
if options[:unit_test_projects].any?
|
9
|
-
tests = options[:unit_test_projects]
|
10
|
-
elsif options[:unit_test_list_file] != nil and File::exists?(options[:unit_test_list_file])
|
11
|
-
file = options[:unit_test_list_file]
|
3
|
+
class NUnit
|
4
|
+
def self.create_task(tasks, options)
|
5
|
+
nunitTask = nil
|
12
6
|
|
13
|
-
|
14
|
-
|
15
|
-
else
|
16
|
-
# just find testing projects
|
17
|
-
Dir.glob('**/*.{Testing,Tests}.csproj').each do |f|
|
18
|
-
test = File.basename(f, ".csproj")
|
19
|
-
tests.push test
|
20
|
-
end
|
7
|
+
tests = Array.new
|
21
8
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
runner = NUnitRunner.new options
|
27
|
-
runner.executeTests tests
|
28
|
-
end
|
29
|
-
|
30
|
-
nunitTask.enhance [:compile]
|
31
|
-
nunitTask.add_description "Runs unit tests for " + tests.join(', ')
|
32
|
-
end
|
9
|
+
if options[:unit_test_projects].any?
|
10
|
+
tests = options[:unit_test_projects]
|
11
|
+
elsif options[:unit_test_list_file] != nil and File::exists?(options[:unit_test_list_file])
|
12
|
+
file = options[:unit_test_list_file]
|
33
13
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
14
|
+
tests = NUnitRunner.readFromFile(file)
|
15
|
+
|
16
|
+
else
|
17
|
+
# just find testing projects
|
18
|
+
Dir.glob('**/*.{Testing,Tests}.csproj').each do |f|
|
19
|
+
test = File.basename(f, ".csproj")
|
20
|
+
tests.push test
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
if !tests.empty?
|
25
|
+
nunitTask = Rake::Task.define_task :unit_test do
|
26
|
+
runner = NUnitRunner.new options
|
27
|
+
runner.executeTests tests
|
28
|
+
end
|
29
|
+
|
30
|
+
nunitTask.enhance [:compile]
|
31
|
+
nunitTask.add_description "Runs unit tests for " + tests.join(', ')
|
32
|
+
end
|
33
|
+
|
34
|
+
if tasks.integration_test != nil
|
35
|
+
integrationTask = Rake::Task.define_task :integration_test do
|
36
|
+
runner = NUnitRunner.new options
|
37
|
+
runner.executeTests tasks.integration_test
|
38
|
+
end
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
integrationTask.enhance [:compile]
|
41
|
+
integrationTask.add_description "integration tests: #{tasks.integration_test.join(', ')}"
|
42
|
+
end
|
43
|
+
end
|
43
44
|
end
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
class NUnitRunner
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
class NUnitRunner
|
49
49
|
include FileTest
|
50
50
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
51
|
+
def initialize(paths)
|
52
|
+
@sourceDir = paths.fetch(:source, 'src')
|
53
|
+
@resultsDir = paths.fetch(:results, 'results')
|
54
|
+
@compilePlatform = paths.fetch(:platform, '')
|
55
|
+
@compileTarget = paths.fetch(:compilemode, 'debug')
|
56
|
+
@clrversion = paths.fetch(:clrversion, 'v4.0.30319')
|
57
|
+
@nunitExe = Nuget.tool("NUnit", "nunit-console#{(@compilePlatform.empty? ? '' : "-#{@compilePlatform}")}.exe") + Platform.switch("nothread")
|
58
|
+
end
|
59
59
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
60
|
+
def executeTests(assemblies)
|
61
|
+
Dir.mkdir @resultsDir unless exists?(@resultsDir)
|
62
|
+
|
63
|
+
assemblies.each do |assem|
|
64
|
+
file = File.expand_path("#{@sourceDir}/#{assem}/bin/#{@compilePlatform.empty? ? '' : @compilePlatform + '/'}#{@compileTarget}/#{assem}.dll")
|
65
|
+
puts "The platform is #{@compilePlatform}"
|
66
|
+
sh Platform.runtime("#{@nunitExe} -noshadow -xml=#{@resultsDir}/#{assem}-TestResults.xml \"#{file}\"", @clrversion)
|
67
|
+
end
|
67
68
|
end
|
68
|
-
end
|
69
69
|
|
70
|
-
|
71
|
-
|
70
|
+
def self.readFromFile(file)
|
71
|
+
tests = Array.new
|
72
72
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
73
|
+
file = File.new(file, "r")
|
74
|
+
assemblies = file.readlines()
|
75
|
+
assemblies.each do |a|
|
76
|
+
test = a.gsub("\r\n", "").gsub("\n", "")
|
77
|
+
tests.push(test)
|
78
|
+
end
|
79
|
+
file.close
|
80
|
+
|
81
|
+
return tests
|
82
|
+
end
|
83
83
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
84
|
+
def executeTestsInFile(file)
|
85
|
+
if !File.exist?(file)
|
86
|
+
throw "File #{file} does not exist"
|
87
|
+
end
|
88
|
+
|
89
|
+
tests = readFromFile(file)
|
90
|
+
|
91
|
+
if (!tests.empty?)
|
92
|
+
executeTests tests
|
93
|
+
end
|
94
|
+
end
|
94
95
|
end
|
95
|
-
end
|
96
|
-
|
97
|
-
|
98
96
|
end
|
99
|
-
|
100
|
-
|
101
|
-
|
data/lib/platform.rb
CHANGED
@@ -1,20 +1,53 @@
|
|
1
|
+
# vim: tabstop=4:softtabstop=4:shiftwidth=4:noexpandtab
|
1
2
|
module Platform
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
4
|
+
def self.is_nix
|
5
|
+
!RUBY_PLATFORM.match("linux|darwin").nil?
|
6
|
+
end
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
command = "mono --runtime=#{runtime} #{cmd}"
|
11
|
-
end
|
12
|
-
command
|
13
|
-
end
|
8
|
+
def self.is_linux
|
9
|
+
!RUBY_PLATFORM.match("linux").nil?
|
10
|
+
end
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
12
|
+
def self.is_darwin
|
13
|
+
!RUBY_PLATFORM.match("darwin").nil?
|
14
|
+
end
|
19
15
|
|
20
|
-
|
16
|
+
def self.open(path)
|
17
|
+
command = "start #{path}"
|
18
|
+
if self.is_linux
|
19
|
+
command = "xdg-open #{path}"
|
20
|
+
elsif self.is_darwin
|
21
|
+
command = "open #{path}"
|
22
|
+
end
|
23
|
+
sh command
|
24
|
+
end
|
25
|
+
|
26
|
+
#http://src.chromium.org/chrome/trunk/deps/third_party/xdg-utils/scripts/xdg-terminal
|
27
|
+
# #https://github.com/ssokolow/profile/blob/master/supplemental/xdg-terminal
|
28
|
+
# #http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/start.mspx?mfr=true
|
29
|
+
#
|
30
|
+
def self.start(command)
|
31
|
+
if self.is_linux
|
32
|
+
command = "xterm -e '#{command}'"
|
33
|
+
elsif self.is_darmin
|
34
|
+
command = "Terminal -e '#{command}'"
|
35
|
+
else
|
36
|
+
command = "start '#{command}'"
|
37
|
+
end
|
38
|
+
sh command
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.runtime(cmd, runtime='v4.0.30319')
|
42
|
+
command = cmd
|
43
|
+
if self.is_nix
|
44
|
+
command = "mono --runtime=#{runtime} #{cmd}"
|
45
|
+
end
|
46
|
+
command
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.switch(arg)
|
50
|
+
sw = self.is_nix ? " -" : " /"
|
51
|
+
sw + arg
|
52
|
+
end
|
53
|
+
end
|
data/lib/ripple.rb
CHANGED
@@ -1,38 +1,39 @@
|
|
1
|
+
# vim: tabstop=4:softtabstop=4:shiftwidth=4:noexpandtab
|
1
2
|
module FubuRake
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
3
|
+
class Ripple
|
4
|
+
def self.create(tasks, options)
|
5
|
+
if !tasks.ripple_enabled
|
6
|
+
return
|
7
|
+
end
|
8
|
+
|
9
|
+
tasks.clean << 'artifacts'
|
10
|
+
|
11
|
+
restoreTask = Rake::Task.define_task 'ripple:restore' do
|
12
|
+
puts 'Restoring all the nuget package files'
|
13
|
+
sh 'ripple restore'
|
14
|
+
end
|
15
|
+
restoreTask.add_description "Restores nuget package files and updates all floating nugets"
|
16
|
+
|
17
|
+
updateTask = Rake::Task.define_task 'ripple:update' do
|
18
|
+
puts 'Cleaning out existing packages out of paranoia'
|
19
|
+
sh 'ripple clean'
|
20
|
+
|
21
|
+
puts 'Updating all the nuget package files'
|
22
|
+
sh 'ripple update'
|
23
|
+
end
|
24
|
+
updateTask.add_description "Updates nuget package files to the latest"
|
25
|
+
|
26
|
+
|
27
|
+
historyTask = Rake::Task.define_task 'ripple:history' do
|
28
|
+
sh 'ripple history'
|
29
|
+
end
|
30
|
+
historyTask.add_description "creates a history file for nuget dependencies"
|
31
|
+
|
32
|
+
packageTask = Rake::Task.define_task 'ripple:package' do
|
33
|
+
sh "ripple local-nuget --version #{options[:build_number]} --destination artifacts"
|
34
|
+
end
|
35
|
+
packageTask.add_description "packages the nuget files from the nuspec files in packaging/nuget and publishes to /artifacts"
|
36
|
+
end
|
35
37
|
end
|
36
|
-
end
|
37
38
|
end
|
38
39
|
|