albacore 2.0.0.rc.4 → 2.0.0.rc.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +51 -2
- data/lib/albacore/cross_platform_cmd.rb +8 -4
- data/lib/albacore/nuget_model.rb +5 -0
- data/lib/albacore/task_types/nugets_pack.rb +10 -1
- data/lib/albacore/task_types/nugets_restore.rb +7 -1
- data/lib/albacore/tasks/versionizer.rb +4 -4
- data/lib/albacore/version.rb +1 -1
- data/spec/cross_platform_cmd_spec.rb +50 -0
- data/spec/tasks/versionizer_spec.rb +17 -0
- metadata +5 -3
data/README.md
CHANGED
@@ -31,8 +31,14 @@ build will use. Create a new file, named `Gemfile`. This file should look like
|
|
31
31
|
this:
|
32
32
|
|
33
33
|
source 'http://rubygems.org'
|
34
|
-
gem 'albacore', '2.0.0.rc.
|
34
|
+
gem 'albacore', '2.0.0.rc.5'
|
35
35
|
|
36
|
+
When setting up your build you need to ensure it is reproducible. Bundler
|
37
|
+
allows you to lock down all gems that albacore depend on to their specific
|
38
|
+
versions, ensuring that your peers can re-run the same rake script you just
|
39
|
+
built and that it works well on your continous integration server.
|
40
|
+
|
41
|
+
The first step after installing `bundler` is to create a `Gemfile` next to your
|
36
42
|
Now, install albacore from this repository by running:
|
37
43
|
|
38
44
|
bundle
|
@@ -90,7 +96,7 @@ task :default => :create_nugets
|
|
90
96
|
|
91
97
|
You can now run:
|
92
98
|
|
93
|
-
rake
|
99
|
+
bundle exec rake
|
94
100
|
|
95
101
|
## Contributing
|
96
102
|
|
@@ -101,6 +107,49 @@ You can now run:
|
|
101
107
|
a. Make sure TravisCI is OK with it
|
102
108
|
b. Describe your PR in English.
|
103
109
|
|
110
|
+
## DSL
|
111
|
+
|
112
|
+
When you `require 'albacore'` you will get a few methods added and available for
|
113
|
+
use within your Rakefile, these are specified in CrossPlatformCmd, and are as
|
114
|
+
follows:
|
115
|
+
|
116
|
+
- `#system`
|
117
|
+
- `#sh`
|
118
|
+
- `#shie`
|
119
|
+
- `#system_control`
|
120
|
+
- `#which`
|
121
|
+
- `#normalise_slashes`
|
122
|
+
- `#chdir (work_dir : ?string) (block : Block<unit, x>) : x` - takes a string work dir to be
|
123
|
+
in and a block of ruby to execute in that work dir and returns the return
|
124
|
+
value of block.
|
125
|
+
|
126
|
+
|
127
|
+
## Debugging Albacore scripts
|
128
|
+
|
129
|
+
You can call the rakefile as such:
|
130
|
+
|
131
|
+
```
|
132
|
+
DEBUG=true rake
|
133
|
+
```
|
134
|
+
|
135
|
+
This changes the behaviour of the logging to output debug verbosity. It also
|
136
|
+
changes some tasks to override Rakefile settings for verbosity and prints more
|
137
|
+
debug information. I've tried to keep the information structured.
|
138
|
+
|
139
|
+
If you're reporting a bug or need crash information to file a bug report, you
|
140
|
+
can append the `--trace` flag to the invocation.
|
141
|
+
|
142
|
+
```
|
143
|
+
DEBUG=true rake --trace
|
144
|
+
```
|
145
|
+
|
146
|
+
## Tips and Tricks
|
147
|
+
|
148
|
+
rake script:
|
149
|
+
|
150
|
+
```
|
151
|
+
source "https://rubygems.org"
|
152
|
+
|
104
153
|
## Task Types
|
105
154
|
|
106
155
|
Task types are the pre-built factories for rake tasks. They often take care of
|
@@ -60,6 +60,9 @@ module Albacore
|
|
60
60
|
# output: whether to supress the command's output (default false)
|
61
61
|
# out: output pipe
|
62
62
|
# err: error pipe
|
63
|
+
# clr_command:
|
64
|
+
# whether to include 'mono' in front of the things to run
|
65
|
+
# if the command is a clr command
|
63
66
|
#
|
64
67
|
def system *cmd, &block
|
65
68
|
raise ArgumentError, "cmd is nil" if cmd.nil? # don't allow nothing to be passed
|
@@ -69,9 +72,10 @@ module Albacore
|
|
69
72
|
output: true,
|
70
73
|
work_dir: FileUtils.pwd,
|
71
74
|
out: Albacore.application.output,
|
72
|
-
err: Albacore.application.output_err
|
75
|
+
err: Albacore.application.output_err,
|
76
|
+
clr_command: false)
|
73
77
|
|
74
|
-
exe, pars, printable, block = prepare_command cmd, &block
|
78
|
+
exe, pars, printable, block = prepare_command cmd, (opts.get('clr_command')), &block
|
75
79
|
|
76
80
|
# TODO: figure out how to interleave output and error streams
|
77
81
|
out, _, inmem = opts.get(:out), opts.get(:err), StringIO.new
|
@@ -231,10 +235,10 @@ module Albacore
|
|
231
235
|
|
232
236
|
private
|
233
237
|
|
234
|
-
def prepare_command cmd, &block
|
238
|
+
def prepare_command cmd, clr_command = false, &block
|
239
|
+
cmd = cmd.unshift 'mono' if clr_command && ! ::Albacore.windows?
|
235
240
|
pars = cmd[1..-1].flatten
|
236
241
|
raise ArgumentError, "arguments 1..-1 must be an array" unless pars.is_a? Array
|
237
|
-
|
238
242
|
exe, pars = ::Albacore::Paths.normalise cmd[0], pars
|
239
243
|
printable = %Q{#{exe} #{pars.join(' ')}}
|
240
244
|
handler = block_given? ? block : handler_with_message(printable)
|
data/lib/albacore/nuget_model.rb
CHANGED
@@ -91,6 +91,11 @@ end})
|
|
91
91
|
# gets the framework assemblies for this package
|
92
92
|
nuspec_field :framework_assemblies
|
93
93
|
|
94
|
+
# (v2.5 or above) Specifies the minimum version of the NuGet client that
|
95
|
+
# can install this package. This requirement is enforced by both the
|
96
|
+
# NuGet Visual Studio extension and nuget.exe program.
|
97
|
+
nuspec_field :min_client_version
|
98
|
+
|
94
99
|
# gets the field symbols that have been set
|
95
100
|
attr_reader :set_fields
|
96
101
|
|
@@ -127,6 +127,7 @@ module Albacore
|
|
127
127
|
@target = 'net40'
|
128
128
|
@symbols = false
|
129
129
|
@project_dependencies = true
|
130
|
+
@leave_nuspec = false
|
130
131
|
fill_required
|
131
132
|
end
|
132
133
|
|
@@ -145,6 +146,12 @@ module Albacore
|
|
145
146
|
@symbols = true
|
146
147
|
end
|
147
148
|
|
149
|
+
# leave the nuspec behind, don't delete it after generating it
|
150
|
+
#
|
151
|
+
def leave_nuspec
|
152
|
+
@leave_nuspec = true
|
153
|
+
end
|
154
|
+
|
148
155
|
# call this if you want to cancel 'smart' scanning of the *proj
|
149
156
|
# file for its dependencies
|
150
157
|
def no_project_dependencies
|
@@ -168,7 +175,8 @@ module Albacore
|
|
168
175
|
:files => @files,
|
169
176
|
:configuration => @configuration,
|
170
177
|
:project_dependencies => @project_dependencies,
|
171
|
-
:original_path => FileUtils.pwd
|
178
|
+
:original_path => FileUtils.pwd,
|
179
|
+
:leave_nuspec => @leave_nuspec
|
172
180
|
})
|
173
181
|
end
|
174
182
|
|
@@ -331,6 +339,7 @@ module Albacore
|
|
331
339
|
|
332
340
|
def cleanup_nuspec nuspec
|
333
341
|
return if nuspec.nil? or not File.exists? nuspec
|
342
|
+
return if @opts.get :leave_nuspec, false
|
334
343
|
File.delete nuspec
|
335
344
|
end
|
336
345
|
|
@@ -73,6 +73,7 @@ module Albacore
|
|
73
73
|
|
74
74
|
def initialize
|
75
75
|
@include_official = false
|
76
|
+
@list_spec = File.join '**', 'packages.config'
|
76
77
|
end
|
77
78
|
|
78
79
|
# the output directory passed to nuget when restoring the nugets
|
@@ -81,8 +82,13 @@ module Albacore
|
|
81
82
|
# nuget source, when other than MSFT source
|
82
83
|
attr_accessor :source
|
83
84
|
|
85
|
+
# specifies the list specification to load 'packages.config' files
|
86
|
+
# from.
|
87
|
+
#
|
88
|
+
# e.g. '**/packages.config' on *nix.
|
89
|
+
attr_accessor :list_spec
|
90
|
+
|
84
91
|
def packages
|
85
|
-
list_spec = File.join '**', 'packages.config'
|
86
92
|
# it seems FileList doesn't care about the curr dir
|
87
93
|
in_work_dir do
|
88
94
|
FileList[
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'xsemver'
|
2
2
|
require 'albacore/logging'
|
3
3
|
|
4
4
|
module Albacore
|
@@ -21,9 +21,9 @@ module Albacore
|
|
21
21
|
# code if you want something of your own.
|
22
22
|
#
|
23
23
|
def self.new *sym
|
24
|
-
ver = SemVer.find
|
24
|
+
ver = XSemVer::SemVer.find
|
25
25
|
revision = (ENV['BUILD_NUMBER'] || ver.patch).to_i
|
26
|
-
ver = SemVer.new(ver.major, ver.minor, revision, ver.special)
|
26
|
+
ver = XSemVer::SemVer.new(ver.major, ver.minor, revision, ver.special)
|
27
27
|
|
28
28
|
# extensible number w/ git hash
|
29
29
|
ENV['BUILD_VERSION'] = ver.format("%M.%m.%p%s") + ".#{commit_data()[0]}"
|
@@ -32,7 +32,7 @@ module Albacore
|
|
32
32
|
ENV['NUGET_VERSION'] = ver.format("%M.%m.%p%s")
|
33
33
|
|
34
34
|
# purely M.m.p format
|
35
|
-
ENV['FORMAL_VERSION'] = "#{ SemVer.new(ver.major, ver.minor, revision).format "%M.%m.%p"}"
|
35
|
+
ENV['FORMAL_VERSION'] = "#{ XSemVer::SemVer.new(ver.major, ver.minor, revision).format "%M.%m.%p"}"
|
36
36
|
|
37
37
|
body = proc {
|
38
38
|
Albacore.publish :build_version, OpenStruct.new(
|
data/lib/albacore/version.rb
CHANGED
@@ -15,6 +15,56 @@ describe Albacore::CrossPlatformCmd.method(:which), "what happens when calling #
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
+
describe Albacore::CrossPlatformCmd.method(:prepare_command) do
|
19
|
+
it 'should be callable' do
|
20
|
+
subject.should respond_to(:call)
|
21
|
+
end
|
22
|
+
before :all do
|
23
|
+
# noteworthy: escape spaces with backslash!
|
24
|
+
@exe, @pars, @printable, @handler = subject.call %w[echo Hello World Goodbye\ World], true
|
25
|
+
end
|
26
|
+
it "should not return nil for anything" do
|
27
|
+
{ exe: @exe,
|
28
|
+
pars: @pars,
|
29
|
+
printable: @printable,
|
30
|
+
handler: @handler
|
31
|
+
}.each do |kv|
|
32
|
+
kv[1].should_not be_nil
|
33
|
+
end
|
34
|
+
end
|
35
|
+
if Albacore.windows? then
|
36
|
+
it 'should not include mono' do
|
37
|
+
@exe.should_not include('mono')
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should return first param correctly' do
|
41
|
+
@pars[0].should eq('Hello')
|
42
|
+
end
|
43
|
+
it 'should return second param correctly' do
|
44
|
+
@pars[1].should eq('World')
|
45
|
+
end
|
46
|
+
it 'should return third param correctly' do
|
47
|
+
@pars[2].should eq('Goodbye World')
|
48
|
+
end
|
49
|
+
else
|
50
|
+
it 'should include mono' do
|
51
|
+
@exe.should include('mono')
|
52
|
+
end
|
53
|
+
it 'should return first param as "echo"' do
|
54
|
+
@pars[0].should eq('echo')
|
55
|
+
end
|
56
|
+
it 'should return second param as "Hello"' do
|
57
|
+
@pars[1].should eq('Hello')
|
58
|
+
end
|
59
|
+
it 'should return third param as "World"' do
|
60
|
+
@pars[2].should eq('World')
|
61
|
+
end
|
62
|
+
it 'should return fourth param as "Goodbye World"' do
|
63
|
+
@pars[3].should eq('Goodbye World')
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
18
68
|
[:system, :sh, :shie].each do |method|
|
19
69
|
describe Albacore::CrossPlatformCmd.method(method), "##{method}" do
|
20
70
|
describe 'its positive modes' do
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'albacore'
|
2
|
+
require 'albacore/tasks/versionizer'
|
3
|
+
|
4
|
+
describe 'adding versionizer to a class' do
|
5
|
+
class VersioniserUsage
|
6
|
+
def initialize
|
7
|
+
::Albacore::Tasks::Versionizer.new :v
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'can create a new class instance' do
|
12
|
+
begin
|
13
|
+
VersioniserUsage.new
|
14
|
+
rescue SemVerMissingError
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
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.0.0.rc.
|
4
|
+
version: 2.0.0.rc.5
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2014-01-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
@@ -270,6 +270,7 @@ files:
|
|
270
270
|
- spec/support/returnstatus/returnstatus.exe.config
|
271
271
|
- spec/support/returnstatus/returnstatus.pdb
|
272
272
|
- spec/support/sh_interceptor.rb
|
273
|
+
- spec/tasks/versionizer_spec.rb
|
273
274
|
- spec/testdata/.gitignore
|
274
275
|
- spec/testdata/DebugProject/.gitignore
|
275
276
|
- spec/testdata/DebugProject/Degbu.fsproj
|
@@ -322,7 +323,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
322
323
|
version: '0'
|
323
324
|
segments:
|
324
325
|
- 0
|
325
|
-
hash:
|
326
|
+
hash: 3795329884422946093
|
326
327
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
327
328
|
none: false
|
328
329
|
requirements:
|
@@ -378,6 +379,7 @@ test_files:
|
|
378
379
|
- spec/support/returnstatus/returnstatus.exe.config
|
379
380
|
- spec/support/returnstatus/returnstatus.pdb
|
380
381
|
- spec/support/sh_interceptor.rb
|
382
|
+
- spec/tasks/versionizer_spec.rb
|
381
383
|
- spec/testdata/.gitignore
|
382
384
|
- spec/testdata/DebugProject/.gitignore
|
383
385
|
- spec/testdata/DebugProject/Degbu.fsproj
|