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