require 'tempfile'

namespace :foreman_inventory_upload do

namespace :report do
  desc 'Generate inventory report to be sent to Red Hat cloud'
  task generate: :environment do
    portal_user = ENV['portal_user']
    organizations = [ENV['organization_id']]
    base_folder = ENV['target'] || Dir.pwd

    unless portal_user || organizations.empty?
      puts "Must specify either portal_user or organization_id"
    end

    if portal_user
      puts "Generating report for all organizations associated with #{portal_user}"
      base_folder = File.join(base_folder, portal_user)
      organizations = ForemanInventoryUpload::Generators::Queries.organizations_for_user(portal_user).pluck(:id)
    end

    organizations.each do |organization|
      target = File.join(base_folder, ForemanInventoryUpload.facts_archive_name(organization))
      archived_report_generator = ForemanInventoryUpload::Generators::ArchivedReport.new(target, Logger.new(STDOUT))
      archived_report_generator.render(organization: organization)
      puts "Successfully generated #{target} for organization id #{organization}"
    end
  end
end

end