pindo 4.6.9 → 4.7.1
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 +75 -0
- data/lib/pindo/base/funlog.rb +89 -0
- data/lib/pindo/base/githelper.rb +35 -18
- 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/bossconfigclient.rb +3 -3
- data/lib/pindo/client/pgyerclient.rb +159 -100
- 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 +183 -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 +28 -76
- data/lib/pindo/{dev → command/dev}/autoresign.rb +21 -64
- data/lib/pindo/command/dev/build.rb +94 -0
- 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 +26 -0
- data/lib/pindo/command/env.rb +17 -0
- data/lib/pindo/{ipa → command/ipa}/autoresign.rb +22 -70
- data/lib/pindo/{ipa → command/ipa}/import.rb +48 -103
- data/lib/pindo/{ipa → command/ipa}/output.rb +43 -135
- data/lib/pindo/command/ipa.rb +16 -0
- data/lib/pindo/{lib → command/lib}/update.rb +23 -14
- 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/config/pindoconfig.rb +27 -0
- data/lib/pindo/module/appselect.rb +9 -8
- data/lib/pindo/module/build/swarkhelper.rb +95 -0
- data/lib/pindo/module/cert/certhelper.rb +187 -0
- data/lib/pindo/module/cert/keychainhelper.rb +150 -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 +326 -0
- data/lib/pindo/module/{pgyerhelper.rb → pgyer/pgyerhelper.rb} +246 -36
- 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 +119 -0
- data/lib/pindo/options/appconfigoptions.rb +1 -0
- data/lib/pindo/options/deployoptions.rb +38 -42
- data/lib/pindo/version.rb +1 -1
- metadata +110 -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
@@ -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
|
-
|
63
|
-
|
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, "
|
86
|
-
if !
|
87
|
-
proj_name = File.basename(
|
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 && !
|
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, "
|
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.
|
121
|
-
platform = @platform || "
|
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
|
@@ -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/
|
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/
|
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/
|
29
|
-
require 'pindo/module/
|
30
|
-
|
31
|
-
require 'pindo/module/
|
32
|
-
require 'pindo/module/
|
33
|
-
require 'pindo/module/
|
34
|
-
|
35
|
-
require 'pindo/
|
36
|
-
require 'pindo/
|
37
|
-
require 'pindo/
|
38
|
-
|
39
|
-
|
40
|
-
require 'pindo/
|
41
|
-
require 'pindo/
|
42
|
-
require 'pindo/
|
43
|
-
require 'pindo/
|
44
|
-
require 'pindo/
|
45
|
-
require 'pindo/
|
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
|