pindo 4.6.9 → 4.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/aeshelper.rb +48 -2
  3. data/lib/pindo/base/funlog.rb +89 -0
  4. data/lib/pindo/base/githelper.rb +30 -12
  5. data/lib/pindo/base/plaininformative.rb +3 -0
  6. data/lib/pindo/base/standarderror.rb +1 -0
  7. data/lib/pindo/base/xcodeconst.rb +251 -0
  8. data/lib/pindo/client/applovinclient.rb +6 -3
  9. data/lib/pindo/client/aws3sclient.rb +33 -46
  10. data/lib/pindo/client/bossclient.rb +1 -1
  11. data/lib/pindo/client/pgyerclient.rb +78 -14
  12. data/lib/pindo/command/appstore/iap.rb +43 -0
  13. data/lib/pindo/command/appstore/itcapp.rb +41 -0
  14. data/lib/pindo/command/appstore/metadata.rb +43 -0
  15. data/lib/pindo/command/appstore/screenshots.rb +43 -0
  16. data/lib/pindo/command/appstore/upload.rb +40 -0
  17. data/lib/pindo/command/appstore.rb +17 -0
  18. data/lib/pindo/command/deploy/build.rb +109 -0
  19. data/lib/pindo/{deploy → command/deploy}/bundleid.rb +1 -1
  20. data/lib/pindo/command/deploy/cert.rb +179 -0
  21. data/lib/pindo/command/deploy/configproj.rb +105 -0
  22. data/lib/pindo/{deploy → command/deploy}/getitcinfo.rb +1 -1
  23. data/lib/pindo/{deploy → command/deploy}/iap.rb +30 -9
  24. data/lib/pindo/{deploy → command/deploy}/itcapp.rb +0 -1
  25. data/lib/pindo/{deploy → command/deploy}/itcinfo.rb +2 -3
  26. data/lib/pindo/{deploy → command/deploy}/pem.rb +3 -2
  27. data/lib/pindo/{deploy → command/deploy}/resign.rb +14 -63
  28. data/lib/pindo/command/deploy.rb +44 -0
  29. data/lib/pindo/{dev → command/dev}/autobuild.rb +17 -80
  30. data/lib/pindo/{dev → command/dev}/autoresign.rb +17 -64
  31. data/lib/pindo/{dev → command/dev}/createbuild.rb +0 -2
  32. data/lib/pindo/{dev → command/dev}/debug.rb +6 -2
  33. data/lib/pindo/command/dev/pgyercert.rb +75 -0
  34. data/lib/pindo/command/dev.rb +25 -0
  35. data/lib/pindo/command/env.rb +17 -0
  36. data/lib/pindo/{ipa → command/ipa}/autoresign.rb +18 -70
  37. data/lib/pindo/{ipa → command/ipa}/import.rb +47 -102
  38. data/lib/pindo/{ipa → command/ipa}/output.rb +38 -135
  39. data/lib/pindo/command/ipa.rb +16 -0
  40. data/lib/pindo/{lib → command/lib}/update.rb +19 -10
  41. data/lib/pindo/command/lib.rb +16 -0
  42. data/lib/pindo/{pgyer → command/pgyer}/apptest.rb +7 -29
  43. data/lib/pindo/{pgyer → command/pgyer}/comment.rb +7 -30
  44. data/lib/pindo/{pgyer → command/pgyer}/download.rb +35 -30
  45. data/lib/pindo/{pgyer → command/pgyer}/login.rb +3 -4
  46. data/lib/pindo/command/pgyer/resign.rb +111 -0
  47. data/lib/pindo/command/pgyer/upload.rb +123 -0
  48. data/lib/pindo/command/pgyer.rb +18 -0
  49. data/lib/pindo/{repo.rb → command/repo.rb} +4 -4
  50. data/lib/pindo/{utils → command/utils}/applovin.rb +43 -33
  51. data/lib/pindo/{utils → command/utils}/boss.rb +3 -3
  52. data/lib/pindo/command/utils/icon.rb +81 -0
  53. data/lib/pindo/{utils → command/utils}/renewproj.rb +1 -0
  54. data/lib/pindo/command/utils.rb +26 -0
  55. data/lib/pindo/command.rb +23 -26
  56. data/lib/pindo/module/build/swarkhelper.rb +95 -0
  57. data/lib/pindo/module/cert/certhelper.rb +176 -0
  58. data/lib/pindo/module/cert/keychainhelper.rb +138 -0
  59. data/lib/pindo/module/{pemcreate.rb → cert/pemhelper.rb} +3 -1
  60. data/lib/pindo/module/cert/provisioninghelper.rb +137 -0
  61. data/lib/pindo/module/cert/xcodecerthelper.rb +301 -0
  62. data/lib/pindo/module/{pgyerhelper.rb → pgyer/pgyerhelper.rb} +246 -35
  63. data/lib/pindo/module/xcode/xcodeappconfig.rb +188 -0
  64. data/lib/pindo/module/xcode/xcodebuildconfig.rb +12 -0
  65. data/lib/pindo/module/xcode/xcodebuildhelper.rb +312 -0
  66. data/lib/pindo/module/xcode/xcoderesconstant.rb +248 -0
  67. data/lib/pindo/module/xcode/xcodereshandler.rb +198 -0
  68. data/lib/pindo/module/xcode/xcodereshelper.rb +120 -0
  69. data/lib/pindo/options/appconfigoptions.rb +1 -0
  70. data/lib/pindo/options/deployoptions.rb +38 -41
  71. data/lib/pindo/version.rb +1 -1
  72. metadata +109 -97
  73. data/lib/pindo/deploy/Fastfile +0 -233
  74. data/lib/pindo/deploy/build.rb +0 -167
  75. data/lib/pindo/deploy/cert.rb +0 -508
  76. data/lib/pindo/deploy/configproj.rb +0 -89
  77. data/lib/pindo/deploy.rb +0 -44
  78. data/lib/pindo/dev.rb +0 -23
  79. data/lib/pindo/env/flutter.rb +0 -59
  80. data/lib/pindo/env/flutter.sh +0 -116
  81. data/lib/pindo/env.rb +0 -17
  82. data/lib/pindo/ipa.rb +0 -22
  83. data/lib/pindo/lib.rb +0 -18
  84. data/lib/pindo/module/buildconfighelper.rb +0 -13
  85. data/lib/pindo/module/buildhelper.rb +0 -76
  86. data/lib/pindo/module/config_project.sh +0 -143
  87. data/lib/pindo/module/configprojhelper.rb +0 -631
  88. data/lib/pindo/module/icon_contents.json +0 -116
  89. data/lib/pindo/module/imessage_icon.json +0 -91
  90. data/lib/pindo/module/imgset_contents.json +0 -21
  91. data/lib/pindo/module/launchimg_contents.json +0 -21
  92. data/lib/pindo/module/xcodebuildpre.rb +0 -258
  93. data/lib/pindo/pgyer/upload.rb +0 -234
  94. data/lib/pindo/pgyer.rb +0 -17
  95. data/lib/pindo/utils/icon.rb +0 -91
  96. data/lib/pindo/utils/icon.sh +0 -133
  97. data/lib/pindo/utils/podindex.rb +0 -56
  98. data/lib/pindo/utils/podindex.sh +0 -30
  99. data/lib/pindo/utils.rb +0 -29
  100. /data/lib/pindo/{deploy → command/deploy}/check.rb +0 -0
  101. /data/lib/pindo/{deploy → command/deploy}/confusecode.rb +0 -0
  102. /data/lib/pindo/{deploy → command/deploy}/confuseproj.rb +0 -0
  103. /data/lib/pindo/{deploy → command/deploy}/fabric.rb +0 -0
  104. /data/lib/pindo/{deploy → command/deploy}/initconfig.rb +0 -0
  105. /data/lib/pindo/{deploy → command/deploy}/pullconfig.rb +0 -0
  106. /data/lib/pindo/{deploy → command/deploy}/pushconfig.rb +0 -0
  107. /data/lib/pindo/{deploy → command/deploy}/quswark.rb +0 -0
  108. /data/lib/pindo/{deploy → command/deploy}/quswauth.rb +0 -0
  109. /data/lib/pindo/{deploy → command/deploy}/reportbug.rb +0 -0
  110. /data/lib/pindo/{deploy → command/deploy}/tag.rb +0 -0
  111. /data/lib/pindo/{deploy → command/deploy}/updateconfig.rb +0 -0
  112. /data/lib/pindo/{deploy → command/deploy}/uploadipa.rb +0 -0
  113. /data/lib/pindo/{dev → command/dev}/confusecode.rb +0 -0
  114. /data/lib/pindo/{dev → command/dev}/confuseproj.rb +0 -0
  115. /data/lib/pindo/{dev → command/dev}/pub.rb +0 -0
  116. /data/lib/pindo/{dev → command/dev}/renewcert.rb +0 -0
  117. /data/lib/pindo/{env → command/env}/dreamstudio.rb +0 -0
  118. /data/lib/pindo/{env → command/env}/quarkenv.rb +0 -0
  119. /data/lib/pindo/{env → command/env}/swarkenv.rb +0 -0
  120. /data/lib/pindo/{env → command/env}/workhard.rb +0 -0
  121. /data/lib/pindo/{lib → command/lib}/forcepush.rb +0 -0
  122. /data/lib/pindo/{lib → command/lib}/lint.rb +0 -0
  123. /data/lib/pindo/{lib → command/lib}/push.rb +0 -0
  124. /data/lib/pindo/{repo → command/repo}/clone.rb +0 -0
  125. /data/lib/pindo/{repo → command/repo}/create.rb +0 -0
  126. /data/lib/pindo/{repo → command/repo}/login.rb +0 -0
  127. /data/lib/pindo/{repo → command/repo}/search.rb +0 -0
  128. /data/lib/pindo/{setup.rb → command/setup.rb} +0 -0
  129. /data/lib/pindo/{upgrade.rb → command/upgrade.rb} +0 -0
  130. /data/lib/pindo/{utils → command/utils}/clearcert.rb +0 -0
  131. /data/lib/pindo/{utils → command/utils}/device.rb +0 -0
  132. /data/lib/pindo/{utils → command/utils}/tgate.rb +0 -0
  133. /data/lib/pindo/{utils → command/utils}/xcassets.rb +0 -0
  134. /data/lib/pindo/{utils → command/utils}/xcassets.sh +0 -0
  135. /data/lib/pindo/module/{appstore_in_app_purchase.rb → appstore/appstore_in_app_purchase.rb} +0 -0
  136. /data/lib/pindo/module/{appstore_metadata_connect_api_helper.rb → appstore/appstore_metadata_connect_api_helper.rb} +0 -0
  137. /data/lib/pindo/module/{appstore_metadata_fastlane_helper.rb → appstore/appstore_metadata_fastlane_helper.rb} +0 -0
  138. /data/lib/pindo/module/{iap_tier.json → appstore/iap_tier.json} +0 -0
  139. /data/lib/pindo/module/{commonconfuseproj.rb → build/commonconfuseproj.rb} +0 -0
  140. /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.rb'
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
- if @args_proj_name.nil?
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
- @pgyer_client = PgyerClient.new
62
- app_info_obj = nil
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(client:@pgyer_client, app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
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.rb'
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
- if @args_proj_name.nil?
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
- @pgyer_client = PgyerClient.new
62
- app_info_obj = nil
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
- version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(client:@pgyer_client, app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
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(client:@pgyer_client, app_info_obj:app_info_obj, version_item_obj:version_item_obj)
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.rb'
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
- if @args_proj_name.nil?
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
- @pgyer_client = PgyerClient.new
62
- app_info_obj = nil
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(client:@pgyer_client, app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
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
- puts "下载完成!"
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.rb'
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
- login_success = @pgyer_client.do_login(force_login:@args_login_flag)
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