pindo 4.6.9 → 4.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pindo/base/aeshelper.rb +48 -2
- data/lib/pindo/base/funlog.rb +89 -0
- data/lib/pindo/base/githelper.rb +30 -12
- data/lib/pindo/base/plaininformative.rb +3 -0
- data/lib/pindo/base/standarderror.rb +1 -0
- data/lib/pindo/base/xcodeconst.rb +251 -0
- data/lib/pindo/client/applovinclient.rb +6 -3
- data/lib/pindo/client/aws3sclient.rb +33 -46
- data/lib/pindo/client/bossclient.rb +1 -1
- data/lib/pindo/client/pgyerclient.rb +78 -14
- data/lib/pindo/command/appstore/iap.rb +43 -0
- data/lib/pindo/command/appstore/itcapp.rb +41 -0
- data/lib/pindo/command/appstore/metadata.rb +43 -0
- data/lib/pindo/command/appstore/screenshots.rb +43 -0
- data/lib/pindo/command/appstore/upload.rb +40 -0
- data/lib/pindo/command/appstore.rb +17 -0
- data/lib/pindo/command/deploy/build.rb +109 -0
- data/lib/pindo/{deploy → command/deploy}/bundleid.rb +1 -1
- data/lib/pindo/command/deploy/cert.rb +179 -0
- data/lib/pindo/command/deploy/configproj.rb +105 -0
- data/lib/pindo/{deploy → command/deploy}/getitcinfo.rb +1 -1
- data/lib/pindo/{deploy → command/deploy}/iap.rb +30 -9
- data/lib/pindo/{deploy → command/deploy}/itcapp.rb +0 -1
- data/lib/pindo/{deploy → command/deploy}/itcinfo.rb +2 -3
- data/lib/pindo/{deploy → command/deploy}/pem.rb +3 -2
- data/lib/pindo/{deploy → command/deploy}/resign.rb +14 -63
- data/lib/pindo/command/deploy.rb +44 -0
- data/lib/pindo/{dev → command/dev}/autobuild.rb +17 -80
- data/lib/pindo/{dev → command/dev}/autoresign.rb +17 -64
- data/lib/pindo/{dev → command/dev}/createbuild.rb +0 -2
- data/lib/pindo/{dev → command/dev}/debug.rb +6 -2
- data/lib/pindo/command/dev/pgyercert.rb +75 -0
- data/lib/pindo/command/dev.rb +25 -0
- data/lib/pindo/command/env.rb +17 -0
- data/lib/pindo/{ipa → command/ipa}/autoresign.rb +18 -70
- data/lib/pindo/{ipa → command/ipa}/import.rb +47 -102
- data/lib/pindo/{ipa → command/ipa}/output.rb +38 -135
- data/lib/pindo/command/ipa.rb +16 -0
- data/lib/pindo/{lib → command/lib}/update.rb +19 -10
- data/lib/pindo/command/lib.rb +16 -0
- data/lib/pindo/{pgyer → command/pgyer}/apptest.rb +7 -29
- data/lib/pindo/{pgyer → command/pgyer}/comment.rb +7 -30
- data/lib/pindo/{pgyer → command/pgyer}/download.rb +35 -30
- data/lib/pindo/{pgyer → command/pgyer}/login.rb +3 -4
- data/lib/pindo/command/pgyer/resign.rb +111 -0
- data/lib/pindo/command/pgyer/upload.rb +123 -0
- data/lib/pindo/command/pgyer.rb +18 -0
- data/lib/pindo/{repo.rb → command/repo.rb} +4 -4
- data/lib/pindo/{utils → command/utils}/applovin.rb +43 -33
- data/lib/pindo/{utils → command/utils}/boss.rb +3 -3
- data/lib/pindo/command/utils/icon.rb +81 -0
- data/lib/pindo/{utils → command/utils}/renewproj.rb +1 -0
- data/lib/pindo/command/utils.rb +26 -0
- data/lib/pindo/command.rb +23 -26
- data/lib/pindo/module/build/swarkhelper.rb +95 -0
- data/lib/pindo/module/cert/certhelper.rb +176 -0
- data/lib/pindo/module/cert/keychainhelper.rb +138 -0
- data/lib/pindo/module/{pemcreate.rb → cert/pemhelper.rb} +3 -1
- data/lib/pindo/module/cert/provisioninghelper.rb +137 -0
- data/lib/pindo/module/cert/xcodecerthelper.rb +301 -0
- data/lib/pindo/module/{pgyerhelper.rb → pgyer/pgyerhelper.rb} +246 -35
- data/lib/pindo/module/xcode/xcodeappconfig.rb +188 -0
- data/lib/pindo/module/xcode/xcodebuildconfig.rb +12 -0
- data/lib/pindo/module/xcode/xcodebuildhelper.rb +312 -0
- data/lib/pindo/module/xcode/xcoderesconstant.rb +248 -0
- data/lib/pindo/module/xcode/xcodereshandler.rb +198 -0
- data/lib/pindo/module/xcode/xcodereshelper.rb +120 -0
- data/lib/pindo/options/appconfigoptions.rb +1 -0
- data/lib/pindo/options/deployoptions.rb +38 -41
- data/lib/pindo/version.rb +1 -1
- metadata +109 -97
- data/lib/pindo/deploy/Fastfile +0 -233
- data/lib/pindo/deploy/build.rb +0 -167
- data/lib/pindo/deploy/cert.rb +0 -508
- data/lib/pindo/deploy/configproj.rb +0 -89
- data/lib/pindo/deploy.rb +0 -44
- data/lib/pindo/dev.rb +0 -23
- data/lib/pindo/env/flutter.rb +0 -59
- data/lib/pindo/env/flutter.sh +0 -116
- data/lib/pindo/env.rb +0 -17
- data/lib/pindo/ipa.rb +0 -22
- data/lib/pindo/lib.rb +0 -18
- data/lib/pindo/module/buildconfighelper.rb +0 -13
- data/lib/pindo/module/buildhelper.rb +0 -76
- data/lib/pindo/module/config_project.sh +0 -143
- data/lib/pindo/module/configprojhelper.rb +0 -631
- data/lib/pindo/module/icon_contents.json +0 -116
- data/lib/pindo/module/imessage_icon.json +0 -91
- data/lib/pindo/module/imgset_contents.json +0 -21
- data/lib/pindo/module/launchimg_contents.json +0 -21
- data/lib/pindo/module/xcodebuildpre.rb +0 -258
- data/lib/pindo/pgyer/upload.rb +0 -234
- data/lib/pindo/pgyer.rb +0 -17
- data/lib/pindo/utils/icon.rb +0 -91
- data/lib/pindo/utils/icon.sh +0 -133
- data/lib/pindo/utils/podindex.rb +0 -56
- data/lib/pindo/utils/podindex.sh +0 -30
- data/lib/pindo/utils.rb +0 -29
- /data/lib/pindo/{deploy → command/deploy}/check.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/confusecode.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/confuseproj.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/fabric.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/initconfig.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/pullconfig.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/pushconfig.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/quswark.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/quswauth.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/reportbug.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/tag.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/updateconfig.rb +0 -0
- /data/lib/pindo/{deploy → command/deploy}/uploadipa.rb +0 -0
- /data/lib/pindo/{dev → command/dev}/confusecode.rb +0 -0
- /data/lib/pindo/{dev → command/dev}/confuseproj.rb +0 -0
- /data/lib/pindo/{dev → command/dev}/pub.rb +0 -0
- /data/lib/pindo/{dev → command/dev}/renewcert.rb +0 -0
- /data/lib/pindo/{env → command/env}/dreamstudio.rb +0 -0
- /data/lib/pindo/{env → command/env}/quarkenv.rb +0 -0
- /data/lib/pindo/{env → command/env}/swarkenv.rb +0 -0
- /data/lib/pindo/{env → command/env}/workhard.rb +0 -0
- /data/lib/pindo/{lib → command/lib}/forcepush.rb +0 -0
- /data/lib/pindo/{lib → command/lib}/lint.rb +0 -0
- /data/lib/pindo/{lib → command/lib}/push.rb +0 -0
- /data/lib/pindo/{repo → command/repo}/clone.rb +0 -0
- /data/lib/pindo/{repo → command/repo}/create.rb +0 -0
- /data/lib/pindo/{repo → command/repo}/login.rb +0 -0
- /data/lib/pindo/{repo → command/repo}/search.rb +0 -0
- /data/lib/pindo/{setup.rb → command/setup.rb} +0 -0
- /data/lib/pindo/{upgrade.rb → command/upgrade.rb} +0 -0
- /data/lib/pindo/{utils → command/utils}/clearcert.rb +0 -0
- /data/lib/pindo/{utils → command/utils}/device.rb +0 -0
- /data/lib/pindo/{utils → command/utils}/tgate.rb +0 -0
- /data/lib/pindo/{utils → command/utils}/xcassets.rb +0 -0
- /data/lib/pindo/{utils → command/utils}/xcassets.sh +0 -0
- /data/lib/pindo/module/{appstore_in_app_purchase.rb → appstore/appstore_in_app_purchase.rb} +0 -0
- /data/lib/pindo/module/{appstore_metadata_connect_api_helper.rb → appstore/appstore_metadata_connect_api_helper.rb} +0 -0
- /data/lib/pindo/module/{appstore_metadata_fastlane_helper.rb → appstore/appstore_metadata_fastlane_helper.rb} +0 -0
- /data/lib/pindo/module/{iap_tier.json → appstore/iap_tier.json} +0 -0
- /data/lib/pindo/module/{commonconfuseproj.rb → build/commonconfuseproj.rb} +0 -0
- /data/lib/pindo/module/{xcodehelper.rb → xcode/xcodehelper.rb} +0 -0
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'highline/import'
|
4
4
|
require 'fileutils'
|
5
|
-
require 'pindo/module/pgyerhelper
|
5
|
+
require 'pindo/module/pgyer/pgyerhelper'
|
6
6
|
|
7
7
|
module Pindo
|
8
8
|
class Command
|
@@ -42,52 +42,30 @@ module Pindo
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def validate!
|
45
|
-
|
46
|
-
xcodeproj_file_name = Dir.glob(File.join(Dir.pwd, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
|
47
|
-
proj_name = File.basename(xcodeproj_file_name, ".xcodeproj") if xcodeproj_file_name
|
48
|
-
if !proj_name.nil?
|
49
|
-
puts
|
50
|
-
answer = agree("Pgyer的App项目代号是: #{proj_name} ?(Y/n)")
|
51
|
-
if answer
|
52
|
-
@args_proj_name = proj_name
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
45
|
+
|
56
46
|
super
|
57
47
|
end
|
58
48
|
|
59
49
|
def run
|
60
50
|
|
61
|
-
|
62
|
-
app_info_obj =
|
63
|
-
login_success = @pgyer_client.do_login(force_login:@args_login_flag)
|
64
|
-
if login_success
|
65
|
-
PgyerHelper.share_instace.get_app_list_in_pgyer(client:@pgyer_client)
|
66
|
-
if !@args_proj_name.nil?
|
67
|
-
app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
|
68
|
-
end
|
69
|
-
|
70
|
-
if app_info_obj.nil?
|
71
|
-
proj_name = ask('请输入Pyger上的App代号(大小写空格忽略):') || nil
|
72
|
-
@args_proj_name = proj_name.strip
|
73
|
-
app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
|
74
|
-
end
|
75
|
-
end
|
51
|
+
PgyerHelper.share_instace.setForeLogin(beforeLogin:@args_login_flag)
|
52
|
+
app_info_obj = PgyerHelper.share_instace.prepare_upload(working_directory:Dir.pwd, proj_name:@args_proj_name)
|
76
53
|
|
77
54
|
if app_info_obj.nil?
|
78
55
|
raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
|
79
56
|
end
|
80
57
|
|
58
|
+
|
81
59
|
if !app_info_obj.nil?
|
82
60
|
|
83
|
-
version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(
|
61
|
+
version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
|
84
62
|
|
85
63
|
if version_item_obj.nil?
|
86
64
|
raise Informative, "没有找到上传记录"
|
87
65
|
end
|
88
66
|
|
67
|
+
msg_data = PgyerHelper.share_instace.make_msg_data(app_info_obj:app_info_obj, app_version_info_obj:version_item_obj)
|
89
68
|
|
90
|
-
msg_data = PgyerHelper.share_instace.make_msg_data(app_info_obj:app_info_obj, app_version_info_obj:version_item_obj, msg_from: @pgyer_client.token["username"])
|
91
69
|
PgyerHelper.share_instace.print_app_version_info(msg_data:msg_data)
|
92
70
|
if @args_send_flag
|
93
71
|
PgyerHelper.share_instace.send_apptest_wechat_msg(msg_data:msg_data)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'highline/import'
|
4
4
|
require 'fileutils'
|
5
|
-
require 'pindo/module/pgyerhelper
|
5
|
+
require 'pindo/module/pgyer/pgyerhelper'
|
6
6
|
|
7
7
|
|
8
8
|
module Pindo
|
@@ -42,50 +42,27 @@ module Pindo
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def validate!
|
45
|
-
|
46
|
-
xcodeproj_file_name = Dir.glob(File.join(Dir.pwd, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
|
47
|
-
proj_name = File.basename(xcodeproj_file_name, ".xcodeproj") if xcodeproj_file_name
|
48
|
-
if !proj_name.nil?
|
49
|
-
puts
|
50
|
-
answer = agree("Pgyer的App项目代号是: #{proj_name} ?(Y/n)")
|
51
|
-
if answer
|
52
|
-
@args_proj_name = proj_name
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
45
|
+
|
56
46
|
super
|
57
47
|
end
|
58
48
|
|
59
49
|
def run
|
60
50
|
|
61
|
-
|
62
|
-
app_info_obj =
|
63
|
-
login_success = @pgyer_client.do_login(force_login:@args_login_flag)
|
64
|
-
if login_success
|
65
|
-
PgyerHelper.share_instace.get_app_list_in_pgyer(client:@pgyer_client)
|
66
|
-
if !@args_proj_name.nil?
|
67
|
-
app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
|
68
|
-
end
|
69
|
-
|
70
|
-
if app_info_obj.nil?
|
71
|
-
proj_name = ask('请输入Pyger上的App代号(大小写空格忽略):') || nil
|
72
|
-
@args_proj_name = proj_name.strip
|
73
|
-
app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
|
74
|
-
end
|
75
|
-
end
|
51
|
+
PgyerHelper.share_instace.setForeLogin(beforeLogin:@args_login_flag)
|
52
|
+
app_info_obj = PgyerHelper.share_instace.prepare_upload(working_directory:Dir.pwd, proj_name:@args_proj_name)
|
76
53
|
|
77
54
|
if app_info_obj.nil?
|
78
55
|
raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
|
79
56
|
end
|
80
|
-
|
81
57
|
|
82
|
-
|
58
|
+
|
59
|
+
version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
|
83
60
|
|
84
61
|
if version_item_obj.nil?
|
85
62
|
raise Informative, "没有找到上传记录"
|
86
63
|
end
|
87
64
|
|
88
|
-
PgyerHelper.share_instace.modify_coment(
|
65
|
+
PgyerHelper.share_instace.modify_coment(app_info_obj:app_info_obj, version_item_obj:version_item_obj)
|
89
66
|
|
90
67
|
end
|
91
68
|
|
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
require 'highline/import'
|
4
4
|
require 'fileutils'
|
5
|
-
require 'pindo/module/pgyerhelper
|
5
|
+
require 'pindo/module/pgyer/pgyerhelper'
|
6
|
+
require 'open-uri'
|
6
7
|
|
7
8
|
|
8
9
|
module Pindo
|
@@ -42,43 +43,20 @@ module Pindo
|
|
42
43
|
end
|
43
44
|
|
44
45
|
def validate!
|
45
|
-
|
46
|
-
xcodeproj_file_name = Dir.glob(File.join(Dir.pwd, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
|
47
|
-
proj_name = File.basename(xcodeproj_file_name, ".xcodeproj") if xcodeproj_file_name
|
48
|
-
if !proj_name.nil?
|
49
|
-
puts
|
50
|
-
answer = agree("Pgyer的App项目代号是: #{proj_name} ?(Y/n)")
|
51
|
-
if answer
|
52
|
-
@args_proj_name = proj_name
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
46
|
+
|
56
47
|
super
|
57
48
|
end
|
58
49
|
|
59
50
|
def run
|
60
51
|
|
61
|
-
|
62
|
-
app_info_obj =
|
63
|
-
login_success = @pgyer_client.do_login(force_login:@args_login_flag)
|
64
|
-
if login_success
|
65
|
-
PgyerHelper.share_instace.get_app_list_in_pgyer(client:@pgyer_client)
|
66
|
-
if !@args_proj_name.nil?
|
67
|
-
app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
|
68
|
-
end
|
69
|
-
|
70
|
-
if app_info_obj.nil?
|
71
|
-
proj_name = ask('请输入Pyger上的App代号(大小写空格忽略):') || nil
|
72
|
-
@args_proj_name = proj_name.strip
|
73
|
-
app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
|
74
|
-
end
|
75
|
-
end
|
52
|
+
PgyerHelper.share_instace.setForeLogin(beforeLogin:@args_login_flag)
|
53
|
+
app_info_obj = PgyerHelper.share_instace.prepare_upload(working_directory:Dir.pwd, proj_name:@args_proj_name)
|
76
54
|
|
77
55
|
if app_info_obj.nil?
|
78
56
|
raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
|
79
57
|
end
|
80
58
|
|
81
|
-
version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(
|
59
|
+
version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
|
82
60
|
|
83
61
|
if version_item_obj.nil?
|
84
62
|
raise Informative, "没有找到上传记录"
|
@@ -93,9 +71,36 @@ module Pindo
|
|
93
71
|
file_name = File.join(Dir.pwd, base_name)
|
94
72
|
puts "文件名: #{file_name}"
|
95
73
|
puts "下载中..."
|
96
|
-
File.binwrite(file_name, FastlaneCore::Helper.open_uri(download_url).read)
|
97
|
-
|
74
|
+
# File.binwrite(file_name, FastlaneCore::Helper.open_uri(download_url).read)
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
# 使用选项参数
|
79
|
+
|
80
|
+
Funlog.instance.fancyinfo_start("开始下载...")
|
81
|
+
total_num = 0
|
82
|
+
total_size = ''
|
83
|
+
char_in = '>'
|
84
|
+
char_out = '_'
|
85
|
+
download_message = ''
|
86
|
+
|
87
|
+
URI.open(download_url, :content_length_proc => lambda { |total|
|
88
|
+
total_num = total
|
89
|
+
total_size = sprintf("%.2f", 1.00 * total_num / 1024 /1024 )
|
90
|
+
}, :progress_proc => lambda { |index_num|
|
91
|
+
|
92
|
+
progress_str = sprintf("%.2f", 100.0 * index_num / total_num )
|
93
|
+
total_size = sprintf("%.2f", 1.00 * total_num / 1024 /1024 )
|
94
|
+
index = 100.0 * index_num / total_num
|
95
|
+
download_message = "已下载:#{progress_str}\%【" + (char_in * (index/1).floor).ljust(100, char_out) + "】Total: #{total_size} M"
|
96
|
+
Funlog.instance.fancyinfo_update(download_message)
|
97
|
+
|
98
|
+
}) do |file|
|
99
|
+
File.binwrite(file_name, file.read)
|
100
|
+
end
|
98
101
|
|
102
|
+
Funlog.instance.fancyinfo_success(download_message)
|
103
|
+
Funlog.instance.fancyinfo_success("#{file_name} 下载完成!")
|
99
104
|
|
100
105
|
end
|
101
106
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'highline/import'
|
4
4
|
require 'fileutils'
|
5
|
-
require 'pindo/module/pgyerhelper
|
5
|
+
require 'pindo/module/pgyer/pgyerhelper'
|
6
6
|
|
7
7
|
|
8
8
|
module Pindo
|
@@ -44,15 +44,14 @@ module Pindo
|
|
44
44
|
def run
|
45
45
|
|
46
46
|
app_info_obj = nil
|
47
|
-
@pgyer_client = PgyerClient.new
|
48
47
|
|
49
|
-
|
48
|
+
PgyerHelper.share_instace.setForeLogin(beforeLogin:@args_login_flag)
|
49
|
+
login_success = PgyerHelper.share_instace.login
|
50
50
|
|
51
51
|
if !login_success
|
52
52
|
raise Informative, "登录失败!!!"
|
53
53
|
end
|
54
54
|
|
55
|
-
|
56
55
|
end
|
57
56
|
|
58
57
|
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
require 'highline/import'
|
4
|
+
require 'fileutils'
|
5
|
+
require 'pindo/module/pgyer/pgyerhelper'
|
6
|
+
|
7
|
+
module Pindo
|
8
|
+
class Command
|
9
|
+
class Pgyer < Command
|
10
|
+
class Resign < Pgyer
|
11
|
+
|
12
|
+
|
13
|
+
self.summary = '获取pgyer中指定app的测试链接和二维码'
|
14
|
+
|
15
|
+
self.description = <<-DESC
|
16
|
+
获取pgyer中指定app的测试链接和二维码,终端运行:pindo pgyer apptest
|
17
|
+
DESC
|
18
|
+
|
19
|
+
self.arguments = [
|
20
|
+
|
21
|
+
]
|
22
|
+
|
23
|
+
def self.options
|
24
|
+
[
|
25
|
+
['--login', '强制再次登录pgyer网站'],
|
26
|
+
['--proj', '指定哪个项目(忽略大小写空格等等字符),用法:pindo pgyer apptest --proj=prancksoundv4'],
|
27
|
+
['--list', '列出上传记录并选择,用法:pindo pgyer apptest --list'],
|
28
|
+
['--send', '上传到之后是否发送测试信息,用法:pindo pgyer apptest --send'],
|
29
|
+
['--bundleid', '上传到之后是否发送测试信息,用法:pindo pgyer apptest --bundleid=xxxx'],
|
30
|
+
].concat(super)
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
def initialize(argv)
|
35
|
+
|
36
|
+
@args_login_flag = argv.flag?('login', false)
|
37
|
+
@args_list_flag = argv.flag?('list', false)
|
38
|
+
@args_send_flag = argv.flag?('send', false)
|
39
|
+
@args_proj_name = argv.option('proj')
|
40
|
+
@args_bundle_id = argv.option('bundleid')
|
41
|
+
|
42
|
+
super(argv)
|
43
|
+
@additional_args = argv.remainder!
|
44
|
+
end
|
45
|
+
|
46
|
+
def validate!
|
47
|
+
super
|
48
|
+
end
|
49
|
+
|
50
|
+
def run
|
51
|
+
|
52
|
+
PgyerHelper.share_instace.setForeLogin(beforeLogin:@args_login_flag)
|
53
|
+
app_info_obj = PgyerHelper.share_instace.prepare_upload(working_directory:Dir.pwd, proj_name:@args_proj_name)
|
54
|
+
|
55
|
+
if app_info_obj.nil?
|
56
|
+
raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
|
61
|
+
|
62
|
+
if version_item_obj.nil?
|
63
|
+
raise Informative, "没有找到上传记录"
|
64
|
+
end
|
65
|
+
|
66
|
+
cert_List = PgyerHelper.share_instace.get_cert_list()
|
67
|
+
|
68
|
+
if cert_List.nil? || cert_List.empty?
|
69
|
+
raise Informative, "没有找到上传记录"
|
70
|
+
end
|
71
|
+
|
72
|
+
if @args_bundle_id.nil? && cert_List.size > 0
|
73
|
+
|
74
|
+
bundle_id_list = cert_List.map { |cert| [cert["certType"],cert["mainBundleId"]].join("_") }
|
75
|
+
cli = HighLine.new
|
76
|
+
@args_bundle_id = cli.choose do |menu|
|
77
|
+
menu.prompt = "请选择Pyger上的App代号:"
|
78
|
+
menu.choices(*bundle_id_list)
|
79
|
+
end
|
80
|
+
|
81
|
+
cert_item = cert_List.select{|cert| [cert["certType"],cert["mainBundleId"]].join("_") == @args_bundle_id}.first
|
82
|
+
else
|
83
|
+
cert_item = cert_List.select{|item| item["mainBundleId"] == @args_bundle_id}.first
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
result = PgyerHelper.share_instace.resign(version_id:version_item_obj["id"], cert_id:cert_item["id"])
|
89
|
+
|
90
|
+
if result
|
91
|
+
version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(app_info_obj:app_info_obj, list_select_flat:false)
|
92
|
+
|
93
|
+
if version_item_obj.nil?
|
94
|
+
raise Informative, "没有找到上传记录"
|
95
|
+
end
|
96
|
+
msg_data = PgyerHelper.share_instace.make_msg_data(app_info_obj:app_info_obj, app_version_info_obj:version_item_obj)
|
97
|
+
PgyerHelper.share_instace.print_app_version_info(msg_data:msg_data)
|
98
|
+
if @args_send_flag
|
99
|
+
PgyerHelper.share_instace.send_apptest_wechat_msg(msg_data:msg_data)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
require 'highline/import'
|
4
|
+
require 'fileutils'
|
5
|
+
require 'json'
|
6
|
+
require 'faraday'
|
7
|
+
require 'pindo/module/pgyer/pgyerhelper'
|
8
|
+
|
9
|
+
|
10
|
+
module Pindo
|
11
|
+
class Command
|
12
|
+
class Pgyer < Command
|
13
|
+
class Upload < Pgyer
|
14
|
+
|
15
|
+
|
16
|
+
self.summary = '上传ipa包到pgyer测试网站'
|
17
|
+
|
18
|
+
self.description = <<-DESC
|
19
|
+
上传ipa包到pgyer。用法:例如:pindo pgyer upload path/to/demo.ipa
|
20
|
+
DESC
|
21
|
+
|
22
|
+
self.arguments = [
|
23
|
+
CLAide::Argument.new('path/to/demo.ipa', false),
|
24
|
+
]
|
25
|
+
|
26
|
+
def self.options
|
27
|
+
[
|
28
|
+
['--login', '强制再次登录pgyer网站,用法: pindo pgyer upload --login'],
|
29
|
+
['--ipa', '强制指定上传的ipa文件: pindo pgyer upload --ipa=path/to/demo.ipa'],
|
30
|
+
['--proj', '指定哪个项目(忽略大小写空格等等字符),用法:pindo pgyer upload --proj=prancksoundv4'],
|
31
|
+
['--attach', '指定需要和ipa一起上传的附件: pindo pgyer upload --attach=path/to/attach.zip'],
|
32
|
+
['--send', '上传到之后是否发送测试信息,用法:pindo pgyer upload --send'],
|
33
|
+
['--desc', '指定上传的备注信息: -pindo pgyer upload -desc="1.upload message"'],
|
34
|
+
|
35
|
+
].concat(super)
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
def initialize(argv)
|
40
|
+
|
41
|
+
@args_ipa_file = argv.shift_argument
|
42
|
+
@ipa_file = argv.option('ipa')
|
43
|
+
|
44
|
+
if !@ipa_file.nil?
|
45
|
+
@args_ipa_file = @ipa_file
|
46
|
+
end
|
47
|
+
if @args_ipa_file && !@args_ipa_file.empty?
|
48
|
+
@args_ipa_file = @args_ipa_file.strip.gsub(/\"/, '')
|
49
|
+
end
|
50
|
+
|
51
|
+
@args_login_flag = argv.flag?('login', false)
|
52
|
+
@args_send_flag = argv.flag?('send', false)
|
53
|
+
@args_proj_name = argv.option('proj')
|
54
|
+
@args_attach_name = argv.option('attach')
|
55
|
+
@args_upload_desc = argv.option('desc')
|
56
|
+
if @args_upload_desc && !@args_upload_desc.empty?
|
57
|
+
@args_upload_desc = @args_upload_desc.strip.gsub(/\"/, '')
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
super(argv)
|
63
|
+
@additional_args = argv.remainder!
|
64
|
+
end
|
65
|
+
|
66
|
+
def validate!
|
67
|
+
|
68
|
+
super
|
69
|
+
end
|
70
|
+
|
71
|
+
def run
|
72
|
+
|
73
|
+
current_project_dir = Dir.pwd
|
74
|
+
if @args_ipa_file.nil? || !File.exist?(@args_ipa_file)
|
75
|
+
build_path = File.join(current_project_dir, "build", "*.ipa")
|
76
|
+
@args_ipa_file = Dir.glob(build_path).max_by {|f| File.mtime(f)}
|
77
|
+
if @args_ipa_file.nil?
|
78
|
+
build_path = File.join(current_project_dir, "*.ipa")
|
79
|
+
@args_ipa_file = Dir.glob(build_path).max_by {|f| File.mtime(f)}
|
80
|
+
end
|
81
|
+
if !@args_ipa_file.nil?
|
82
|
+
answer = agree("需要上传的ipa文件是: #{@args_ipa_file} ?(Y/n)")
|
83
|
+
if !answer
|
84
|
+
@args_ipa_file = nil
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
if !@args_ipa_file.nil? && File.exist?(@args_ipa_file)
|
89
|
+
else
|
90
|
+
@args_ipa_file = ask('需要上传的IPA文件:') || nil
|
91
|
+
@args_ipa_file = @args_ipa_file.strip.gsub(/\\ /, ' ')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
if !File.exist?(@args_ipa_file)
|
96
|
+
raise Informative, "#{@args_ipa_file} 文件不存在"
|
97
|
+
end
|
98
|
+
|
99
|
+
PgyerHelper.share_instace.setForeLogin(beforeLogin:@args_login_flag)
|
100
|
+
app_info_obj = PgyerHelper.share_instace.prepare_upload(working_directory:Dir.pwd, proj_name:@args_proj_name)
|
101
|
+
|
102
|
+
if app_info_obj.nil?
|
103
|
+
raise Informative, "#{@args_proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
|
104
|
+
end
|
105
|
+
|
106
|
+
result_data = PgyerHelper.share_instace.start_upload(app_info_obj:app_info_obj, ipa_file_upload:@args_ipa_file, description:@args_upload_desc)
|
107
|
+
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
108
|
+
msg_data = PgyerHelper.share_instace.make_msg_data(app_info_obj:app_info_obj, app_version_info_obj:result_data["data"])
|
109
|
+
PgyerHelper.share_instace.print_app_version_info(msg_data:msg_data)
|
110
|
+
if @args_send_flag
|
111
|
+
PgyerHelper.share_instace.send_apptest_wechat_msg(msg_data:msg_data)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
require 'pindo/command/pgyer/login'
|
3
|
+
require 'pindo/command/pgyer/upload'
|
4
|
+
require 'pindo/command/pgyer/download'
|
5
|
+
require 'pindo/command/pgyer/comment'
|
6
|
+
require 'pindo/command/pgyer/apptest'
|
7
|
+
require 'pindo/command/pgyer/resign'
|
8
|
+
|
9
|
+
module Pindo
|
10
|
+
class Command
|
11
|
+
|
12
|
+
class Pgyer < Command
|
13
|
+
self.abstract_command = true
|
14
|
+
self.summary = 'pgyer网站的相关命令'
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
|
2
|
-
require 'pindo/repo/login'
|
3
|
-
require 'pindo/repo/clone'
|
4
|
-
require 'pindo/repo/create'
|
5
|
-
require 'pindo/repo/search'
|
2
|
+
require 'pindo/command/repo/login'
|
3
|
+
require 'pindo/command/repo/clone'
|
4
|
+
require 'pindo/command/repo/create'
|
5
|
+
require 'pindo/command/repo/search'
|
6
6
|
|
7
7
|
module Pindo
|
8
8
|
class Command
|