albacore 2.1.2 → 2.2.0.pre.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -0
- data/lib/albacore.rb +7 -7
- data/lib/albacore/application.rb +45 -45
- data/lib/albacore/cmd_config.rb +66 -66
- data/lib/albacore/dsl.rb +119 -119
- data/lib/albacore/errors/unfilled_property_error.rb +13 -13
- data/lib/albacore/ext/teamcity.rb +13 -0
- data/lib/albacore/facts.rb +24 -25
- data/lib/albacore/logging.rb +33 -33
- data/lib/albacore/paths.rb +114 -114
- data/lib/albacore/project.rb +2 -2
- data/lib/albacore/task_types/nugets_restore.rb +18 -4
- data/lib/albacore/task_types/test_runner.rb +143 -143
- data/lib/albacore/tasks/albasemver.rb +49 -49
- data/lib/albacore/tasks/release.rb +150 -0
- data/lib/albacore/tools/restore_hint_paths.rb +82 -82
- data/lib/albacore/tools/zippy.rb +61 -61
- data/lib/albacore/version.rb +1 -1
- data/spec/nugets_restore_spec.rb +19 -5
- metadata +5 -4
@@ -1,82 +1,82 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'nokogiri'
|
4
|
-
require 'pathname'
|
5
|
-
require 'rake'
|
6
|
-
require 'albacore/logging'
|
7
|
-
require 'albacore/project'
|
8
|
-
require 'albacore/package'
|
9
|
-
require 'albacore/package_repo'
|
10
|
-
|
11
|
-
module Albacore::Tools
|
12
|
-
|
13
|
-
# a tuple of a package and a ref
|
14
|
-
class MatchedRef
|
15
|
-
attr_accessor :package, :ref
|
16
|
-
def initialize package, ref
|
17
|
-
@package, @ref = package, ref
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
module RestoreHintPaths
|
22
|
-
class Config
|
23
|
-
attr_accessor :asmname_to_package
|
24
|
-
attr_accessor :lang
|
25
|
-
attr_accessor :projs, :dry_run
|
26
|
-
def initialize
|
27
|
-
@asmname_to_package = {}
|
28
|
-
@lang = 'fs'
|
29
|
-
end
|
30
|
-
end
|
31
|
-
class Task
|
32
|
-
include Logging
|
33
|
-
def initialize config
|
34
|
-
@config = config
|
35
|
-
end
|
36
|
-
def execute
|
37
|
-
ps = map_file_list(@config.projs) || find_projs_in_need(@config.lang)
|
38
|
-
ps.each do |proj|
|
39
|
-
info "fixing #{proj}"
|
40
|
-
fix_refs proj, @config.asmname_to_package
|
41
|
-
info "saving #{proj}"
|
42
|
-
proj.save unless @config.dry_run
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
def find_projs_in_need ext
|
48
|
-
map_file_list FileList["./src/**/*.#{ext}proj"]
|
49
|
-
end
|
50
|
-
def map_file_list fl
|
51
|
-
return nil if fl.nil?
|
52
|
-
fl.collect{ |path| Project.new(path) }.
|
53
|
-
keep_if{ |fp| fp.has_faulty_refs? && fp.has_packages_config? }
|
54
|
-
end
|
55
|
-
def matched_refs refs, packages, asmname_to_package = {}
|
56
|
-
refs.collect { |ref|
|
57
|
-
ref_include_id = asmname_to_package.fetch(ref['Include'].split(',')[0]) { |k| k }
|
58
|
-
found_pkg = packages[ref_include_id]
|
59
|
-
debug "ref[Include] = #{ref_include_id}, package: #{found_pkg}" unless found_pkg.nil?
|
60
|
-
debug "NOMATCH: #{ref_include_id}" if found_pkg.nil?
|
61
|
-
found_pkg.nil? ? nil : MatchedRef.new(found_pkg, ref)
|
62
|
-
}.keep_if { |match| not match.nil? }
|
63
|
-
end
|
64
|
-
|
65
|
-
def fix_refs p, asmname_to_package = {}
|
66
|
-
packages = Hash[p.find_packages.collect { |v| [v.id, v] }]
|
67
|
-
trace "packages: #{packages}"
|
68
|
-
matches = matched_refs p.faulty_refs, packages, asmname_to_package
|
69
|
-
trace "matches: #{matches}"
|
70
|
-
matches.each{ |match|
|
71
|
-
dll_path = Pathname.new match.package.path
|
72
|
-
proj_path = Pathname.new p.proj_path_base
|
73
|
-
hint_path = Nokogiri::XML::Node.new "HintPath", p.proj_xml_node
|
74
|
-
hint_path.content = dll_path.relative_path_from proj_path
|
75
|
-
match.ref << hint_path
|
76
|
-
debug "For #{p.asmname} => hint_path: #{hint_path}"
|
77
|
-
}
|
78
|
-
trace p.proj_xml_node
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'pathname'
|
5
|
+
require 'rake'
|
6
|
+
require 'albacore/logging'
|
7
|
+
require 'albacore/project'
|
8
|
+
require 'albacore/package'
|
9
|
+
require 'albacore/package_repo'
|
10
|
+
|
11
|
+
module Albacore::Tools
|
12
|
+
|
13
|
+
# a tuple of a package and a ref
|
14
|
+
class MatchedRef
|
15
|
+
attr_accessor :package, :ref
|
16
|
+
def initialize package, ref
|
17
|
+
@package, @ref = package, ref
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module RestoreHintPaths
|
22
|
+
class Config
|
23
|
+
attr_accessor :asmname_to_package
|
24
|
+
attr_accessor :lang
|
25
|
+
attr_accessor :projs, :dry_run
|
26
|
+
def initialize
|
27
|
+
@asmname_to_package = {}
|
28
|
+
@lang = 'fs'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
class Task
|
32
|
+
include Logging
|
33
|
+
def initialize config
|
34
|
+
@config = config
|
35
|
+
end
|
36
|
+
def execute
|
37
|
+
ps = map_file_list(@config.projs) || find_projs_in_need(@config.lang)
|
38
|
+
ps.each do |proj|
|
39
|
+
info "fixing #{proj}"
|
40
|
+
fix_refs proj, @config.asmname_to_package
|
41
|
+
info "saving #{proj}"
|
42
|
+
proj.save unless @config.dry_run
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
def find_projs_in_need ext
|
48
|
+
map_file_list FileList["./src/**/*.#{ext}proj"]
|
49
|
+
end
|
50
|
+
def map_file_list fl
|
51
|
+
return nil if fl.nil?
|
52
|
+
fl.collect{ |path| Project.new(path) }.
|
53
|
+
keep_if{ |fp| fp.has_faulty_refs? && fp.has_packages_config? }
|
54
|
+
end
|
55
|
+
def matched_refs refs, packages, asmname_to_package = {}
|
56
|
+
refs.collect { |ref|
|
57
|
+
ref_include_id = asmname_to_package.fetch(ref['Include'].split(',')[0]) { |k| k }
|
58
|
+
found_pkg = packages[ref_include_id]
|
59
|
+
debug "ref[Include] = #{ref_include_id}, package: #{found_pkg}" unless found_pkg.nil?
|
60
|
+
debug "NOMATCH: #{ref_include_id}" if found_pkg.nil?
|
61
|
+
found_pkg.nil? ? nil : MatchedRef.new(found_pkg, ref)
|
62
|
+
}.keep_if { |match| not match.nil? }
|
63
|
+
end
|
64
|
+
|
65
|
+
def fix_refs p, asmname_to_package = {}
|
66
|
+
packages = Hash[p.find_packages.collect { |v| [v.id, v] }]
|
67
|
+
trace "packages: #{packages}"
|
68
|
+
matches = matched_refs p.faulty_refs, packages, asmname_to_package
|
69
|
+
trace "matches: #{matches}"
|
70
|
+
matches.each{ |match|
|
71
|
+
dll_path = Pathname.new match.package.path
|
72
|
+
proj_path = Pathname.new p.proj_path_base
|
73
|
+
hint_path = Nokogiri::XML::Node.new "HintPath", p.proj_xml_node
|
74
|
+
hint_path.content = dll_path.relative_path_from proj_path
|
75
|
+
match.ref << hint_path
|
76
|
+
debug "For #{p.asmname} => hint_path: #{hint_path}"
|
77
|
+
}
|
78
|
+
trace p.proj_xml_node
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
data/lib/albacore/tools/zippy.rb
CHANGED
@@ -1,61 +1,61 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'zip'
|
3
|
-
require "albacore"
|
4
|
-
|
5
|
-
# https://github.com/aussiegeek/rubyzip/blob/master/samples/example_recursive.rb
|
6
|
-
# This is a simple example which uses rubyzip to
|
7
|
-
# recursively generate a zip file from the contents of
|
8
|
-
# a specified directory. The directory itself is not
|
9
|
-
# included in the archive, rather just its contents.
|
10
|
-
#
|
11
|
-
# Usage:
|
12
|
-
# dir_to_zip = "/tmp/input"
|
13
|
-
# out_file = "/tmp/out.zip"
|
14
|
-
# zf = Zippy.new dir_to_zip, out_file
|
15
|
-
# zf.write
|
16
|
-
#
|
17
|
-
# Or:
|
18
|
-
# z = Zippy.new(directory_to_zip, output_file) { |f| f.include? 'html' }
|
19
|
-
# z.write
|
20
|
-
class Zippy
|
21
|
-
|
22
|
-
# Initialize with the directory to zip and the location of the output archive.
|
23
|
-
#
|
24
|
-
# @param [String] input_dir The location to zip as a file system relative or
|
25
|
-
# absolute path
|
26
|
-
#
|
27
|
-
# @param [String] out_file The path of the output zip file that is generated.
|
28
|
-
# @param [Block] filter An optional block with a filter that is to return true
|
29
|
-
# if the file is to be added.
|
30
|
-
def initialize input_dir, out_file, &filter
|
31
|
-
@input_dir = input_dir.
|
32
|
-
gsub(/[\/\\]$/, '').
|
33
|
-
gsub(/\\/, '/')
|
34
|
-
@out_file = out_file
|
35
|
-
@filter = block_given? ? filter : lambda { |f| true }
|
36
|
-
end
|
37
|
-
|
38
|
-
# Zips the input directory.
|
39
|
-
def write
|
40
|
-
FileUtils.rm @out_file if File.exists? @out_file
|
41
|
-
in_progress "Writing archive #{@out_file} from #{@input_dir}" do
|
42
|
-
Zip::File.open @out_file, Zip::File::CREATE do |zipfile|
|
43
|
-
Dir["#{@input_dir}/**/**"].reject{ |f| f == @out_file || !@filter.call(f) }.each do |file|
|
44
|
-
progress "deflating #{file}"
|
45
|
-
zipfile.add(file.sub(@input_dir + '/', ''), file)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
def in_progress msg, &block
|
53
|
-
Albacore.publish :start_progress, OpenStruct.new(:message => msg)
|
54
|
-
yield
|
55
|
-
Albacore.publish :finish_progress, OpenStruct.new(:message => msg)
|
56
|
-
end
|
57
|
-
|
58
|
-
def progress msg
|
59
|
-
Albacore.publish :progress, OpenStruct.new(:message => msg)
|
60
|
-
end
|
61
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'zip'
|
3
|
+
require "albacore"
|
4
|
+
|
5
|
+
# https://github.com/aussiegeek/rubyzip/blob/master/samples/example_recursive.rb
|
6
|
+
# This is a simple example which uses rubyzip to
|
7
|
+
# recursively generate a zip file from the contents of
|
8
|
+
# a specified directory. The directory itself is not
|
9
|
+
# included in the archive, rather just its contents.
|
10
|
+
#
|
11
|
+
# Usage:
|
12
|
+
# dir_to_zip = "/tmp/input"
|
13
|
+
# out_file = "/tmp/out.zip"
|
14
|
+
# zf = Zippy.new dir_to_zip, out_file
|
15
|
+
# zf.write
|
16
|
+
#
|
17
|
+
# Or:
|
18
|
+
# z = Zippy.new(directory_to_zip, output_file) { |f| f.include? 'html' }
|
19
|
+
# z.write
|
20
|
+
class Zippy
|
21
|
+
|
22
|
+
# Initialize with the directory to zip and the location of the output archive.
|
23
|
+
#
|
24
|
+
# @param [String] input_dir The location to zip as a file system relative or
|
25
|
+
# absolute path
|
26
|
+
#
|
27
|
+
# @param [String] out_file The path of the output zip file that is generated.
|
28
|
+
# @param [Block] filter An optional block with a filter that is to return true
|
29
|
+
# if the file is to be added.
|
30
|
+
def initialize input_dir, out_file, &filter
|
31
|
+
@input_dir = input_dir.
|
32
|
+
gsub(/[\/\\]$/, '').
|
33
|
+
gsub(/\\/, '/')
|
34
|
+
@out_file = out_file
|
35
|
+
@filter = block_given? ? filter : lambda { |f| true }
|
36
|
+
end
|
37
|
+
|
38
|
+
# Zips the input directory.
|
39
|
+
def write
|
40
|
+
FileUtils.rm @out_file if File.exists? @out_file
|
41
|
+
in_progress "Writing archive #{@out_file} from #{@input_dir}" do
|
42
|
+
Zip::File.open @out_file, Zip::File::CREATE do |zipfile|
|
43
|
+
Dir["#{@input_dir}/**/**"].reject{ |f| f == @out_file || !@filter.call(f) }.each do |file|
|
44
|
+
progress "deflating #{file}"
|
45
|
+
zipfile.add(file.sub(@input_dir + '/', ''), file)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
def in_progress msg, &block
|
53
|
+
Albacore.publish :start_progress, OpenStruct.new(:message => msg)
|
54
|
+
yield
|
55
|
+
Albacore.publish :finish_progress, OpenStruct.new(:message => msg)
|
56
|
+
end
|
57
|
+
|
58
|
+
def progress msg
|
59
|
+
Albacore.publish :progress, OpenStruct.new(:message => msg)
|
60
|
+
end
|
61
|
+
end
|
data/lib/albacore/version.rb
CHANGED
data/spec/nugets_restore_spec.rb
CHANGED
@@ -14,6 +14,21 @@ shared_context 'cmd context' do
|
|
14
14
|
subject { cmd.execute ; cmd.mono_parameters }
|
15
15
|
end
|
16
16
|
|
17
|
+
describe Albacore::NugetsRestore::Config, 'when setting #source' do
|
18
|
+
it 'should allow setting a string' do
|
19
|
+
subject.source = 'hello'
|
20
|
+
expect(subject.source).not_to be_a String
|
21
|
+
expect(subject.source).to be_a OpenStruct
|
22
|
+
expect(subject.source.name).to eq(Digest::MD5.hexdigest('hello'))
|
23
|
+
end
|
24
|
+
it 'should allow setting an OpenStruct' do
|
25
|
+
subject.source = OpenStruct.new :name => 'a', :uri => 'https://example.com/nugetfeed.svc'
|
26
|
+
expect(subject.source).not_to be_a String
|
27
|
+
expect(subject.source).to be_a OpenStruct
|
28
|
+
expect(subject.source.name).to eq 'a'
|
29
|
+
expect(subject.source.uri).to eq 'https://example.com/nugetfeed.svc'
|
30
|
+
end
|
31
|
+
end
|
17
32
|
|
18
33
|
describe Albacore::NugetsRestore::RemoveSourceCmd, 'when calling #execute should remove source' do
|
19
34
|
let(:cmd) { Albacore::NugetsRestore::RemoveSourceCmd.new 'nuget.exe', hafsrc }
|
@@ -32,19 +47,18 @@ describe Albacore::NugetsRestore::AddSourceCmd, 'when calling #execute should re
|
|
32
47
|
end
|
33
48
|
|
34
49
|
describe Albacore::NugetsRestore::Cmd, 'when calling #execute with specific source' do
|
35
|
-
|
36
|
-
let (:cmd) {
|
50
|
+
let (:cmd) do
|
37
51
|
cfg = Albacore::NugetsRestore::Config.new
|
38
52
|
cfg.out = 'src/packages'
|
39
53
|
cfg.add_parameter '-Source'
|
40
54
|
cfg.add_parameter 'http://localhost:8081'
|
41
55
|
|
42
56
|
cmd = Albacore::NugetsRestore::Cmd.new nil, 'NuGet.exe', cfg.opts_for_pkgcfg('src/Proj/packages.config')
|
43
|
-
|
57
|
+
end
|
44
58
|
|
45
|
-
let (:path)
|
59
|
+
let (:path) do
|
46
60
|
Albacore::Paths.normalise_slashes('src/Proj/packages.config')
|
47
|
-
|
61
|
+
end
|
48
62
|
|
49
63
|
include_context 'cmd context'
|
50
64
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: albacore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0.pre.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henrik Feldt
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-11-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -162,6 +162,7 @@ files:
|
|
162
162
|
- lib/albacore/tasks/README.md
|
163
163
|
- lib/albacore/tasks/albasemver.rb
|
164
164
|
- lib/albacore/tasks/projectlint.rb
|
165
|
+
- lib/albacore/tasks/release.rb
|
165
166
|
- lib/albacore/tasks/versionizer.rb
|
166
167
|
- lib/albacore/tools.rb
|
167
168
|
- lib/albacore/tools/fluent_migrator.rb
|
@@ -382,9 +383,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
382
383
|
version: '0'
|
383
384
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
384
385
|
requirements:
|
385
|
-
- - "
|
386
|
+
- - ">"
|
386
387
|
- !ruby/object:Gem::Version
|
387
|
-
version:
|
388
|
+
version: 1.3.1
|
388
389
|
requirements: []
|
389
390
|
rubyforge_project: albacore
|
390
391
|
rubygems_version: 2.2.2
|