require 'rake'
require 'rspec/core/rake_task'

task spec: 'spec:all'
task default: :spec

namespace :spec do
  targets = []
  Dir.glob('./spec/*').each do |dir|
    next unless File.directory?(dir)
    target = File.basename(dir)
    target = "_#{target}" if target == 'default'
    targets << target
  end

  task all: targets
  task default: :all
  
  if ENV['TARGET_HOST']
    targets.each do |target|
      original_target = target == '_default' ? target[1..-1] : target
      desc "Run serverspec tests to #{original_target}"
      RSpec::Core::RakeTask.new(target.to_sym) do |t|
        # ENV['TARGET_HOST'] = original_target
       t.pattern = "spec/#{original_target}/*_spec.rb"
      end
    end
  else
    targets.each do |target|
      original_target = target == '_default' ? target[1..-1] : target
      desc "Run serverspec tests to #{original_target}"
      RSpec::Core::RakeTask.new(target.to_sym) do |t|
        ENV['TARGET_HOST'] = original_target
        t.pattern = "spec/#{original_target}/*_spec.rb"
      end
    end
  end
end
