require 'fileutils' require 'json' require_relative './lib/cucumber_generator' $apis = {} def root File.expand_path(File.dirname(__FILE__) + '/../') end def add_tasks(service, config) klass = config['name'] prefix = config['prefix'] || service files = Dir["apis/#{prefix}-*.normal.json"] api = JSON.parse(File.read(files.sort.last), :max_nesting => false) version = api['metadata']['apiVersion'] service_full_name = api['metadata']['serviceFullName'] namespace :api do task :versions namespace(service) do task(:api) do verbose(false) do sh "#{root}/scripts/translate-api #{prefix}" end end task(:cucumber) do unless File.exist?("#{root}/features/#{service}") sh "mkdir -p #{root}/features/#{service}/step_definitions" features = "#{root}/features/#{service}/#{service}.feature" step_defns = "#{root}/features/#{service}/step_definitions/#{service}.js" generator = CucumberGenerator.new(klass, service, api) File.open(features, "w") do |file| file.write(generator.features_file) end File.open(step_defns, "w") do |file| file.write(generator.step_definitions_file) end end end task(:version) do puts("%-40s\t%s" % [service_full_name, version]) end task(:'version:internal') do ($apis[service_full_name] ||= []) << [version, klass] end task(:'version:html') do puts "