require "spaceship"

#Spaceship.login('cn195@163.com', 'cn195XIANGHENG')
puts "  begin ruby: \n"
Spaceship.login(ARGV[0], ARGV[1])
#参数传入true表示需要新增设备，例如：ruby UpdateProfile.rb true
if ARGV[2] == "true"
    
    if ARGV[3]

        # 以前的老地方式
        #device = Spaceship.device.create!(name: "DouSanGuo", udid: ARGV[3])
        #puts "add device: #{device.name} #{device.udid} #{device.model}"

        #devices = Spaceship.device.all
        #puts "device #{devices.count}"
        #devices.each do |d|
        #    puts "device #{d.udid}"
        #end

        #profiles = Array.new
        #profiles += Spaceship.provisioning_profile.development.all
        #profiles += Spaceship.provisioning_profile.ad_hoc.all
        #profiles.each do |p|
        #    puts "Updating #{p.name}"
        #    p.devices = devices
        #    p.update!
        #end

        # 新的流程，注册设备，然后先删除再创建
        device_platform = Spaceship::ConnectAPI::BundleIdPlatform::IOS
        # 打印设备数量
        devices = Spaceship::ConnectAPI::Device.all
        puts "device #{devices.count} \n"
        # 添加设备
        device = Spaceship::ConnectAPI::Device.find_or_create(ARGV[3], name: "DouSanGuo", platform: device_platform)
        puts "add device: #{device.name} #{device.udid} #{device.model}\n"
        # 打印添加后的设备数量
        devices = Spaceship::ConnectAPI::Device.all
        puts "device #{devices.count} \n"
        

        # 删除老的配置文件Profile
        # 新的方式  -- 还没找到更新的方法，不更新也能使用
        profile_type = Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_ADHOC
        profiles = Spaceship::ConnectAPI::Profile.all(filter: { profileType: profile_type }, includes: nil)
        profiles.each do |p|
            puts "Profiles #{p.name} \n"
            if p.name == "Distribution_AdHoc"
                puts "Delete old #{p.name} \n"
                p.delete!
            end
        end

        # 创建新的配置文件Profile
        # 证书相关
        filterCer = { certificateType: Spaceship::ConnectAPI::Certificate::CertificateType::DISTRIBUTION }
        certificates = Spaceship::ConnectAPI::Certificate.all(filter: filterCer)
        certificates_to_use = [certificates.first]
        #puts "certificates #{certificates}\n"

        # 设备相关
        device_classes = [
            Spaceship::ConnectAPI::Device::DeviceClass::IPAD,
            Spaceship::ConnectAPI::Device::DeviceClass::IPHONE
        ]
        filterDev = { deviceClass: device_classes.join(",") }
        devices_to_use = Spaceship::ConnectAPI::Device.all(filter: filterDev)
        #puts "devices_to_use #{devices_to_use}\n"

        # 创建Profile
        profile = Spaceship::ConnectAPI::Profile.create(
            name: "Distribution_AdHoc",
            profile_type: Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_ADHOC,
            bundle_id_id: Spaceship::ConnectAPI::BundleId.find("com.ytsanguo.wc").id,
            certificate_ids: certificates_to_use.map(&:id),
            device_ids: devices_to_use.map(&:id),
            template_name: nil
        )
        puts "profile #{profile} \n"
        
    end

    dic = { "Distribution_AdHoc" => "ttdsg_adHoc.mobileprovision" }

    # 以前的老地方式
    #downloadProfiles = Array.new
    #downloadProfiles += Spaceship.provisioning_profile.development.all
    #downloadProfiles += Spaceship.provisioning_profile.ad_hoc.all

    #downloadProfiles.each do |p|
    #    puts "Downloading #{p.name}"
    #    act = ARGV[0]
    #    fileName = dic[p.name]
    #    File.write("/var/www/html/ttdsg/#{act}/#{fileName}", p.download)
    #end

    # 新的下载方式
    profile_type = Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_ADHOC
    downloadProfiles = Spaceship::ConnectAPI::Profile.all(filter: { profileType: profile_type }, includes: nil)

    downloadProfiles.each do |p|
        puts "Profiles #{p.name} \n"
        if p.name == "Distribution_AdHoc"
            puts "Downloading #{p.name} \n"
            act = ARGV[0]
            fileName = dic[p.name]
            content = Base64.decode64(p.profile_content)
            File.write("/var/www/html/ttdsg/#{act}/#{fileName}", content)
        end
    end

else

    dic = { "Distribution_AdHoc" => "ttdsg_adHoc.mobileprovision" }

    # 以前的老地方式
    #downloadProfiles = Array.new
    #downloadProfiles += Spaceship.provisioning_profile.development.all
    #downloadProfiles += Spaceship.provisioning_profile.ad_hoc.all

    #downloadProfiles.each do |p|
    #    puts "Downloading #{p.name}"
    #    act = ARGV[0]
    #    fileName = dic[p.name]
    #    File.write("/var/www/html/ttdsg/#{act}/#{fileName}", p.download)
    #end

    # 新的下载方式
    profile_type = Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_ADHOC
    downloadProfiles = Spaceship::ConnectAPI::Profile.all(filter: { profileType: profile_type }, includes: nil)

    downloadProfiles.each do |p|
         puts "Profiles #{p.name} \n"
        if p.name == "Distribution_AdHoc"
            puts "Downloading #{p.name} \n"
            act = ARGV[0]
            fileName = dic[p.name]
            content = Base64.decode64(p.profile_content)
            File.write("/var/www/html/ttdsg/#{act}/#{fileName}", content)
        end
    end

end

#根据账号文件夹，签名文件夹下面对应的ipa，并返回对应链接给用户下载
account=ARGV[0]
path = "./ttdsg/" + account
sysStr="./zsign -k " + path + "/dpsg.p12 -p 123456 -m " + path + "/ttdsg_adHoc.mobileprovision -o " + path + "/output.ipa -z 9 " + path + "/dpsg.ipa"
puts sysStr
system sysStr

#签名之后上传ipa包到指定位置


# Download a specific profile as file
=begin
matching_profiles = Spaceship::Portal.provisioning_profile.development.find_by_bundle_id(bundle_id: "com.wangch.ttdsg01")
first_profile = matching_profiles.first
if first_profile.nil? == false
	File.write("/var/www/html/ttdsg01/ttdsg01Development.mobileprovision", first_profile.download)
end
=end

puts "  end ruby!"