blob: 8ff33d07b41662cacbb2d0b13fcd286ef5ce80bb [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
require 'rubygems'
require 'rubygems/package_task'
require 'rake'
require 'rake/testtask'
spec = Gem::Specification.load('deltacloud-client.gemspec')
Gem::PackageTask.new(spec) do |pkg|
pkg.need_tar = true
end
desc "Re-install the deltacloud-client gem (used for development)"
task :reinstall do
puts %x{gem uninstall deltacloud-client --all -I -x}
puts %x{gem build deltacloud-client.gemspec}
puts %x{gem install deltacloud-client-*.gem --local}
end
desc 'Generate model/methods files for collection.'
task :generate, :name do |t, args|
require 'erb'
require_relative './lib/deltacloud/core_ext'
model_tpl = ERB.new(File.read('support/model_template.erb'))
methods_tpl = ERB.new(File.read('support/methods_template.erb'))
name = args[:name]
model_file = "lib/deltacloud/client/models/#{name}.rb"
methods_file = "lib/deltacloud/client/methods/#{name}.rb"
puts model_body = model_tpl.result(binding)
print "Save model to '#{model_file}'? [Y/n]"
answer = $stdin.gets.chomp
if answer.empty? or answer == 'Y'
File.open(model_file, 'w') { |f|
f.write(model_body)
}
File.open('lib/deltacloud/client/models.rb', 'a') { |f|
f.puts "require_relative './models/#{name}'"
}
end
puts methods_body = methods_tpl.result(binding)
print "Save methods to '#{methods_file}'? [Y/n]"
answer = $stdin.gets.chomp
if answer.empty? or answer == 'Y'
File.open(methods_file, 'w') { |f|
f.write(methods_body)
}
File.open('lib/deltacloud/client/methods.rb', 'a') { |f|
f.puts "require_relative './methods/#{name}'"
}
end
puts
puts "Don't forget to add this line to 'lib/deltacloud/client/connection.rb':"
puts
puts "include Deltacloud::Client::Methods::#{name.to_s.camelize}"
puts
end
desc 'Generate method test file'
task :test_generate, :name do |t, args|
require 'erb'
require_relative './lib/deltacloud/core_ext'
method_tpl = ERB.new(File.read('support/method_test_template.erb'))
name = args[:name]
methods_file = "tests/methods/#{name}_test.rb"
puts method_body = method_tpl.result(binding)
print "Save method test to '#{methods_file}'? [Y/n]"
answer = $stdin.gets.chomp
if answer.empty? or answer == 'Y'
File.open(methods_file, 'w') { |f|
f.write(method_body)
}
end
end
desc "Open console with client connected to #{ENV['API_URL'] || 'localhost:3002/api'}"
task :console do
require 'pry'
unless binding.respond_to? :pry
puts 'To open a console, you need to have "pry" installed (gem install pry)'
exit(1)
end
require_relative './lib/deltacloud/client'
client = Deltacloud::Client(
ENV['API_URL'] || 'http://localhost:3002/api',
ENV['API_USER'] || 'mockuser',
ENV['API_PASSWORD'] || 'mockpassword'
)
binding.pry
end
Rake::TestTask.new(:test) do |t|
t.test_files = FileList[
'tests/*/*_test.rb'
]
end
desc "Execute test against live Deltacloud API"
task :test_live do
ENV['NO_VCR'] = 'true'
Rake::Task[:test].invoke
end
desc "Generate test coverage report"
task :coverage do
ENV['COVERAGE'] = 'true'
Rake::Task[:test].invoke
end