pindo 4.6.9 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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