# Copyright © 2017 Applause Inc. All rights reserved.

namespace :testapp do

desc "Updates test app application key"
task :configure, [:setup_name, :upload_configuration_name] do |t, args|
  configuration = UploadConfiguration.load(args[:upload_configuration_name])
              setup_name = args[:setup_name]
  setup = BuildConfiguration.load(setup_name)
  update_application_key(configuration.application_key, setup.release_configuration.plist)
end

desc "Builds application"
task :archive, [:setup_name, :upload_configuration_name] => :configure do |t, args|
  setup_name = args[:setup_name]
  setup = BuildConfiguration.load(setup_name)
  output_path = setup.release_configuration.output_path
  export_options_plist = setup.release_configuration.export_options_plist
  if export_options_plist.nil?
    Xcode.archive_and_export_ipa setup_name, output_path
  else
    Xcode.archive_and_export_ipa setup_name, output_path, export_options_plist
  end
end

desc "Uploads test app to sdk.applause.com"
task :publish, [:setup_name, :upload_configuration_name] => :archive do |t, args|
  upload_configuration_name = args[:upload_configuration_name]
  configuration = UploadConfiguration.load(upload_configuration_name)
              ipa_path = ipa_path(args[:setup_name])
  ApplauseTool.upload_app(ipa_path, configuration.company_id, configuration.app_id, configuration.publish_email, configuration.service, upload_configuration_name)
end

def update_application_key(application_key, plist_path)
  result = `/usr/libexec/PlistBuddy -c "Set :ATCApplicationId #{application_key}" "#{plist_path}"`
  if result.length > 0
    puts "Error: #{result}"
  end
end

def ipa_path(setup_name)
      config = BuildConfiguration.load(setup_name)
      file_name = config.release_configuration.product_name ? config.release_configuration.product_name : config.scheme
      archive_folder = File.join(Dir.pwd, config.release_configuration.output_path)
      ipa_name = file_name + ".ipa"
      ipa_path = File.join(archive_folder, ipa_name)
  return ipa_path
end

end