# Copyright © 2017 Applause Inc. All rights reserved.

namespace :framework do

desc "Build the SDK binary"
task :build, [:setup_name] do |t, args|
        setup_name = args[:setup_name]
        setup = BuildConfiguration.load(setup_name)
        Xcode.build_universal_framework setup_name, setup.release_configuration.output_path
end

desc "Compress SDK"
task :archive, [:setup_name] => :build do |t, args|
        setup_name = args[:setup_name]
        setup = BuildConfiguration.load(setup_name)
        if (setup.release_configuration.plist && setup.release_configuration.output_path && setup.release_configuration.product_name)
                framework_path = setup.release_configuration.output_path + '/' + setup.release_configuration.product_name + '.framework'
                archived_framework_path = archived_framework_path(setup_name)
                Zip.compress(framework_path, archived_framework_path)
                puts "Compressed Framework path: #{archived_framework_path}"
        end
end

desc "Upload SDK to S3"
task :upload, [:setup_name] => :archive do |t, args|
        setup_name = args[:setup_name]
        setup = BuildConfiguration.load(setup_name)
        if (setup.release_configuration.plist && setup.release_configuration.output_path && setup.release_configuration.product_name &&
                        setup.release_configuration.s3_upload_folder && setup.release_configuration.s3_bucket)
                archived_framework_path = archived_framework_path(setup_name)
                s3_upload_path = s3_upload_path(setup_name)
                url = S3.upload_file(archived_framework_path, s3_upload_path, setup.release_configuration.s3_bucket)
                puts "Framework S3 url: #{url}"
        end
end

def archived_framework_path(setup_name)
        setup = BuildConfiguration.load(setup_name)
        version = Plist.version(setup.release_configuration.plist)
        archived_framework_path = setup.release_configuration.output_path + '/' + setup.release_configuration.product_name + '-' + version + '.zip'
        return archived_framework_path
end

def s3_upload_path(setup_name)
        setup = BuildConfiguration.load(setup_name)
        version = Plist.version(setup.release_configuration.plist)
        s3_upload_path = setup.release_configuration.s3_upload_folder + '/' + version + '/' + setup.release_configuration.product_name + '-' + version + '.zip'
        return s3_upload_path
end

end