#
# 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/package_task'
require 'rake/testtask'

load 'deltacloud-client.gemspec'

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"
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

Rake::TestTask.new(:test) do |t|
  t.test_files = FileList[
    'tests/*test.rb',                     # EC2 frontend internal API tests
  ]
end
