vendorificator 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.travis.yml +1 -0
- data/Gemfile +9 -1
- data/README.md +3 -0
- data/Rakefile +10 -4
- data/cucumber.yml +2 -0
- data/features/support/world_runs.rb +8 -5
- data/lib/vendorificator/cli.rb +9 -5
- data/lib/vendorificator/vendor.rb +7 -3
- data/lib/vendorificator/version.rb +1 -1
- data/spec/smoke_spec.rb +9 -0
- data/spec/spec_helper.rb +56 -0
- data/spec/vendorificator/vendor_spec.rb +71 -0
- data/vendorificator.gemspec +3 -2
- metadata +31 -8
- /data/features/fixtures/{vcr_cassettes → vcr}/vendorificator.yml +0 -0
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -4,7 +4,15 @@ source 'https://rubygems.org'
|
|
4
4
|
gemspec
|
5
5
|
|
6
6
|
group :development do
|
7
|
-
gem "
|
7
|
+
gem "ZenTest", "4.8.3"
|
8
|
+
git "git://github.com/mpasternacki/wrong.git",
|
9
|
+
:ref => 'ad025241e5772373264d1bf62168e2bf3780ccf9' do
|
10
|
+
gem 'wrong'
|
11
|
+
end
|
12
|
+
gem 'minitest-ansi'
|
13
|
+
end
|
14
|
+
|
15
|
+
group :development_workstation do
|
8
16
|
gem "pry"
|
9
17
|
gem "awesome_print"
|
10
18
|
gem "relish"
|
data/README.md
CHANGED
@@ -40,6 +40,9 @@ subcommands.
|
|
40
40
|
Run `vendor` to see list of subcommands. Run `vendor help _command_`
|
41
41
|
to get detailed description of a command.
|
42
42
|
|
43
|
+
There is a lightning talk presentation/demo slide deck online at
|
44
|
+
https://speakerdeck.com/mpasternacki/vendorificator
|
45
|
+
|
43
46
|
### Commands
|
44
47
|
|
45
48
|
Most important commands are listed here; use `vendor help` for more
|
data/Rakefile
CHANGED
@@ -4,6 +4,7 @@ require "bundler"
|
|
4
4
|
Bundler.setup
|
5
5
|
|
6
6
|
require "bundler/gem_tasks"
|
7
|
+
require 'rake/testtask'
|
7
8
|
|
8
9
|
namespace :relish do
|
9
10
|
desc "Publish documentation to Relish"
|
@@ -16,9 +17,8 @@ begin
|
|
16
17
|
require 'cucumber'
|
17
18
|
require 'cucumber/rake/task'
|
18
19
|
|
19
|
-
Cucumber
|
20
|
-
|
21
|
-
end
|
20
|
+
desc 'Run Cucumber features'
|
21
|
+
Cucumber::Rake::Task.new(:features)
|
22
22
|
rescue LoadError
|
23
23
|
desc 'Cucumber rake task not available'
|
24
24
|
task :features do
|
@@ -26,4 +26,10 @@ rescue LoadError
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
|
29
|
+
desc "Run Minitest specs"
|
30
|
+
Rake::TestTask.new :spec do |task|
|
31
|
+
task.libs << 'spec'
|
32
|
+
task.test_files = FileList['spec/**/*_spec.rb']
|
33
|
+
end
|
34
|
+
|
35
|
+
task :default => [:spec, :features]
|
data/cucumber.yml
ADDED
@@ -39,11 +39,14 @@ module Vendorificator
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def command_succeeded(print_failed=true)
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
begin
|
43
|
+
command.error!
|
44
|
+
rescue Mixlib::ShellOut::ShellCommandFailed
|
45
|
+
print_command_result if print_failed
|
46
|
+
false
|
47
|
+
else
|
48
|
+
true
|
49
|
+
end
|
47
50
|
end
|
48
51
|
|
49
52
|
def command_stdout
|
data/lib/vendorificator/cli.rb
CHANGED
@@ -33,8 +33,10 @@ module Vendorificator
|
|
33
33
|
end
|
34
34
|
|
35
35
|
desc :sync, "Download new or updated vendor files"
|
36
|
+
method_option :update, :type => :boolean, :default => false
|
36
37
|
def sync
|
37
38
|
ensure_clean_repo!
|
39
|
+
conf[:use_upstream_version] = options[:update]
|
38
40
|
Vendorificator::Config.each_module(*modules) do |mod|
|
39
41
|
say_status :module, mod.name
|
40
42
|
begin
|
@@ -47,8 +49,10 @@ module Vendorificator
|
|
47
49
|
end
|
48
50
|
|
49
51
|
desc "status", "List known vendor modules and their status"
|
52
|
+
method_option :update, :type => :boolean, :default => false
|
50
53
|
def status
|
51
54
|
say_status 'WARNING', 'Git repository is not clean', :red unless repo.clean?
|
55
|
+
conf[:use_upstream_version] = options[:update]
|
52
56
|
Vendorificator::Config.each_module(*modules) do |mod|
|
53
57
|
status_line = mod.to_s
|
54
58
|
|
@@ -136,7 +140,7 @@ EOF
|
|
136
140
|
binding.pry
|
137
141
|
end
|
138
142
|
|
139
|
-
def self.start
|
143
|
+
def self.start(*args)
|
140
144
|
# Make --git-options always quoted
|
141
145
|
if i = ARGV.index('--git-options')
|
142
146
|
ARGV[i+1,0] = '--'
|
@@ -145,15 +149,15 @@ EOF
|
|
145
149
|
if ENV['FIXTURES_DIR']
|
146
150
|
require 'vcr'
|
147
151
|
VCR.configure do |c|
|
148
|
-
c.cassette_library_dir = File.join(ENV['FIXTURES_DIR'], '
|
152
|
+
c.cassette_library_dir = File.join(ENV['FIXTURES_DIR'], 'vcr')
|
149
153
|
c.default_cassette_options = { :record => :new_episodes }
|
150
|
-
c.hook_into :
|
154
|
+
c.hook_into :webmock
|
151
155
|
end
|
152
156
|
VCR.use_cassette(ENV['VCR_CASSETTE'] || 'vendorificator') do
|
153
|
-
super
|
157
|
+
super(*args)
|
154
158
|
end
|
155
159
|
else
|
156
|
-
super
|
160
|
+
super(*args)
|
157
161
|
end
|
158
162
|
end
|
159
163
|
|
@@ -40,7 +40,7 @@ module Vendorificator
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def initialize(name, args={}, &block)
|
43
|
-
@category = args.delete(:category)
|
43
|
+
@category = args.delete(:category) if args.key?(:category)
|
44
44
|
|
45
45
|
@name = name
|
46
46
|
@args = args
|
@@ -53,7 +53,11 @@ module Vendorificator
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def category
|
56
|
-
|
56
|
+
if instance_variable_defined?(:@category)
|
57
|
+
@category
|
58
|
+
else
|
59
|
+
self.class.category
|
60
|
+
end
|
57
61
|
end
|
58
62
|
|
59
63
|
def branch_name
|
@@ -115,7 +119,7 @@ module Vendorificator
|
|
115
119
|
end
|
116
120
|
|
117
121
|
def version
|
118
|
-
@args[:version] || merged_version || upstream_version
|
122
|
+
@args[:version] || (!conf[:use_upstream_version] && merged_version) || upstream_version
|
119
123
|
end
|
120
124
|
|
121
125
|
def upstream_version
|
data/spec/smoke_spec.rb
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
Bundler.setup
|
4
|
+
|
5
|
+
require 'minitest/spec'
|
6
|
+
require 'minitest/autorun'
|
7
|
+
require 'vcr'
|
8
|
+
require 'wrong'
|
9
|
+
require 'wrong/adapters/minitest'
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'minitest/ansi'
|
13
|
+
rescue LoadError # that's fine, we'll live without it
|
14
|
+
else
|
15
|
+
MiniTest::ANSI.use! if STDOUT.tty?
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'vendorificator'
|
19
|
+
|
20
|
+
VCR.configure do |config|
|
21
|
+
config.cassette_library_dir = 'features/fixtures/vcr'
|
22
|
+
config.default_cassette_options = { :record => :new_episodes }
|
23
|
+
config.hook_into :webmock
|
24
|
+
end
|
25
|
+
|
26
|
+
Vendorificator::Config[:root_dir] = Pathname.new(__FILE__).dirname
|
27
|
+
|
28
|
+
class MiniTest::Spec
|
29
|
+
def conf
|
30
|
+
Vendorificator::Config
|
31
|
+
end
|
32
|
+
|
33
|
+
before :each do
|
34
|
+
@saved_configuration = Marshal.load(Marshal.dump(conf.configuration))
|
35
|
+
@saved_methods = conf.methods
|
36
|
+
end
|
37
|
+
|
38
|
+
after :each do
|
39
|
+
# Remove all new methods defined on Configuration over the run
|
40
|
+
conf[:methods_to_remove!] = conf.methods - @saved_methods
|
41
|
+
|
42
|
+
class << conf
|
43
|
+
Vendorificator::Config[:methods_to_remove!].each do |method_to_remove|
|
44
|
+
remove_method method_to_remove
|
45
|
+
end
|
46
|
+
end
|
47
|
+
assert { conf.methods.sort == @saved_methods.sort }
|
48
|
+
|
49
|
+
# Restore saved configuration
|
50
|
+
conf.configuration = @saved_configuration
|
51
|
+
end
|
52
|
+
|
53
|
+
def vendorfile(&block)
|
54
|
+
Vendorificator::Config.instance_eval &block
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Vendorificator
|
4
|
+
class Vendor::Categorized < Vendor
|
5
|
+
@category = :test
|
6
|
+
end
|
7
|
+
|
8
|
+
class Vendor::Custom < Vendor
|
9
|
+
@method_name = :whatever
|
10
|
+
end
|
11
|
+
|
12
|
+
describe Vendor do
|
13
|
+
describe '.category' do
|
14
|
+
it 'defaults to nil' do
|
15
|
+
assert { Vendor.category == nil }
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'can be overridden in a subclass' do
|
19
|
+
assert { Vendor::Categorized.category == :test }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '.install!' do
|
24
|
+
it "creates a method inside Vendorificator::Config" do
|
25
|
+
deny { conf.respond_to?(:categorized) }
|
26
|
+
|
27
|
+
Vendor::Categorized.install!
|
28
|
+
assert { conf.respond_to?(:categorized) }
|
29
|
+
end
|
30
|
+
|
31
|
+
it "uses @method_name for method's name if set" do
|
32
|
+
deny { conf.respond_to?(:custom) }
|
33
|
+
deny { conf.respond_to?(:whatever) }
|
34
|
+
|
35
|
+
Vendor::Custom.install!
|
36
|
+
deny { conf.respond_to?(:custom) }
|
37
|
+
assert { conf.respond_to?(:whatever) }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#category' do
|
42
|
+
it 'defaults to class attribute' do
|
43
|
+
assert { Vendor.new('test').category == nil }
|
44
|
+
assert { Vendor::Categorized.new('test').category == :test }
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'can be overriden by option' do
|
48
|
+
assert { Vendor.new('test', :category => :foo).category == :foo }
|
49
|
+
assert { Vendor::Categorized.new('test', :category => :foo).category == :foo }
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'can be reset to nil by option' do
|
53
|
+
assert { Vendor::Categorized.new('test', :category => nil).category == nil }
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'is inserted into paths and other names' do
|
57
|
+
uncategorized = Vendor.new('test')
|
58
|
+
categorized = Vendor.new('test', :category => :cat)
|
59
|
+
|
60
|
+
deny { uncategorized.branch_name.include? 'cat' }
|
61
|
+
assert { categorized.branch_name.include? 'cat' }
|
62
|
+
|
63
|
+
deny { uncategorized.path.include? 'cat' }
|
64
|
+
assert { categorized.path.include? 'cat' }
|
65
|
+
|
66
|
+
deny { uncategorized.tag_name.include? 'cat' }
|
67
|
+
assert { categorized.tag_name.include? 'cat' }
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/vendorificator.gemspec
CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |gem|
|
|
25
25
|
gem.add_development_dependency 'mixlib-shellout'
|
26
26
|
gem.add_development_dependency 'chef', '>= 10.16.0'
|
27
27
|
gem.add_development_dependency 'vcr'
|
28
|
-
gem.add_development_dependency '
|
29
|
-
gem.add_development_dependency 'wrong'
|
28
|
+
gem.add_development_dependency 'webmock'
|
29
|
+
gem.add_development_dependency 'wrong', '>= 0.7.0'
|
30
|
+
gem.add_development_dependency 'rake'
|
30
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vendorificator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: escape
|
@@ -156,7 +156,7 @@ dependencies:
|
|
156
156
|
- !ruby/object:Gem::Version
|
157
157
|
version: '0'
|
158
158
|
- !ruby/object:Gem::Dependency
|
159
|
-
name:
|
159
|
+
name: webmock
|
160
160
|
requirement: !ruby/object:Gem::Requirement
|
161
161
|
none: false
|
162
162
|
requirements:
|
@@ -173,6 +173,22 @@ dependencies:
|
|
173
173
|
version: '0'
|
174
174
|
- !ruby/object:Gem::Dependency
|
175
175
|
name: wrong
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ! '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: 0.7.0
|
182
|
+
type: :development
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
186
|
+
requirements:
|
187
|
+
- - ! '>='
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: 0.7.0
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: rake
|
176
192
|
requirement: !ruby/object:Gem::Requirement
|
177
193
|
none: false
|
178
194
|
requirements:
|
@@ -204,6 +220,7 @@ files:
|
|
204
220
|
- Rakefile
|
205
221
|
- bin/vendor
|
206
222
|
- bin/vendorify
|
223
|
+
- cucumber.yml
|
207
224
|
- examples/Vendorfile
|
208
225
|
- features/chef_cookbook.feature
|
209
226
|
- features/deprecated.feature
|
@@ -226,7 +243,7 @@ files:
|
|
226
243
|
- features/fixtures/git/testrepo/packed-refs
|
227
244
|
- features/fixtures/git/testrepo/refs/heads/.sentinel
|
228
245
|
- features/fixtures/git/testrepo/refs/tags/.sentinel
|
229
|
-
- features/fixtures/
|
246
|
+
- features/fixtures/vcr/vendorificator.yml
|
230
247
|
- features/git.feature
|
231
248
|
- features/needed.feature
|
232
249
|
- features/smoke.feature
|
@@ -251,6 +268,9 @@ files:
|
|
251
268
|
- lib/vendorificator/vendor/chef_cookbook.rb
|
252
269
|
- lib/vendorificator/vendor/git.rb
|
253
270
|
- lib/vendorificator/version.rb
|
271
|
+
- spec/smoke_spec.rb
|
272
|
+
- spec/spec_helper.rb
|
273
|
+
- spec/vendorificator/vendor_spec.rb
|
254
274
|
- vendorificator.gemspec
|
255
275
|
homepage: https://github.com/3ofcoins/vendorificator/
|
256
276
|
licenses: []
|
@@ -266,7 +286,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
266
286
|
version: '0'
|
267
287
|
segments:
|
268
288
|
- 0
|
269
|
-
hash:
|
289
|
+
hash: 1910323854215610577
|
270
290
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
271
291
|
none: false
|
272
292
|
requirements:
|
@@ -275,10 +295,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
275
295
|
version: '0'
|
276
296
|
segments:
|
277
297
|
- 0
|
278
|
-
hash:
|
298
|
+
hash: 1910323854215610577
|
279
299
|
requirements: []
|
280
300
|
rubyforge_project:
|
281
|
-
rubygems_version: 1.8.
|
301
|
+
rubygems_version: 1.8.25
|
282
302
|
signing_key:
|
283
303
|
specification_version: 3
|
284
304
|
summary: Integrate third-party vendor modules into your git repository
|
@@ -304,7 +324,7 @@ test_files:
|
|
304
324
|
- features/fixtures/git/testrepo/packed-refs
|
305
325
|
- features/fixtures/git/testrepo/refs/heads/.sentinel
|
306
326
|
- features/fixtures/git/testrepo/refs/tags/.sentinel
|
307
|
-
- features/fixtures/
|
327
|
+
- features/fixtures/vcr/vendorificator.yml
|
308
328
|
- features/git.feature
|
309
329
|
- features/needed.feature
|
310
330
|
- features/smoke.feature
|
@@ -319,3 +339,6 @@ test_files:
|
|
319
339
|
- features/tarball.feature
|
320
340
|
- features/tarball_edit.feature
|
321
341
|
- features/vendor.feature
|
342
|
+
- spec/smoke_spec.rb
|
343
|
+
- spec/spec_helper.rb
|
344
|
+
- spec/vendorificator/vendor_spec.rb
|
File without changes
|