lib/cucumber/create_meta.rb in cucumber-create-meta-4.0.0 vs lib/cucumber/create_meta.rb in cucumber-create-meta-5.0.0
- old
+ new
@@ -1,34 +1,36 @@
require 'uri'
-require 'cucumber/messages'
require 'sys/uname'
require 'json'
+require 'cucumber/messages'
+require 'cucumber/create_meta/variable_expression'
module Cucumber
module CreateMeta
+ extend Cucumber::CreateMeta::VariableExpression
CI_DICT = JSON.parse(IO.read(File.join(File.dirname(__FILE__), "ciDict.json")))
def create_meta(tool_name, tool_version, env = ENV)
- Cucumber::Messages::Meta.new(
+ {
protocol_version: Cucumber::Messages::VERSION,
- implementation: Cucumber::Messages::Meta::Product.new(
+ implementation: {
name: tool_name,
version: tool_version
- ),
- runtime: Cucumber::Messages::Meta::Product.new(
+ },
+ runtime: {
name: RUBY_ENGINE,
version: RUBY_VERSION
- ),
- os: Cucumber::Messages::Meta::Product.new(
+ },
+ os: {
name: RbConfig::CONFIG['target_os'],
version: Sys::Uname.uname.version
- ),
- cpu: Cucumber::Messages::Meta::Product.new(
+ },
+ cpu: {
name: RbConfig::CONFIG['target_cpu']
- ),
+ },
ci: detect_ci(env)
- )
+ }
end
def detect_ci(env)
detected = CI_DICT.map do |ci_name, ci_system|
create_ci(ci_name, ci_system, env)
@@ -39,50 +41,22 @@
def create_ci(ci_name, ci_system, env)
url = evaluate(ci_system['url'], env)
return nil if url.nil?
- Cucumber::Messages::Meta::CI.new(
+ {
url: url,
name: ci_name,
- git: Cucumber::Messages::Meta::CI::Git.new(
+ git: {
remote: remove_userinfo_from_url(evaluate(ci_system['git']['remote'], env)),
revision: evaluate(ci_system['git']['revision'], env),
branch: evaluate(ci_system['git']['branch'], env),
tag: evaluate(ci_system['git']['tag'], env),
- )
- )
+ }.delete_if {|k,v| v.nil?}
+ }
end
- def evaluate(template, env)
- return nil if template.nil?
- begin
- template.gsub(/\${((refbranch|reftag)\s+)?([^\s}]+)(\s+\|\s+([^}]+))?}/) do
- func = $2
- variable = $3
- default_value = $5 == "" ? nil : $5
- value = env[variable] || default_value
-
- if func == 'refbranch'
- value = group1(value, /^refs\/heads\/(.*)/)
- elsif func == 'reftag'
- value = group1(value, /^refs\/tags\/(.*)/)
- end
- raise "Undefined variable: #{variable}" if value.nil?
- value
- end
- rescue
- nil
- end
- end
-
- def group1(value, regexp)
- m = value.match(regexp)
- raise "No match" if m.nil?
- m[1]
- end
-
def remove_userinfo_from_url(value)
return nil if value.nil?
begin
uri = URI(value)
uri.userinfo = ''
@@ -90,8 +64,8 @@
rescue
value
end
end
- module_function :create_meta, :detect_ci, :create_ci, :group1, :evaluate, :remove_userinfo_from_url
+ module_function :create_meta, :detect_ci, :create_ci, :remove_userinfo_from_url
end
end