pindo 4.6.9 → 4.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/aeshelper.rb +75 -0
  3. data/lib/pindo/base/funlog.rb +89 -0
  4. data/lib/pindo/base/githelper.rb +35 -18
  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/bossconfigclient.rb +3 -3
  12. data/lib/pindo/client/pgyerclient.rb +159 -100
  13. data/lib/pindo/command/appstore/iap.rb +43 -0
  14. data/lib/pindo/command/appstore/itcapp.rb +41 -0
  15. data/lib/pindo/command/appstore/metadata.rb +43 -0
  16. data/lib/pindo/command/appstore/screenshots.rb +43 -0
  17. data/lib/pindo/command/appstore/upload.rb +40 -0
  18. data/lib/pindo/command/appstore.rb +17 -0
  19. data/lib/pindo/command/deploy/build.rb +109 -0
  20. data/lib/pindo/{deploy → command/deploy}/bundleid.rb +1 -1
  21. data/lib/pindo/command/deploy/cert.rb +183 -0
  22. data/lib/pindo/command/deploy/configproj.rb +105 -0
  23. data/lib/pindo/{deploy → command/deploy}/getitcinfo.rb +1 -1
  24. data/lib/pindo/{deploy → command/deploy}/iap.rb +30 -9
  25. data/lib/pindo/{deploy → command/deploy}/itcapp.rb +0 -1
  26. data/lib/pindo/{deploy → command/deploy}/itcinfo.rb +2 -3
  27. data/lib/pindo/{deploy → command/deploy}/pem.rb +3 -2
  28. data/lib/pindo/{deploy → command/deploy}/resign.rb +14 -63
  29. data/lib/pindo/command/deploy.rb +44 -0
  30. data/lib/pindo/{dev → command/dev}/autobuild.rb +28 -76
  31. data/lib/pindo/{dev → command/dev}/autoresign.rb +21 -64
  32. data/lib/pindo/command/dev/build.rb +94 -0
  33. data/lib/pindo/{dev → command/dev}/createbuild.rb +0 -2
  34. data/lib/pindo/{dev → command/dev}/debug.rb +6 -2
  35. data/lib/pindo/command/dev/pgyercert.rb +75 -0
  36. data/lib/pindo/command/dev.rb +26 -0
  37. data/lib/pindo/command/env.rb +17 -0
  38. data/lib/pindo/{ipa → command/ipa}/autoresign.rb +22 -70
  39. data/lib/pindo/{ipa → command/ipa}/import.rb +48 -103
  40. data/lib/pindo/{ipa → command/ipa}/output.rb +43 -135
  41. data/lib/pindo/command/ipa.rb +16 -0
  42. data/lib/pindo/{lib → command/lib}/update.rb +23 -14
  43. data/lib/pindo/command/lib.rb +16 -0
  44. data/lib/pindo/{pgyer → command/pgyer}/apptest.rb +7 -29
  45. data/lib/pindo/{pgyer → command/pgyer}/comment.rb +7 -30
  46. data/lib/pindo/{pgyer → command/pgyer}/download.rb +35 -30
  47. data/lib/pindo/{pgyer → command/pgyer}/login.rb +3 -4
  48. data/lib/pindo/command/pgyer/resign.rb +111 -0
  49. data/lib/pindo/command/pgyer/upload.rb +123 -0
  50. data/lib/pindo/command/pgyer.rb +18 -0
  51. data/lib/pindo/{repo.rb → command/repo.rb} +4 -4
  52. data/lib/pindo/{utils → command/utils}/applovin.rb +43 -33
  53. data/lib/pindo/{utils → command/utils}/boss.rb +3 -3
  54. data/lib/pindo/command/utils/icon.rb +81 -0
  55. data/lib/pindo/{utils → command/utils}/renewproj.rb +1 -0
  56. data/lib/pindo/command/utils.rb +26 -0
  57. data/lib/pindo/command.rb +23 -26
  58. data/lib/pindo/config/pindoconfig.rb +27 -0
  59. data/lib/pindo/module/appselect.rb +9 -8
  60. data/lib/pindo/module/build/swarkhelper.rb +95 -0
  61. data/lib/pindo/module/cert/certhelper.rb +187 -0
  62. data/lib/pindo/module/cert/keychainhelper.rb +150 -0
  63. data/lib/pindo/module/{pemcreate.rb → cert/pemhelper.rb} +3 -1
  64. data/lib/pindo/module/cert/provisioninghelper.rb +137 -0
  65. data/lib/pindo/module/cert/xcodecerthelper.rb +326 -0
  66. data/lib/pindo/module/{pgyerhelper.rb → pgyer/pgyerhelper.rb} +246 -36
  67. data/lib/pindo/module/xcode/xcodeappconfig.rb +188 -0
  68. data/lib/pindo/module/xcode/xcodebuildconfig.rb +12 -0
  69. data/lib/pindo/module/xcode/xcodebuildhelper.rb +312 -0
  70. data/lib/pindo/module/xcode/xcoderesconstant.rb +248 -0
  71. data/lib/pindo/module/xcode/xcodereshandler.rb +198 -0
  72. data/lib/pindo/module/xcode/xcodereshelper.rb +119 -0
  73. data/lib/pindo/options/appconfigoptions.rb +1 -0
  74. data/lib/pindo/options/deployoptions.rb +38 -42
  75. data/lib/pindo/version.rb +1 -1
  76. metadata +110 -97
  77. data/lib/pindo/deploy/Fastfile +0 -233
  78. data/lib/pindo/deploy/build.rb +0 -167
  79. data/lib/pindo/deploy/cert.rb +0 -508
  80. data/lib/pindo/deploy/configproj.rb +0 -89
  81. data/lib/pindo/deploy.rb +0 -44
  82. data/lib/pindo/dev.rb +0 -23
  83. data/lib/pindo/env/flutter.rb +0 -59
  84. data/lib/pindo/env/flutter.sh +0 -116
  85. data/lib/pindo/env.rb +0 -17
  86. data/lib/pindo/ipa.rb +0 -22
  87. data/lib/pindo/lib.rb +0 -18
  88. data/lib/pindo/module/buildconfighelper.rb +0 -13
  89. data/lib/pindo/module/buildhelper.rb +0 -76
  90. data/lib/pindo/module/config_project.sh +0 -143
  91. data/lib/pindo/module/configprojhelper.rb +0 -631
  92. data/lib/pindo/module/icon_contents.json +0 -116
  93. data/lib/pindo/module/imessage_icon.json +0 -91
  94. data/lib/pindo/module/imgset_contents.json +0 -21
  95. data/lib/pindo/module/launchimg_contents.json +0 -21
  96. data/lib/pindo/module/xcodebuildpre.rb +0 -258
  97. data/lib/pindo/pgyer/upload.rb +0 -234
  98. data/lib/pindo/pgyer.rb +0 -17
  99. data/lib/pindo/utils/icon.rb +0 -91
  100. data/lib/pindo/utils/icon.sh +0 -133
  101. data/lib/pindo/utils/podindex.rb +0 -56
  102. data/lib/pindo/utils/podindex.sh +0 -30
  103. data/lib/pindo/utils.rb +0 -29
  104. /data/lib/pindo/{deploy → command/deploy}/check.rb +0 -0
  105. /data/lib/pindo/{deploy → command/deploy}/confusecode.rb +0 -0
  106. /data/lib/pindo/{deploy → command/deploy}/confuseproj.rb +0 -0
  107. /data/lib/pindo/{deploy → command/deploy}/fabric.rb +0 -0
  108. /data/lib/pindo/{deploy → command/deploy}/initconfig.rb +0 -0
  109. /data/lib/pindo/{deploy → command/deploy}/pullconfig.rb +0 -0
  110. /data/lib/pindo/{deploy → command/deploy}/pushconfig.rb +0 -0
  111. /data/lib/pindo/{deploy → command/deploy}/quswark.rb +0 -0
  112. /data/lib/pindo/{deploy → command/deploy}/quswauth.rb +0 -0
  113. /data/lib/pindo/{deploy → command/deploy}/reportbug.rb +0 -0
  114. /data/lib/pindo/{deploy → command/deploy}/tag.rb +0 -0
  115. /data/lib/pindo/{deploy → command/deploy}/updateconfig.rb +0 -0
  116. /data/lib/pindo/{deploy → command/deploy}/uploadipa.rb +0 -0
  117. /data/lib/pindo/{dev → command/dev}/confusecode.rb +0 -0
  118. /data/lib/pindo/{dev → command/dev}/confuseproj.rb +0 -0
  119. /data/lib/pindo/{dev → command/dev}/pub.rb +0 -0
  120. /data/lib/pindo/{dev → command/dev}/renewcert.rb +0 -0
  121. /data/lib/pindo/{env → command/env}/dreamstudio.rb +0 -0
  122. /data/lib/pindo/{env → command/env}/quarkenv.rb +0 -0
  123. /data/lib/pindo/{env → command/env}/swarkenv.rb +0 -0
  124. /data/lib/pindo/{env → command/env}/workhard.rb +0 -0
  125. /data/lib/pindo/{lib → command/lib}/forcepush.rb +0 -0
  126. /data/lib/pindo/{lib → command/lib}/lint.rb +0 -0
  127. /data/lib/pindo/{lib → command/lib}/push.rb +0 -0
  128. /data/lib/pindo/{repo → command/repo}/clone.rb +0 -0
  129. /data/lib/pindo/{repo → command/repo}/create.rb +0 -0
  130. /data/lib/pindo/{repo → command/repo}/login.rb +0 -0
  131. /data/lib/pindo/{repo → command/repo}/search.rb +0 -0
  132. /data/lib/pindo/{setup.rb → command/setup.rb} +0 -0
  133. /data/lib/pindo/{upgrade.rb → command/upgrade.rb} +0 -0
  134. /data/lib/pindo/{utils → command/utils}/clearcert.rb +0 -0
  135. /data/lib/pindo/{utils → command/utils}/device.rb +0 -0
  136. /data/lib/pindo/{utils → command/utils}/tgate.rb +0 -0
  137. /data/lib/pindo/{utils → command/utils}/xcassets.rb +0 -0
  138. /data/lib/pindo/{utils → command/utils}/xcassets.sh +0 -0
  139. /data/lib/pindo/module/{appstore_in_app_purchase.rb → appstore/appstore_in_app_purchase.rb} +0 -0
  140. /data/lib/pindo/module/{appstore_metadata_connect_api_helper.rb → appstore/appstore_metadata_connect_api_helper.rb} +0 -0
  141. /data/lib/pindo/module/{appstore_metadata_fastlane_helper.rb → appstore/appstore_metadata_fastlane_helper.rb} +0 -0
  142. /data/lib/pindo/module/{iap_tier.json → appstore/iap_tier.json} +0 -0
  143. /data/lib/pindo/module/{commonconfuseproj.rb → build/commonconfuseproj.rb} +0 -0
  144. /data/lib/pindo/module/{xcodehelper.rb → xcode/xcodehelper.rb} +0 -0
@@ -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
@@ -24,6 +24,7 @@ module Pindo
24
24
  [
25
25
  ['--appstore', 'appstore模式,一般不用'],
26
26
  ['--install', '是否运行applovin脚本'],
27
+ ['--upload', '保存ids, 留作applovin网络不好情况使用'],
27
28
  ].concat(super)
28
29
  end
29
30
 
@@ -31,6 +32,7 @@ module Pindo
31
32
 
32
33
  @args_appstore_flag = argv.flag?('appstore', false)
33
34
  @args_install_flag = argv.flag?('install', false)
35
+ @args_upload_flag = argv.flag?('upload', false)
34
36
 
35
37
  super(argv)
36
38
  @additional_args = argv.remainder!
@@ -44,7 +46,11 @@ module Pindo
44
46
 
45
47
  skadnetwork_id_array = []
46
48
 
49
+ Funlog.instance.fancyinfo_start("正在请求applovin数据...")
50
+
47
51
  applovin_res_json = req_applovin_json
52
+ # puts JSON.pretty_generate(applovin_res_json)
53
+
48
54
  if !applovin_res_json.nil? && !applovin_res_json["skadnetwork_ids"].nil?
49
55
  applovin_res_json["skadnetwork_ids"].each do |network_id|
50
56
  skadnetwork_id_array << network_id["skadnetwork_id"]
@@ -52,44 +58,51 @@ module Pindo
52
58
  end
53
59
 
54
60
  applovin_media_res_json = req_applovin_mediia_json
61
+ # puts JSON.pretty_generate(applovin_media_res_json)
55
62
  if !applovin_media_res_json.nil? && !applovin_media_res_json["mediationSKAdnetworkIdsSpecs"].nil?
56
63
  applovin_media_res_json["mediationSKAdnetworkIdsSpecs"].each do |media_item|
57
64
  skadnetwork_id_array = skadnetwork_id_array + media_item["skAdnetworkIds"]
58
65
  end
59
66
  end
60
67
 
61
- skadnetwork_id_array = skadnetwork_id_array.uniq
62
- if !skadnetwork_id_array.nil? && skadnetwork_id_array.size.size > 50
63
- puts "SKAdNetworkItems Size: #{skadnetwork_id_array.size}"
68
+ skadnetwork_id_array = skadnetwork_id_array.uniq || []
69
+
70
+ Funlog.instance.fancyinfo_success("请求applovin数据,获取到#{skadnetwork_id_array.size}条数据...")
71
+
72
+ if !skadnetwork_id_array.nil? && skadnetwork_id_array.size > 50
73
+ # puts "From Applovin SKAdNetworkItems Size: #{skadnetwork_id_array.size}"
74
+ if @args_upload_flag
75
+ applovin_config_file = File.join(pindo_single_config.pindo_common_configdir,"applovin_client_config.json")
76
+ origin_json = {}
77
+ if File.exist?(applovin_config_file)
78
+ origin_json = JSON.parse(File.read(applovin_config_file))
79
+ end
80
+ origin_json["SKAdNetworkItems"] = skadnetwork_id_array
81
+ File.write(applovin_config_file, JSON.pretty_generate(origin_json))
82
+ git_addpush_repo(path:pindo_single_config.pindo_common_configdir, message:"Applovin SKAdNetworkItems", commit_file_params:["applovin_client_config.json"])
83
+ end
64
84
  else
85
+ Funlog.instance.fancyinfo_start("网络拉取applovin数据太少,从缓存中获取数据...")
65
86
  config_file = File.join(File::expand_path(Pindoconfig.instance.pindo_common_configdir), "applovin_client_config.json")
66
87
  config_json = JSON.parse(File.read(config_file))
67
88
  skadnetwork_id_array = skadnetwork_id_array + config_json["SKAdNetworkItems"]
68
- puts "SKAdNetworkItems Size: #{skadnetwork_id_array.size}"
89
+ # puts "From Config SKAdNetworkItems Size: #{skadnetwork_id_array.size}"
90
+ Funlog.instance.fancyinfo_success("网络拉取applovin数据太少,从缓存中获取到#{skadnetwork_id_array.size}条数据...")
69
91
  end
70
92
 
71
-
72
- current_dir = Dir.pwd
73
- project_fullname = nil
74
- Dir.chdir(current_dir)
75
- Dir.foreach(current_dir) do |file|
76
- if file =~ /(.*).xcodeproj/
77
- project_fullname = file
78
- break;
79
- end
80
- end
81
- project_root_dir = current_dir
82
93
 
94
+ Funlog.instance.fancyinfo_start("正在写入Xcode中...")
95
+
96
+ skadnetwork_id_array = skadnetwork_id_array.uniq || []
83
97
 
98
+ project_root_dir = Dir.pwd
99
+ xcodeproj_file_name = Dir.glob(File.join(project_root_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
84
100
 
85
- plist_file_name = File.join(project_root_dir, "Applovin-info.plist")
86
- if !project_fullname.nil?
87
- proj_name = File.basename(project_fullname, ".xcodeproj")
101
+ plist_file_name = File.join(project_root_dir, "AppEntry/Info.plist")
102
+ if !xcodeproj_file_name.nil?
103
+ proj_name = File.basename(xcodeproj_file_name, ".xcodeproj")
88
104
  plist_file_name = get_applovin_infoplist(project_dir:project_root_dir, proj_name:proj_name)
89
105
  end
90
-
91
-
92
- puts plist_file_name
93
106
 
94
107
 
95
108
  info_plist_dict = {}
@@ -105,9 +118,6 @@ module Pindo
105
118
  info_plist_dict["NSAppTransportSecurity"]["NSAllowsArbitraryLoads"] = true
106
119
  end
107
120
 
108
- # puts JSON.pretty_generate(info_plist_dict["SKAdNetworkItems"])
109
- # puts 111
110
- # info_plist_dict["NSUserTrackingUsageDescription"] = info_plist_dict["NSUserTrackingUsageDescription"] || "Your data will be used to provide you a better experience. We don't share any data with 3rd parties."
111
121
 
112
122
  if !skadnetwork_id_array.nil? && skadnetwork_id_array.size > 0
113
123
  info_plist_dict["SKAdNetworkItems"] = []
@@ -118,13 +128,11 @@ module Pindo
118
128
  end
119
129
  end
120
130
 
121
-
122
-
123
131
  Xcodeproj::Plist.write_to_path(info_plist_dict, plist_file_name)
124
-
125
132
 
133
+ Funlog.instance.fancyinfo_success("Xcode中applovin数据修改完成!")
126
134
 
127
- if @args_install_flag && !project_fullname.nil?
135
+ if @args_install_flag && !xcodeproj_file_name.nil? && File.exist?(xcodeproj_file_name)
128
136
 
129
137
  pindo_common_dir = pindo_single_config.pindo_common_configdir
130
138
 
@@ -136,15 +144,17 @@ module Pindo
136
144
  project_script_file = File.join(project_root_dir, "AppLovinQualityServiceSetup-ios.rb")
137
145
  FileUtils.cp_r(app_lovin_script, project_script_file)
138
146
  command = "ruby " + project_script_file
139
- puts command
140
- system command
141
-
147
+ # puts command
148
+ system command
142
149
  end
150
+
151
+
143
152
  end
144
153
 
154
+
145
155
  def get_applovin_infoplist(project_dir:nil, proj_name:nil)
146
156
 
147
- info_plist_path = File.join(project_dir, "Applovin-info.plist")
157
+ info_plist_path = File.join(project_dir, "AppEntry/Info.plist")
148
158
  proj_fullname = File.join(project_dir, proj_name) + ".xcodeproj"
149
159
  if File.exist?(proj_fullname)
150
160
  project_obj = Xcodeproj::Project.open(proj_fullname)
@@ -163,7 +173,6 @@ module Pindo
163
173
 
164
174
  def req_applovin_json
165
175
 
166
-
167
176
  begin
168
177
  # https://dash.applovin.com/docs/v1/skadnetwork_ids.json
169
178
  applovin_url = "https://dash.applovin.com/docs/v1/skadnetwork_ids.json"
@@ -174,6 +183,7 @@ module Pindo
174
183
  end
175
184
 
176
185
  applovin_res_json = JSON.parse(res.body)
186
+
177
187
  return applovin_res_json
178
188
  rescue Exception => e
179
189
  return nil
@@ -110,15 +110,15 @@ module Pindo
110
110
  if @platform.nil?
111
111
  @platform = current_config_json["app_setting"]["kGUKeyAppPlatform"]
112
112
  end
113
-
113
+
114
114
  if base_url.nil?
115
115
  base_url = current_config_json["app_setting"]["kGUKeyAppClientHost"]
116
116
  end
117
117
  end
118
118
 
119
119
  app_version = @appversion || "1.0.0"
120
- bundle_id = @bundleid || "com.heroneverdie101.fancyapptest"
121
- platform = @platform || "iOS_Funny_Test"
120
+ bundle_id = @bundleid || "com.heroneverdie101.fancyapp"
121
+ platform = @platform || "iOS_Funny_Release"
122
122
  apptype = @apptype || "FunnyApp"
123
123
 
124
124
  boss_client = BossClient.new(app_type:apptype, is_dev:false, base_url:base_url)
@@ -0,0 +1,81 @@
1
+
2
+
3
+ require 'highline/import'
4
+ require 'fileutils'
5
+ require 'json'
6
+ require "pindo/base/xcodeconst"
7
+ require 'pindo/module/xcode/xcodereshelper'
8
+
9
+ module Pindo
10
+ class Command
11
+ class Utils < Command
12
+ class Icon < Utils
13
+
14
+ extend Executable
15
+ executable :sips
16
+
17
+
18
+ self.summary = '根据1024*1024icon生成Xcode标准icon文件'
19
+
20
+ self.description = <<-DESC
21
+ 根据1024*1024icon生成Xcode标准icon文件,用法:pindo utils icon path/to/demo.png
22
+ DESC
23
+
24
+
25
+ self.arguments = [
26
+ CLAide::Argument.new('path/to/demo.png', true),
27
+ ]
28
+
29
+ def self.options
30
+ [
31
+ ['--install', '生成icon后拷贝进Xcode工程里, 用法 pindo utils icon --install'],
32
+ ].concat(super)
33
+ end
34
+
35
+ def initialize(argv)
36
+ @icon_name = argv.shift_argument
37
+ @args_install_flag = argv.flag?('install', false)
38
+ super(argv)
39
+ @additional_args = argv.remainder!
40
+ end
41
+
42
+ def validate!
43
+ super
44
+ help! 'Need a icon name' if @icon_name.nil? || @icon_name.empty?
45
+ end
46
+
47
+ def run
48
+ icon_name = @icon_name
49
+ time = Time.now.strftime('%m%d-%H%M%S')
50
+ new_icon_dir = File.join(Dir.pwd, "icon_"+time)
51
+
52
+
53
+ Funlog.instance.fancyinfo_start("正在生成icon...")
54
+ begin
55
+ XcodeResHelper.create_icons(icon_name: icon_name, new_icon_dir: new_icon_dir)
56
+ Funlog.instance.fancyinfo_success("生成icon成功!")
57
+ rescue StandardError => e
58
+ Funlog.instance.fancyinfo_error("生成icon失败!")
59
+ end
60
+
61
+
62
+ if @args_install_flag
63
+ Funlog.instance.fancyinfo_start("正在给Xcode替换icon...")
64
+ XcodeResHelper.install_icon(proj_dir: Dir.pwd, new_icon_dir: new_icon_dir)
65
+ Funlog.instance.fancyinfo_success("Xcode替换icon完成!")
66
+ begin
67
+ FileUtils.remove_dir(new_icon_dir)
68
+ rescue StandardError => e
69
+
70
+ end
71
+ else
72
+ puts "open #{new_icon_dir}"
73
+ end
74
+
75
+ end
76
+
77
+
78
+ end
79
+ end
80
+ end
81
+ end
@@ -2,6 +2,7 @@
2
2
  require 'xcodeproj'
3
3
  require 'find'
4
4
  require 'fileutils'
5
+ require 'pindo/module/xcode/xcodehelper'
5
6
 
6
7
  module Pindo
7
8
  class Command
@@ -0,0 +1,26 @@
1
+
2
+ require 'pindo/command/utils/icon'
3
+ require 'pindo/command/utils/renewproj'
4
+ require 'pindo/command/utils/clearcert'
5
+ require 'pindo/command/utils/xcassets'
6
+ require 'pindo/command/utils/device'
7
+ require 'pindo/command/utils/applovin'
8
+ require 'pindo/command/utils/tgate'
9
+ require 'pindo/command/utils/boss'
10
+
11
+
12
+ module Pindo
13
+ class Command
14
+
15
+ class Utils < Command
16
+
17
+
18
+ self.abstract_command = true
19
+
20
+ self.summary = '其他工具类的相关命令'
21
+
22
+
23
+ end
24
+
25
+ end
26
+ end
data/lib/pindo/command.rb CHANGED
@@ -3,11 +3,13 @@
3
3
  require 'claide'
4
4
  require 'json'
5
5
  require 'pindo/version'
6
- require 'pindo/config/pindoconfig'
6
+ require 'pindo/base/funlog'
7
+ require 'pindo/base/hashhelper'
7
8
  require 'pindo/base/plaininformative'
8
9
  require 'pindo/base/githelper'
9
10
  require 'pindo/client/giteeclient'
10
- require 'pindo/base/hashhelper'
11
+ require 'pindo/config/pindoconfig'
12
+
11
13
 
12
14
  module Pindo
13
15
  class Informative < PlainInformative
@@ -20,33 +22,28 @@ module Pindo
20
22
 
21
23
  include Pindo::Githelper
22
24
  include Pindoconfig::Mixin
25
+ include Funlog::Mixin
23
26
 
24
27
  require 'pindo/options/deployoptions'
25
-
26
-
27
28
  require 'pindo/module/appselect'
28
- require 'pindo/module/buildconfighelper'
29
- require 'pindo/module/buildhelper'
30
- require 'pindo/module/pemcreate'
31
- require 'pindo/module/commonconfuseproj'
32
- require 'pindo/module/xcodebuildpre'
33
- require 'pindo/module/xcodehelper'
34
- require 'pindo/module/configprojhelper'
35
- require 'pindo/module/appstore_in_app_purchase'
36
- require 'pindo/module/appstore_metadata_fastlane_helper'
37
- require 'pindo/module/appstore_metadata_connect_api_helper'
38
-
39
-
40
- require 'pindo/deploy'
41
- require 'pindo/dev'
42
- require 'pindo/env'
43
- require 'pindo/lib'
44
- require 'pindo/utils'
45
- require 'pindo/pgyer'
46
- require 'pindo/setup'
47
- require 'pindo/repo'
48
- require 'pindo/upgrade'
49
- require 'pindo/ipa'
29
+ require 'pindo/module/build/commonconfuseproj'
30
+ require 'pindo/module/cert/xcodecerthelper'
31
+
32
+ require 'pindo/module/appstore/appstore_in_app_purchase'
33
+ require 'pindo/module/appstore/appstore_metadata_fastlane_helper'
34
+ require 'pindo/module/appstore/appstore_metadata_connect_api_helper'
35
+
36
+ require 'pindo/command/deploy'
37
+ require 'pindo/command/dev'
38
+ require 'pindo/command/env'
39
+ require 'pindo/command/lib'
40
+ require 'pindo/command/utils'
41
+ require 'pindo/command/pgyer'
42
+ require 'pindo/command/setup'
43
+ require 'pindo/command/repo'
44
+ require 'pindo/command/upgrade'
45
+ require 'pindo/command/ipa'
46
+ require 'pindo/command/appstore'
50
47
 
51
48
 
52
49
  attr_accessor :args_help_flag