vendorer 0.1.10 → 0.1.11

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vendorer (0.1.10)
4
+ vendorer (0.1.11)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
data/Readme.md CHANGED
@@ -72,6 +72,7 @@ Author
72
72
  ### [Contributors](http://github.com/grosser/vendorer/contributors)
73
73
  - [Kurtis Rainbolt-Greene](https://github.com/krainboltgreene)
74
74
  - [Ivan K.](https://github.com/divout)
75
+ - [Matt Brictson](https://github.com/mbrictson)
75
76
 
76
77
  [Michael Grosser](http://grosser.it)<br/>
77
78
  michael@grosser.it<br/>
@@ -1,3 +1,3 @@
1
1
  class Vendorer
2
- VERSION = '0.1.10'
2
+ VERSION = '0.1.11'
3
3
  end
data/lib/vendorer.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'tempfile'
2
+ require 'tmpdir'
2
3
 
3
4
  class Vendorer
4
5
  def initialize(options={})
@@ -10,28 +11,31 @@ class Vendorer
10
11
  eval(content, nil, 'Vendorfile', 1)
11
12
  end
12
13
 
13
- def file(path, url)
14
+ def file(path, url=nil)
14
15
  path = complete_path(path)
15
16
  update_or_not path do
16
17
  run "mkdir -p #{File.dirname(path)}"
17
- run "curl '#{url}' -L -o #{path}"
18
- raise "Downloaded empty file" unless File.exist?(path)
18
+ if @copy_from_url
19
+ copy_from_path(path, url)
20
+ else
21
+ run "curl '#{url}' -L -o #{path}"
22
+ raise "Downloaded empty file" unless File.exist?(path)
23
+ end
19
24
  yield path if block_given?
20
25
  end
21
26
  end
22
27
 
23
28
  def folder(path, url=nil, options={})
24
- if url
29
+ if @copy_from_path or url
25
30
  path = complete_path(path)
26
31
  update_or_not path do
27
32
  run "rm -rf #{path}"
28
33
  run "mkdir -p #{File.dirname(path)}"
29
- run "git clone '#{url}' #{path}"
30
- if commit = (options[:ref] || options[:tag] || options[:branch])
31
- run "cd #{path} && git checkout '#{commit}'"
34
+ if @copy_from_path
35
+ copy_from_path(path, url)
36
+ else
37
+ download_repository(url, path, options)
32
38
  end
33
- run("cd #{path} && git submodule update --init --recursive")
34
- run "rm -rf #{path}/.git"
35
39
  yield path if block_given?
36
40
  end
37
41
  else
@@ -59,6 +63,15 @@ class Vendorer
59
63
  File.open('Vendorfile', 'w') { |f| f.write(examples.strip) }
60
64
  end
61
65
 
66
+ def from(url, options={})
67
+ Dir.mktmpdir do |tmpdir|
68
+ download_repository url, tmpdir, options
69
+ @copy_from_url, @copy_from_path = url, tmpdir
70
+ yield
71
+ @copy_from_url = @copy_from_path = nil
72
+ end
73
+ end
74
+
62
75
  private
63
76
 
64
77
  def update_or_not(path)
@@ -84,4 +97,20 @@ class Vendorer
84
97
  def complete_path(path)
85
98
  File.join(@sub_path + [path])
86
99
  end
100
+
101
+ def download_repository(url, to, options)
102
+ run "git clone '#{url}' #{to}"
103
+ if commit = (options[:ref] || options[:tag] || options[:branch])
104
+ run "cd #{to} && git checkout '#{commit}'"
105
+ end
106
+ run "cd #{to} && git submodule update --init --recursive"
107
+ run "rm -rf #{to}/.git"
108
+ end
109
+
110
+ def copy_from_path(dest_path, src_path)
111
+ src_path ||= dest_path
112
+ copy_from = File.join(@copy_from_path, src_path)
113
+ raise "'#{src_path}' not found in #{@copy_from_url}" unless File.exist?(copy_from)
114
+ run "cp -Rp #{copy_from} #{dest_path}"
115
+ end
87
116
  end
@@ -13,7 +13,7 @@ describe Vendorer do
13
13
  end
14
14
 
15
15
  def write(file, content)
16
- File.open(file,'w'){|f| f.write(content) }
16
+ File.open(file, 'w') { |f| f.write(content) }
17
17
  end
18
18
 
19
19
  def read(file)
@@ -138,9 +138,9 @@ describe Vendorer do
138
138
  simple_vendorfile
139
139
  vendorer
140
140
  run 'chmod 711 public/javascripts/jquery.min.js'
141
- lambda{
141
+ lambda {
142
142
  vendorer 'update'
143
- }.should_not change{ run('ls -l public/javascripts').split("\n") }
143
+ }.should_not change { run('ls -l public/javascripts').split("\n") }
144
144
  end
145
145
  end
146
146
 
@@ -170,7 +170,7 @@ describe Vendorer do
170
170
  write 'Vendorfile', "folder 'vendor/plugins/parallel_tests', 'https://github.com/grosser/parallel_tests.git'"
171
171
  vendorer
172
172
  ls('vendor/plugins').should == ["parallel_tests"]
173
- read('vendor/plugins/parallel_tests/Gemfile').should include('parallel')
173
+ read('vendor/plugins/parallel_tests/Gemfile').should include('cucumber')
174
174
  end
175
175
 
176
176
  it "reports errors when the Vendorfile is broken" do
@@ -280,7 +280,7 @@ describe Vendorer do
280
280
 
281
281
  it "can update a nested file" do
282
282
  vendorer
283
- write('public/javascripts/jquery.js','Foo')
283
+ write('public/javascripts/jquery.js', 'Foo')
284
284
  vendorer 'update'
285
285
  read('public/javascripts/jquery.js').should include('jQuery')
286
286
  end
@@ -293,8 +293,8 @@ describe Vendorer do
293
293
  file 'xxx.js', 'http://code.jquery.com/jquery-latest.min.js'
294
294
  "
295
295
  vendorer
296
- write('public/javascripts/jquery.js','Foo')
297
- write('xxx.js','Foo')
296
+ write('public/javascripts/jquery.js', 'Foo')
297
+ write('xxx.js', 'Foo')
298
298
  vendorer 'update public/javascripts'
299
299
  read('xxx.js').should == "Foo"
300
300
  read('public/javascripts/jquery.js').should include('jQuery')
@@ -330,9 +330,10 @@ describe Vendorer do
330
330
  run "cd #{folder} && git commit -am 'initial'"
331
331
  end
332
332
 
333
- let(:vendorer){
333
+ let(:vendorer) {
334
334
  v = Vendorer.new
335
- def v.puts(x);end # silence
335
+ def v.puts(x) # silence
336
+ end
336
337
  v
337
338
  }
338
339
 
@@ -422,7 +423,7 @@ describe Vendorer do
422
423
 
423
424
  it "created Vendorfile contains commented out examples" do
424
425
  Vendorer.new('init').init
425
- read("Vendorfile").split("\n").each{|l| l.should =~ /^(#|\s*$)/ }
426
+ read("Vendorfile").split("\n").each { |l| l.should =~ /^(#|\s*$)/ }
426
427
  end
427
428
 
428
429
  it "created Vendorfile contains many examples" do
@@ -441,4 +442,106 @@ describe Vendorer do
441
442
  end
442
443
  end
443
444
  end
445
+
446
+ describe "#from" do
447
+ it "returns to normal after the block" do
448
+ write "Vendorfile", "
449
+ from '../../.git' do
450
+ file 'Readme.md'
451
+ end
452
+ file 'jquery.js', 'http://code.jquery.com/jquery-latest.min.js'
453
+ "
454
+ vendorer
455
+ ls(".").should =~ ['Readme.md', 'Vendorfile', 'jquery.js']
456
+ read('jquery.js').should include("jQuery")
457
+ end
458
+
459
+ it "can checkout a specific version" do
460
+ write "Vendorfile", "
461
+ from '../../.git', :tag => 'v0.1.0' do
462
+ file 'lib/vendorer/version.rb'
463
+ end
464
+ "
465
+ vendorer
466
+ read('lib/vendorer/version.rb').should include("0.1.0")
467
+ end
468
+
469
+ context "with file" do
470
+ it "copies" do
471
+ write "Vendorfile", "
472
+ from '../../.git' do
473
+ file 'Readme.md'
474
+ end
475
+ "
476
+ vendorer
477
+ ls(".").should == ['Readme.md', 'Vendorfile']
478
+ end
479
+
480
+ it "copies to/from a nested location" do
481
+ write "Vendorfile", "
482
+ from '../../.git' do
483
+ file 'foo/bar/renamed.rb', 'lib/vendorer.rb'
484
+ end
485
+ "
486
+ vendorer
487
+ ls(".").should == ['foo', 'Vendorfile']
488
+ ls("./foo/bar").should == ['renamed.rb']
489
+ end
490
+
491
+ it "renames" do
492
+ write "Vendorfile", "
493
+ from '../../.git' do
494
+ file 'Readme.renamed', 'Readme.md'
495
+ end
496
+ "
497
+ vendorer
498
+ ls(".").should == ['Readme.renamed', 'Vendorfile']
499
+ end
500
+ end
501
+
502
+ context "with folder" do
503
+ it "copies" do
504
+ write "Vendorfile", "
505
+ from '../../.git' do
506
+ folder 'lib'
507
+ end
508
+ "
509
+ vendorer
510
+ ls(".").should == ['lib', 'Vendorfile']
511
+ ls("./lib").should == ['vendorer', 'vendorer.rb']
512
+ end
513
+
514
+ it "copies to/from a nested location" do
515
+ write "Vendorfile", "
516
+ from '../../.git' do
517
+ folder 'foo/bar', 'lib/vendorer'
518
+ end
519
+ "
520
+ vendorer
521
+ ls(".").should == ['foo', 'Vendorfile']
522
+ ls("./foo/bar").should == ['version.rb']
523
+ end
524
+
525
+ it "renames" do
526
+ write "Vendorfile", "
527
+ from '../../.git' do
528
+ folder 'foo', 'lib'
529
+ end
530
+ "
531
+ vendorer
532
+ ls(".").should == ['foo', 'Vendorfile']
533
+ ls("./foo").should == ['vendorer', 'vendorer.rb']
534
+ end
535
+ end
536
+
537
+ it "gives 'not found' error for non-existent file" do
538
+ write "Vendorfile", "
539
+ from '../../.git', :tag => 'b1e6460' do
540
+ file 'bogus'
541
+ end
542
+ "
543
+ output = vendorer '', :raise => true
544
+ output.should include("'bogus' not found in ../../.git")
545
+ end
546
+ end
444
547
  end
metadata CHANGED
@@ -1,32 +1,23 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: vendorer
3
- version: !ruby/object:Gem::Version
4
- hash: 15
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.11
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 10
10
- version: 0.1.10
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Michael Grosser
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-02-28 00:00:00 Z
12
+ date: 2012-04-06 00:00:00.000000000 Z
19
13
  dependencies: []
20
-
21
14
  description:
22
15
  email: michael@grosser.it
23
- executables:
16
+ executables:
24
17
  - vendorer
25
18
  extensions: []
26
-
27
19
  extra_rdoc_files: []
28
-
29
- files:
20
+ files:
30
21
  - .travis.yml
31
22
  - Gemfile
32
23
  - Gemfile.lock
@@ -39,37 +30,34 @@ files:
39
30
  - spec/vendorer_spec.rb
40
31
  - vendorer.gemspec
41
32
  homepage: http://github.com/grosser/vendorer
42
- licenses:
33
+ licenses:
43
34
  - MIT
44
35
  post_install_message:
45
36
  rdoc_options: []
46
-
47
- require_paths:
37
+ require_paths:
48
38
  - lib
49
- required_ruby_version: !ruby/object:Gem::Requirement
39
+ required_ruby_version: !ruby/object:Gem::Requirement
50
40
  none: false
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- hash: 3
55
- segments:
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ segments:
56
46
  - 0
57
- version: "0"
58
- required_rubygems_version: !ruby/object:Gem::Requirement
47
+ hash: 1583849555704471697
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
49
  none: false
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- hash: 3
64
- segments:
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ segments:
65
55
  - 0
66
- version: "0"
56
+ hash: 1583849555704471697
67
57
  requirements: []
68
-
69
58
  rubyforge_project:
70
59
  rubygems_version: 1.8.15
71
60
  signing_key:
72
61
  specification_version: 3
73
62
  summary: Keep your vendor files up to date
74
63
  test_files: []
75
-