You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
4.7 KiB
158 lines
4.7 KiB
4 years ago
|
#!/usr/bin/ruby
|
||
|
# -*- coding: UTF-8 -*-
|
||
|
|
||
|
require "spaceship"
|
||
|
|
||
|
class DevelopPortalHandle
|
||
|
def login(username,password)
|
||
|
Spaceship::Portal.login(username,password)
|
||
|
end
|
||
|
|
||
|
def createCert(file_format_path_name)
|
||
|
csr, pkey = Spaceship::Portal.certificate.create_certificate_signing_request
|
||
|
cert=Spaceship::Portal.certificate.production.create!(csr: csr)
|
||
|
File.write(file_format_path_name+".key",pkey)
|
||
|
File.write(file_format_path_name+".cer",cert.download_raw)
|
||
|
File.write(file_format_path_name+".pem",cert.download)
|
||
|
File.write(file_format_path_name+".info",cert)
|
||
|
end
|
||
|
|
||
|
def createApp(appid,appname)
|
||
|
app = Spaceship::Portal.app.find(appid)
|
||
|
if !app then
|
||
|
app = Spaceship::Portal.app.create!(bundle_id: appid, name: appname)
|
||
|
app.update_service(Spaceship::Portal.app_service.push_notification.on)
|
||
|
app.update_service(Spaceship::Portal.app_service.vpn_configuration.on)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def deleteApp(appid)
|
||
|
app = Spaceship::Portal.app.find(appid)
|
||
|
if app then
|
||
|
app.delete!
|
||
|
end
|
||
|
end
|
||
|
|
||
|
#appstore or inHouse
|
||
|
def createDistributionProvision(provisioningClass,appid,provisionName,certid)
|
||
|
cert = Spaceship::Portal.certificate.Production.find(id=certid)
|
||
|
if !cert then
|
||
|
cert = Spaceship::Portal.certificate.production.all.last
|
||
|
end
|
||
|
profile = provisioningClass.create!(bundle_id: appid,certificate:cert,name:provisionName + '_dis')
|
||
|
return profile
|
||
|
end
|
||
|
|
||
|
#appstore or inHouse
|
||
|
def downloadDistributionProvision(provisioningClass,appid,provisionName,certid)
|
||
|
#查找有没有provision文件
|
||
|
filtered_profiles = provisioningClass.find_by_bundle_id(bundle_id: appid)
|
||
|
profile = nil
|
||
|
if 0 < filtered_profiles.length then
|
||
|
profile = filtered_profiles[0]
|
||
|
elsif 0 == filtered_profiles.length then
|
||
|
profile = createDistributionProvision(provisioningClass,appid,provisionName,certid)
|
||
|
end
|
||
|
|
||
|
#没有找到就创建,找到就下载
|
||
|
File.write(provisionName, profile.download)
|
||
|
return provisionFileName
|
||
|
end
|
||
|
|
||
|
def delete_profile(provisioningClass,appid)
|
||
|
filtered_profiles = provisioningClass.find_by_bundle_id(bundle_id: appid)
|
||
|
profile = nil
|
||
|
if 0 < filtered_profiles.length then
|
||
|
profile = filtered_profiles[0]
|
||
|
profile.delete!
|
||
|
end
|
||
|
end
|
||
|
def addDevice(device_name,device_udid)
|
||
|
device = Spaceship::Portal.device.find_by_udid(device_udid, include_disabled: false)
|
||
|
if !device then
|
||
|
Spaceship::Portal.device.create!(name: device_name, udid: device_udid)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def enableDevice(device_udid)
|
||
|
device=Spaceship::Portal.device.find_by_udid(device_udid, include_disabled: true)
|
||
|
if device then
|
||
|
device.enable!
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def disableDevice(device_udid)
|
||
|
device = Spaceship::Portal.device.find_by_udid(device_udid)
|
||
|
if device then
|
||
|
device.disable!
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
handle = DevelopPortalHandle.new()
|
||
|
handle.login(ARGV[0],ARGV[1])
|
||
|
function = ARGV[2]
|
||
|
|
||
|
case function
|
||
|
when "device"
|
||
|
action = ARGV[3]
|
||
|
device_udid = ARGV[4]
|
||
|
device_name = ARGV[5]
|
||
|
|
||
|
case action
|
||
|
when "add"
|
||
|
device_name = device_udid+','+device_udid
|
||
|
handle.addDevice(device_name,device_udid)
|
||
|
when "enable"
|
||
|
handle.enableDevice(device_udid)
|
||
|
when "disable"
|
||
|
handle.disableDevice(device_udid)
|
||
|
end
|
||
|
|
||
|
when "app"
|
||
|
action = ARGV[3]
|
||
|
app_id = ARGV[4]
|
||
|
app_name = ARGV[5]
|
||
|
appid = app_id+app_name
|
||
|
|
||
|
case action
|
||
|
when "add"
|
||
|
handle.createApp(appid,app_name)
|
||
|
when "del"
|
||
|
handle.deleteApp(appid)
|
||
|
handle.delete_profile(Spaceship::Portal.provisioning_profile.ad_hoc,appid)
|
||
|
end
|
||
|
when "profile"
|
||
|
action = ARGV[3]
|
||
|
app_id = ARGV[4]
|
||
|
app_name = ARGV[5]
|
||
|
appid = app_id+app_name
|
||
|
|
||
|
case action
|
||
|
when "add"
|
||
|
device_udid = ARGV[6]
|
||
|
device_name = ARGV[7]
|
||
|
certid = ARGV[8]
|
||
|
provisionName = ARGV[9]
|
||
|
handle.createApp(appid,app_name)
|
||
|
handle.addDevice(device_name,device_udid)
|
||
|
provisionPath = handle.downloadDistributionProvision(Spaceship::Portal.provisioning_profile.ad_hoc,appid,provisionName,certid)
|
||
|
when "del"
|
||
|
handle.delete_profile(Spaceship::Portal.provisioning_profile.ad_hoc,appid)
|
||
|
end
|
||
|
|
||
|
when "cert"
|
||
|
action = ARGV[3]
|
||
|
file_format_path_name = ARGV[4]
|
||
|
case action
|
||
|
when "add"
|
||
|
handle.createCert(file_format_path_name)
|
||
|
end
|
||
|
|
||
|
else
|
||
|
puts "error"
|
||
|
end
|
||
|
|
||
|
|