albacore 2.1.2 → 2.2.0.pre.beta
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.
- 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
|