diff --git a/.templates/ruby/default.mk b/.templates/ruby/default.mk index cec5f2805ea..b4eccdd7ed1 100644 --- a/.templates/ruby/default.mk +++ b/.templates/ruby/default.mk @@ -46,5 +46,5 @@ clean: clean-ruby .PHONY: clean clean-ruby: - rm -f .deps .linked .tested Gemfile.lock *.gem + rm -f .deps .linked .tested Gemfile.lock *.gem pkg/*.gem .PHONY: clean-ruby diff --git a/c21e/ruby/default.mk b/c21e/ruby/default.mk index cec5f2805ea..b4eccdd7ed1 100644 --- a/c21e/ruby/default.mk +++ b/c21e/ruby/default.mk @@ -46,5 +46,5 @@ clean: clean-ruby .PHONY: clean clean-ruby: - rm -f .deps .linked .tested Gemfile.lock *.gem + rm -f .deps .linked .tested Gemfile.lock *.gem pkg/*.gem .PHONY: clean-ruby diff --git a/cucumber-expressions/ruby/default.mk b/cucumber-expressions/ruby/default.mk index cec5f2805ea..b4eccdd7ed1 100644 --- a/cucumber-expressions/ruby/default.mk +++ b/cucumber-expressions/ruby/default.mk @@ -46,5 +46,5 @@ clean: clean-ruby .PHONY: clean clean-ruby: - rm -f .deps .linked .tested Gemfile.lock *.gem + rm -f .deps .linked .tested Gemfile.lock *.gem pkg/*.gem .PHONY: clean-ruby diff --git a/cucumber-messages/ruby/Makefile b/cucumber-messages/ruby/Makefile index ecaf00ac14c..7bc4f1b3584 100644 --- a/cucumber-messages/ruby/Makefile +++ b/cucumber-messages/ruby/Makefile @@ -1,9 +1,17 @@ include default.mk +default: pkg/.installable_tested + .deps: lib/cucumber/messages_pb.rb lib/cucumber/messages_pb.rb: messages.proto - protoc -I. -I/usr/local/include --ruby_out lib/cucumber $< + protoc -I. --ruby_out lib/cucumber $< + +pkg/.installable_tested: pkg/cucumber-messages-%.gem + gem install pkg/cucumber-messages-*.gem + +pkg/cucumber-messages-%.gem: .tested + rake build clean: - rm -f lib/cucumber/messages_pb.rb + rm -f lib/cucumber/messages_pb.rb pkg/.installable_tested diff --git a/cucumber-messages/ruby/cucumber-messages.gemspec b/cucumber-messages/ruby/cucumber-messages.gemspec index c618226ac48..31f94d795dd 100644 --- a/cucumber-messages/ruby/cucumber-messages.gemspec +++ b/cucumber-messages/ruby/cucumber-messages.gemspec @@ -10,6 +10,7 @@ Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.license = "MIT" s.required_ruby_version = ">= 2.3" + s.extensions = ["ext/cucumber-messages/extconf.rb".freeze] s.metadata = { 'bug_tracker_uri' => 'https://github.com/cucumber/cucumber/issues', @@ -31,6 +32,7 @@ Gem::Specification.new do |s| s.files = Dir[ 'README.md', 'LICENSE', + 'messages.proto', 'lib/**/*' ] s.test_files = Dir['spec/**/*'] diff --git a/cucumber-messages/ruby/default.mk b/cucumber-messages/ruby/default.mk index cec5f2805ea..b4eccdd7ed1 100644 --- a/cucumber-messages/ruby/default.mk +++ b/cucumber-messages/ruby/default.mk @@ -46,5 +46,5 @@ clean: clean-ruby .PHONY: clean clean-ruby: - rm -f .deps .linked .tested Gemfile.lock *.gem + rm -f .deps .linked .tested Gemfile.lock *.gem pkg/*.gem .PHONY: clean-ruby diff --git a/cucumber-messages/ruby/ext/cucumber-messages/extconf.rb b/cucumber-messages/ruby/ext/cucumber-messages/extconf.rb new file mode 100644 index 00000000000..d6429e2fcd9 --- /dev/null +++ b/cucumber-messages/ruby/ext/cucumber-messages/extconf.rb @@ -0,0 +1,43 @@ +require "mkmf" + +find_executable('protoc') +makefile_content = '' + +if File.exist?('../../lib/cucumber/messages_pb.rb') + makefile_content = %Q( +default: +\t@echo "Nothing to do" +.PHONY: clean + +install: +\t@echo "Nothing to do" +.PHONY: clean + +clean: +\t@echo "Nothing to do" +.PHONY: clean +) +else + makefile_content = %Q( +SHELL := /usr/bin/env bash + +default: ../../lib/cucumber/messages_pb.rb + +../../lib/cucumber/messages_pb.rb: ../../messages.proto +\tpushd ../.. && protoc -I. --ruby_out lib/cucumber messages.proto && popd + +install: +\t@echo "Not much to do in fact" +.PHONY: clean + +clean: +\trm ../../lib/cucumber/messages_pb.rb +.PHONY: clean +) +end + +File.open(File.join(Dir.pwd, 'Makefile'), 'w') do |file| + file.write makefile_content +end + +$makefile_created = true diff --git a/dots-formatter/ruby/default.mk b/dots-formatter/ruby/default.mk index cec5f2805ea..b4eccdd7ed1 100644 --- a/dots-formatter/ruby/default.mk +++ b/dots-formatter/ruby/default.mk @@ -46,5 +46,5 @@ clean: clean-ruby .PHONY: clean clean-ruby: - rm -f .deps .linked .tested Gemfile.lock *.gem + rm -f .deps .linked .tested Gemfile.lock *.gem pkg/*.gem .PHONY: clean-ruby diff --git a/gherkin/ruby/default.mk b/gherkin/ruby/default.mk index cec5f2805ea..b4eccdd7ed1 100644 --- a/gherkin/ruby/default.mk +++ b/gherkin/ruby/default.mk @@ -46,5 +46,5 @@ clean: clean-ruby .PHONY: clean clean-ruby: - rm -f .deps .linked .tested Gemfile.lock *.gem + rm -f .deps .linked .tested Gemfile.lock *.gem pkg/*.gem .PHONY: clean-ruby diff --git a/json-formatter/ruby/default.mk b/json-formatter/ruby/default.mk index cec5f2805ea..b4eccdd7ed1 100644 --- a/json-formatter/ruby/default.mk +++ b/json-formatter/ruby/default.mk @@ -46,5 +46,5 @@ clean: clean-ruby .PHONY: clean clean-ruby: - rm -f .deps .linked .tested Gemfile.lock *.gem + rm -f .deps .linked .tested Gemfile.lock *.gem pkg/*.gem .PHONY: clean-ruby diff --git a/tag-expressions/ruby/default.mk b/tag-expressions/ruby/default.mk index cec5f2805ea..b4eccdd7ed1 100644 --- a/tag-expressions/ruby/default.mk +++ b/tag-expressions/ruby/default.mk @@ -46,5 +46,5 @@ clean: clean-ruby .PHONY: clean clean-ruby: - rm -f .deps .linked .tested Gemfile.lock *.gem + rm -f .deps .linked .tested Gemfile.lock *.gem pkg/*.gem .PHONY: clean-ruby