rake-funnel 0.7.0.pre → 0.8.0.pre

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d6defad9023eeda6c378f699947d46e1f8a29896
4
- data.tar.gz: d2a706ac662b8bd2d5cb21b9f631dbd53f2ca937
3
+ metadata.gz: 76e33792436ca221a9d1b5ec6572d7dadd2ac3af
4
+ data.tar.gz: 4d856be39020bd11358c0a74fa0fa214c406891c
5
5
  SHA512:
6
- metadata.gz: 2ccd1cd9867b67b590a8bdb1febd0b32b4774c18a6f864c9aa546324610ef0682311dbbb8a9382c938cfe67afee099c9a56f9ad4ca87d0dfd35c423c9a5a468f
7
- data.tar.gz: f6d3e1aa1825ee501c9d13879fc6cb0d6ed21d3d5b17f1ba0dd800f988e30ebc49539775bd41dd2f66bbf38f7fecde6497f3c1bc1c1eab75bc916777573ffe68
6
+ metadata.gz: 31032a16b781db6847645733f160ff733f248d58b0d23d433970e3e8a76a3adaa7a8515f638a00fe7ea4a51d97d2593ccf9c9cc019a425c4f73a50f2d491243b
7
+ data.tar.gz: c7be402ab2563c1aa1d52bff0610d700ffd7afc57ba357687539a6f480355dbac53e525a1edeeb11f21b8747e7c30f08b78be20abae47325c2d7e7b34ba5f422
@@ -20,38 +20,55 @@ module Rake
20
20
  private
21
21
  def remove(projects, references, specs)
22
22
  Dir[*projects].map do |project|
23
- xml = REXML::Document.new(File.read(project), attribute_quote: :quote)
24
- references = remove_references(references, xml)
25
- specs = remove_specs(specs, xml)
23
+ Trace.message("Processing #{project} with references #{references} and specs #{specs}")
26
24
 
27
- save(project, xml) if (references + specs).any?
25
+ removed_references, removed_specs = with_document(project) do |xml|
26
+ [remove_references(references, xml), remove_specs(specs, xml)]
27
+ end
28
28
 
29
29
  {
30
30
  project: project,
31
- packages: resolve_package_names(references),
32
- specs: resolve_paths(project, specs)
31
+ packages: resolve_package_names(removed_references),
32
+ specs: resolve_paths(project, removed_specs)
33
33
  }
34
34
  end
35
35
  end
36
36
 
37
+ def with_document(project)
38
+ xml = REXML::Document.new(File.read(project), attribute_quote: :quote)
39
+
40
+ removed = yield(xml) if block_given?
41
+
42
+ save(project, xml) if [removed].flatten.compact.any?
43
+
44
+ removed
45
+ end
46
+
37
47
  def remove_references(references, xml)
38
- deleted = references.map do |ref|
48
+ deleted = references.map { |ref|
39
49
  query = "/Project//Reference[starts-with(lower-case(@Include), '#{ref.downcase}')]"
40
50
  xml.elements.delete_all(query)
41
- end
51
+ }
52
+ .flatten
53
+ .tap { |d| Trace.message("Removed references: #{d.inspect}") }
42
54
 
43
- deleted.flatten.map { |d|
55
+ deleted.map { |d|
44
56
  d.get_elements('/HintPath').map(&:text)
45
- }.flatten
57
+ }
58
+ .flatten
59
+ .tap { |d| Trace.message("HintPaths: #{d}") }
46
60
  end
47
61
 
48
62
  def remove_specs(specs, xml)
49
- deleted = specs.map do |glob|
63
+ deleted = specs.map { |glob|
50
64
  query = "/Project//Compile[matches(lower-case(@Include), '#{glob}')]"
51
65
  xml.elements.delete_all(query)
52
- end
66
+ }
53
67
 
54
- deleted.flatten.map { |d| d.attributes['Include'] }
68
+ deleted
69
+ .flatten
70
+ .map { |d| d.attributes['Include'] }
71
+ .tap { |d| Trace.message("Removed specs: #{d}") }
55
72
  end
56
73
 
57
74
  def save(project, xml)
@@ -87,6 +104,8 @@ module Rake
87
104
  def remove_packages(projects, packages)
88
105
  projects.each do |project|
89
106
  references = paket_references_for(project)
107
+ Trace.message("Found #{references || 'no paket.references'} for #{project}}")
108
+
90
109
  next unless references
91
110
 
92
111
  text = File.read(references)
@@ -105,6 +124,7 @@ module Rake
105
124
  end
106
125
 
107
126
  def remove(text, packages)
127
+ Trace.message("Removing packages: #{packages.inspect}")
108
128
  packages.each do |package|
109
129
  text = text.gsub(/^#{package}.*\n?/i, '')
110
130
  end
@@ -119,9 +139,9 @@ module Rake
119
139
  list(args[:references]),
120
140
  list(args[:specs]))
121
141
 
122
- delete(specs)
123
-
124
142
  PaketReferences.remove_packages(projects, list(args[:packages]) + packages)
143
+
144
+ delete(specs)
125
145
  end
126
146
 
127
147
  private
@@ -0,0 +1,15 @@
1
+ module Rake
2
+ module Funnel
3
+ module Support
4
+ class Trace
5
+ class << self
6
+ def message(message)
7
+ return unless Rake.application.options.trace
8
+
9
+ Rake.rake_output_message(message)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  module Rake
2
2
  module Funnel
3
- VERSION = '0.7.0.pre'
3
+ VERSION = '0.8.0.pre'
4
4
  end
5
5
  end
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup>
4
+ <Reference Include="Some-Ref">
5
+ <HintPath>somewhere\Sample-Ref.dll</HintPath>
6
+ </Reference>
7
+ <Reference Include="Ref-Without-HintPath" />
8
+ <Reference Include="System" />
9
+ </ItemGroup>
10
+ <ItemGroup>
11
+ <Compile Include="1Specs.cs" />
12
+ </ItemGroup>
13
+ <Choose>
14
+ <When Condition="ignored">
15
+ <ItemGroup>
16
+ <Reference Include="Paket-Ref">
17
+ <HintPath>..\..\packages\Paket-Ref\lib\net451\Paket-Ref.dll</HintPath>
18
+ <Private>True</Private>
19
+ <Paket>True</Paket>
20
+ </Reference>
21
+ </ItemGroup>
22
+ </When>
23
+ </Choose>
24
+ </Project>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup>
4
+ <Reference Include="Some-Ref">
5
+ <HintPath>somewhere\Sample-Ref.dll</HintPath>
6
+ </Reference>
7
+ <Reference Include="Ref-Without-HintPath" />
8
+ <Reference Include="System" />
9
+ </ItemGroup>
10
+ <ItemGroup>
11
+ <Compile Include="1Specs.cs" />
12
+ </ItemGroup>
13
+ <Choose>
14
+ <When Condition="ignored">
15
+ <ItemGroup>
16
+ <Reference Include="Paket-Ref">
17
+ <HintPath>..\..\packages\Paket-Ref\lib\net451\Paket-Ref.dll</HintPath>
18
+ <Private>True</Private>
19
+ <Paket>True</Paket>
20
+ </Reference>
21
+ </ItemGroup>
22
+ </When>
23
+ </Choose>
24
+ </Project>
@@ -0,0 +1,3 @@
1
+ Paket-Ref
2
+ Explicitly-Removed-Package
3
+ Untouched
@@ -1,4 +1,8 @@
1
1
  describe Rake::Funnel::Support::SpecsRemover do
2
+ before {
3
+ allow(Rake::Funnel::Support::Trace).to receive(:message)
4
+ }
5
+
2
6
  describe 'removal' do
3
7
  let(:projects) {}
4
8
  let(:references) {}
@@ -220,5 +224,30 @@ describe Rake::Funnel::Support::SpecsRemover do
220
224
  end
221
225
  end
222
226
  end
227
+
228
+ context 'multiple projects' do
229
+ let(:example) { 'multiple projects' }
230
+
231
+ before {
232
+ Dir.chdir(temp_dir) do
233
+ described_class.remove(projects: projects,
234
+ references: references,
235
+ specs: specs,
236
+ packages: packages)
237
+ end
238
+ }
239
+
240
+ describe 'projects' do
241
+ it 'should remove references' do
242
+ expect(content('Sample1.csproj')).not_to include(*references)
243
+ expect(content('Sample2.csproj')).not_to include(*references)
244
+ end
245
+
246
+ it 'should remove compiled specs' do
247
+ expect(content('Sample1.csproj')).not_to include(*%w(Specs.cs))
248
+ expect(content('Sample2.csproj')).not_to include(*%w(Specs.cs))
249
+ end
250
+ end
251
+ end
223
252
  end
224
253
  end
@@ -0,0 +1,29 @@
1
+ describe Rake::Funnel::Support::Trace do
2
+ before {
3
+ allow(Rake).to receive(:rake_output_message)
4
+ }
5
+
6
+ context 'Rake run with --trace' do
7
+ before {
8
+ allow(Rake.application.options).to receive(:trace).and_return(true)
9
+ }
10
+
11
+ it 'should write messages' do
12
+ described_class.message('foo')
13
+
14
+ expect(Rake).to have_received(:rake_output_message).with('foo')
15
+ end
16
+ end
17
+
18
+ context 'Rake run without --trace' do
19
+ before {
20
+ allow(Rake.application.options).to receive(:trace).and_return(false)
21
+ }
22
+
23
+ it 'should not write messages' do
24
+ described_class.message('foo')
25
+
26
+ expect(Rake).not_to have_received(:rake_output_message)
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake-funnel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0.pre
4
+ version: 0.8.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Groß
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-18 00:00:00.000000000 Z
11
+ date: 2015-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -126,6 +126,7 @@ files:
126
126
  - lib/rake/funnel/support/timing.rb
127
127
  - lib/rake/funnel/support/timing/report.rb
128
128
  - lib/rake/funnel/support/timing/statistics.rb
129
+ - lib/rake/funnel/support/trace.rb
129
130
  - lib/rake/funnel/support/version_info.rb
130
131
  - lib/rake/funnel/support/which.rb
131
132
  - lib/rake/funnel/support/zipper.rb
@@ -172,6 +173,9 @@ files:
172
173
  - spec/rake/funnel/support/msbuild/build_tool_spec.rb
173
174
  - spec/rake/funnel/support/msdeploy/registry_patch_spec.rb
174
175
  - spec/rake/funnel/support/patch_spec.rb
176
+ - spec/rake/funnel/support/specs_remover/multiple projects/Sample1.csproj
177
+ - spec/rake/funnel/support/specs_remover/multiple projects/Sample2.csproj
178
+ - spec/rake/funnel/support/specs_remover/multiple projects/paket.references
175
179
  - spec/rake/funnel/support/specs_remover/project-specific paket.references/Sample.csproj
176
180
  - spec/rake/funnel/support/specs_remover/project-specific paket.references/Sample.csproj.paket.references
177
181
  - spec/rake/funnel/support/specs_remover/project-specific paket.references/paket.references
@@ -187,6 +191,7 @@ files:
187
191
  - spec/rake/funnel/support/specs_remover_spec.rb
188
192
  - spec/rake/funnel/support/template_engine_spec.rb
189
193
  - spec/rake/funnel/support/timing/report_spec.rb
194
+ - spec/rake/funnel/support/trace_spec.rb
190
195
  - spec/rake/funnel/support/version_info_spec.rb
191
196
  - spec/rake/funnel/support/which_spec.rb
192
197
  - spec/rake/funnel/support/zipper_spec.rb
@@ -257,6 +262,9 @@ test_files:
257
262
  - spec/rake/funnel/support/msbuild/build_tool_spec.rb
258
263
  - spec/rake/funnel/support/msdeploy/registry_patch_spec.rb
259
264
  - spec/rake/funnel/support/patch_spec.rb
265
+ - spec/rake/funnel/support/specs_remover/multiple projects/Sample1.csproj
266
+ - spec/rake/funnel/support/specs_remover/multiple projects/Sample2.csproj
267
+ - spec/rake/funnel/support/specs_remover/multiple projects/paket.references
260
268
  - spec/rake/funnel/support/specs_remover/project-specific paket.references/Sample.csproj
261
269
  - spec/rake/funnel/support/specs_remover/project-specific paket.references/Sample.csproj.paket.references
262
270
  - spec/rake/funnel/support/specs_remover/project-specific paket.references/paket.references
@@ -272,6 +280,7 @@ test_files:
272
280
  - spec/rake/funnel/support/specs_remover_spec.rb
273
281
  - spec/rake/funnel/support/template_engine_spec.rb
274
282
  - spec/rake/funnel/support/timing/report_spec.rb
283
+ - spec/rake/funnel/support/trace_spec.rb
275
284
  - spec/rake/funnel/support/version_info_spec.rb
276
285
  - spec/rake/funnel/support/which_spec.rb
277
286
  - spec/rake/funnel/support/zipper_spec.rb