vendorificator 0.1.0 → 0.1.1
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/.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
|