pindo 4.9.3 → 4.9.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pindo/client/pgyerclient.rb +1 -1
- data/lib/pindo/command/dev/autobuild.rb +52 -118
- data/lib/pindo/command/dev/build.rb +39 -54
- data/lib/pindo/command/dev/debug.rb +6 -4
- data/lib/pindo/command/dev/repoinit.rb +128 -0
- data/lib/pindo/command/dev/tag.rb +25 -12
- data/lib/pindo/command/dev.rb +1 -2
- data/lib/pindo/command/ipa/import.rb +1 -1
- data/lib/pindo/command/pgyer/apptest.rb +18 -7
- data/lib/pindo/command/pgyer/comment.rb +15 -3
- data/lib/pindo/command/pgyer/download.rb +15 -3
- data/lib/pindo/command/pgyer/login.rb +14 -4
- data/lib/pindo/command/pgyer/resign.rb +20 -4
- data/lib/pindo/command/pgyer/upload.rb +52 -8
- data/lib/pindo/command/unity/ipa.rb +0 -1
- data/lib/pindo/version.rb +1 -1
- metadata +2 -7
- data/lib/pindo/command/dev/applovin.rb +0 -223
- data/lib/pindo/command/dev/autoresign.rb +0 -143
- data/lib/pindo/command/dev/confusecode.rb +0 -127
- data/lib/pindo/command/dev/confuseproj.rb +0 -111
- data/lib/pindo/command/dev/createbuild.rb +0 -156
- data/lib/pindo/command/dev/pgyercert.rb +0 -75
@@ -1,127 +0,0 @@
|
|
1
|
-
require 'highline/import'
|
2
|
-
require 'xcodeproj'
|
3
|
-
require 'find'
|
4
|
-
require 'fileutils'
|
5
|
-
|
6
|
-
module Pindo
|
7
|
-
class Command
|
8
|
-
class Dev < Command
|
9
|
-
class Confusecode < Dev
|
10
|
-
|
11
|
-
include Command::DeployOptions
|
12
|
-
|
13
|
-
include CommonConfuseProj
|
14
|
-
|
15
|
-
self.summary = '设置混淆编译第一步'
|
16
|
-
|
17
|
-
self.description = <<-DESC
|
18
|
-
目前该混淆方法已经废弃。设置混淆编译第一步.用法: pindo dev confusecode --type=class_method_variable_protocol_property_category_pods
|
19
|
-
|
20
|
-
DESC
|
21
|
-
|
22
|
-
self.arguments = [
|
23
|
-
CLAide::Argument.new('path/to/config.json', true),
|
24
|
-
]
|
25
|
-
|
26
|
-
def self.options
|
27
|
-
[
|
28
|
-
|
29
|
-
].concat(super)
|
30
|
-
end
|
31
|
-
|
32
|
-
def initialize(argv)
|
33
|
-
super
|
34
|
-
end
|
35
|
-
|
36
|
-
def validate!
|
37
|
-
super
|
38
|
-
end
|
39
|
-
|
40
|
-
def run
|
41
|
-
|
42
|
-
current_dir = Dir.pwd
|
43
|
-
current_project_dir = current_dir
|
44
|
-
app_config_dir = clong_buildconfig_repo(repo_name: @deploy_repo_name)
|
45
|
-
|
46
|
-
clang_repo_dir = clone_devclang_repo
|
47
|
-
# if !File.exist?(clang_repo_dir)
|
48
|
-
puts "#{clang_repo_dir}"
|
49
|
-
puts "There is no clang tool !!! dev confusecode"
|
50
|
-
# return
|
51
|
-
# end
|
52
|
-
|
53
|
-
symash_type = confuse_version_type(path:current_project_dir, default_type:"symash2")
|
54
|
-
if @newconfuse_flag
|
55
|
-
symash_type = "symash2"
|
56
|
-
end
|
57
|
-
confuse_tool_path = File.join(clang_repo_dir, symash_type)
|
58
|
-
puts "Confuse Tool Path: #{confuse_tool_path}"
|
59
|
-
|
60
|
-
meaning_tool = File.join(clang_repo_dir, "MeaningfulTools/MeaningfulName")
|
61
|
-
|
62
|
-
if symash_type == "symash1"
|
63
|
-
|
64
|
-
base_db = File.join(clang_repo_dir, "MeaningfulTools/confuse.db")
|
65
|
-
meaning_db = File.join(current_project_dir, "SymashCache/app_confuse.db")
|
66
|
-
origin_json_dir = File.join(current_project_dir, "SymashCache/Original")
|
67
|
-
output_dir = File.join(current_project_dir, "SymashCache")
|
68
|
-
confuse_type= @confuse_type
|
69
|
-
|
70
|
-
if File.exist?(File.join(output_dir, "Replaced.json"))
|
71
|
-
FileUtils.rm_rf(File.join(output_dir, "Replaced.json"))
|
72
|
-
end
|
73
|
-
|
74
|
-
puts "Tool: #{meaning_tool}"
|
75
|
-
puts "Base DB: #{base_db}"
|
76
|
-
puts "DB: #{meaning_db}"
|
77
|
-
puts "Origin Dir: #{origin_json_dir}"
|
78
|
-
puts "Output Dir: #{output_dir}"
|
79
|
-
puts "Project Dir: #{current_project_dir}"
|
80
|
-
puts "Confuse Type: #{confuse_type}"
|
81
|
-
|
82
|
-
if File.exist?(origin_json_dir)
|
83
|
-
command = meaning_tool + " -r -p 100 -i 100 -b " + @bundle_id + " -d " + origin_json_dir + " -o " + base_db + " -m " + meaning_db + " -t " + output_dir + " -f " + current_project_dir + " -z " + confuse_type
|
84
|
-
puts "Command: #{command}"
|
85
|
-
system command
|
86
|
-
end
|
87
|
-
|
88
|
-
text = File.read(File.join(current_project_dir, "Symash.json"))
|
89
|
-
new_contents = text.gsub(/\"IMPORT\".*/, "\"IMPORT\":true,")
|
90
|
-
File.open(File.join(current_project_dir, "Symash.json"), "w") {|file| file.puts new_contents }
|
91
|
-
|
92
|
-
text = File.read(File.join(current_project_dir, "Symash.json"))
|
93
|
-
new_contents = text.gsub(/\"STRICT\".*/, "\"STRICT\":true,")
|
94
|
-
File.open(File.join(current_project_dir, "Symash.json"), "w") {|file| file.puts new_contents }
|
95
|
-
else
|
96
|
-
|
97
|
-
|
98
|
-
puts "Tool: #{meaning_tool}"
|
99
|
-
|
100
|
-
puts "+++++++"
|
101
|
-
puts "+++++++"
|
102
|
-
puts "+++++++"
|
103
|
-
service_path = File.join(confuse_tool_path, "/Applications/SymashX.app/Contents/MacOS/symashctl")
|
104
|
-
command1 = "cd #{current_project_dir} && " + service_path + " stop"
|
105
|
-
puts "Command: #{command1}"
|
106
|
-
system command1
|
107
|
-
puts "+++++++"
|
108
|
-
puts "+++++++"
|
109
|
-
puts "+++++++"
|
110
|
-
|
111
|
-
if File.exist?(File.join(current_project_dir, "SymashData/export-sympkg.plist"))
|
112
|
-
command = meaning_tool + " -q -f " + current_project_dir
|
113
|
-
puts "Command: #{command}"
|
114
|
-
system command
|
115
|
-
end
|
116
|
-
|
117
|
-
command2 = "cd #{current_project_dir} && " + service_path + " start -backend"
|
118
|
-
puts "Command: #{command2}"
|
119
|
-
system command2
|
120
|
-
puts "Done !"
|
121
|
-
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
@@ -1,111 +0,0 @@
|
|
1
|
-
require 'highline/import'
|
2
|
-
require 'xcodeproj'
|
3
|
-
require 'find'
|
4
|
-
require 'fileutils'
|
5
|
-
|
6
|
-
|
7
|
-
module Pindo
|
8
|
-
class Command
|
9
|
-
class Dev < Command
|
10
|
-
class Confuseproj < Dev
|
11
|
-
|
12
|
-
require 'pindo/deploy/confuseproj'
|
13
|
-
|
14
|
-
include Command::DeployOptions
|
15
|
-
|
16
|
-
include CommonConfuseProj
|
17
|
-
|
18
|
-
self.summary = '设置混淆编译第一步'
|
19
|
-
|
20
|
-
self.description = <<-DESC
|
21
|
-
设置混淆编译第一步. 用法:\n
|
22
|
-
pindo dev confuseproj --type=class_method_variable_protocol_property_category
|
23
|
-
|
24
|
-
for example: --type=class_method
|
25
|
-
|
26
|
-
class: confuse class
|
27
|
-
method: confuse method
|
28
|
-
|
29
|
-
...
|
30
|
-
DESC
|
31
|
-
|
32
|
-
self.arguments = [
|
33
|
-
|
34
|
-
]
|
35
|
-
|
36
|
-
def self.options
|
37
|
-
[
|
38
|
-
].concat(super)
|
39
|
-
end
|
40
|
-
|
41
|
-
def initialize(argv)
|
42
|
-
super
|
43
|
-
end
|
44
|
-
|
45
|
-
def validate!
|
46
|
-
super
|
47
|
-
end
|
48
|
-
|
49
|
-
def run
|
50
|
-
|
51
|
-
current_dir = Dir.pwd
|
52
|
-
current_project_dir = current_dir
|
53
|
-
puts "+++++ #{current_project_dir}"
|
54
|
-
|
55
|
-
app_config_dir = clong_buildconfig_repo(repo_name: @deploy_repo_name)
|
56
|
-
clang_repo_dir = clone_devclang_repo
|
57
|
-
# if !File.exist?(clang_repo_dir)
|
58
|
-
puts "#{clang_repo_dir}"
|
59
|
-
puts "There is no clang tool !!! dev confuseproj"
|
60
|
-
# return
|
61
|
-
# end
|
62
|
-
|
63
|
-
symash_type = confuse_version_type(path:app_config_dir, default_type:"symash2")
|
64
|
-
if @newconfuse_flag
|
65
|
-
symash_type = "symash2"
|
66
|
-
end
|
67
|
-
confuse_tool_path = File.join(clang_repo_dir, symash_type)
|
68
|
-
puts "Confuse Tool Path: #{confuse_tool_path}"
|
69
|
-
|
70
|
-
puts "Clang Path: #{confuse_tool_path}"
|
71
|
-
install_symash(clang_path:confuse_tool_path)
|
72
|
-
|
73
|
-
current_project_fullname = ""
|
74
|
-
Dir.foreach(current_dir) do |file|
|
75
|
-
if file =~ /(.*).xcodeproj/
|
76
|
-
current_project_fullname = file
|
77
|
-
break;
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
old_proj_name = File.basename(current_project_fullname, ".xcodeproj")
|
82
|
-
|
83
|
-
config_confuse_project(clang_path:confuse_tool_path, project_name:old_proj_name, project_path:current_project_dir, default_type:symash_type)
|
84
|
-
config_symash(clang_path:confuse_tool_path, project_path:current_project_dir, confuse_type:@confuse_type, default_type:symash_type)
|
85
|
-
|
86
|
-
force_config = nil
|
87
|
-
force_config = {}
|
88
|
-
# force_config['BACKEND_SYMASH_DISABLE_SPL'] = true
|
89
|
-
force_config['BACKEND_SYMASH_DISABLE_BCF_PROB'] = 50
|
90
|
-
|
91
|
-
update_symash_config(app_config_dir:app_config_dir, project_path:current_project_dir, confuse_type:@confuse_type, force_config: force_config)
|
92
|
-
|
93
|
-
if symash_type == "symash2"
|
94
|
-
Dir.chdir(current_project_dir)
|
95
|
-
puts "+++++ #{current_project_dir}"
|
96
|
-
service_path = File.join(confuse_tool_path, "/Applications/SymashX.app/Contents/MacOS/symashctl")
|
97
|
-
command1 = "cd #{current_project_dir} && " + service_path + " stop"
|
98
|
-
command2 = "cd #{current_project_dir} && " + service_path + " start -export"
|
99
|
-
puts "Command: #{command1}"
|
100
|
-
system command1
|
101
|
-
puts "Command: #{command2}"
|
102
|
-
system command2
|
103
|
-
Dir.chdir(current_project_dir)
|
104
|
-
puts "Done !"
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
@@ -1,156 +0,0 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
require 'pindo/client/giteeclient'
|
3
|
-
|
4
|
-
module Pindo
|
5
|
-
class Command
|
6
|
-
class Dev < Command
|
7
|
-
class Createbuild < Dev
|
8
|
-
|
9
|
-
include Appselect
|
10
|
-
|
11
|
-
self.summary = '创建工程编译选项'
|
12
|
-
|
13
|
-
self.description = <<-DESC
|
14
|
-
|
15
|
-
创建工程编译选项, 用法:pindo dev createbuild,按照提示填写。创建完成之后, 使用pindo dev autobuild编译时可以选择创建好的编译选项
|
16
|
-
|
17
|
-
DESC
|
18
|
-
|
19
|
-
self.arguments = [
|
20
|
-
|
21
|
-
]
|
22
|
-
|
23
|
-
def self.options
|
24
|
-
[
|
25
|
-
['--deploy', '默认用开发的bundle id,使用--deploy设置使用发布bundle id来重签名, 用法: --deploy'],
|
26
|
-
].concat(super)
|
27
|
-
end
|
28
|
-
|
29
|
-
def initialize(argv)
|
30
|
-
@args_deploy_flag = argv.flag?('deploy', false)
|
31
|
-
super
|
32
|
-
end
|
33
|
-
|
34
|
-
def validate!
|
35
|
-
super
|
36
|
-
|
37
|
-
@app_type = ask('App的代号(必填): ')
|
38
|
-
help! '需要一个唯一的代号' if @app_type.nil? || @app_type.empty?
|
39
|
-
|
40
|
-
@platform_name = ask('使用的Boss平台名称(必填): ')
|
41
|
-
help! '需要指定Boss平台' if @platform_name.nil? || @platform_name.empty?
|
42
|
-
@git_repo_name = @platform_name
|
43
|
-
|
44
|
-
@app_desc = ask('请填写App代号的描述(可不填): ')
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
@selected_bundleid= nil
|
49
|
-
if @args_deploy_flag
|
50
|
-
@selected_bundleid = get_selected_deploy_bundleid()
|
51
|
-
else
|
52
|
-
@selected_bundleid = get_selected_dev_bundleid()
|
53
|
-
end
|
54
|
-
|
55
|
-
puts "选择使用的bundle id: #{@selected_bundleid}"
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
def run
|
60
|
-
|
61
|
-
@gitee_client = GiteeClient.new(access_token:pindo_single_config.gitee_api_key)
|
62
|
-
pindo_setting_dir = pindo_single_config.pindo_env_configdir
|
63
|
-
|
64
|
-
setting_file = 'dev_build_setting.json'
|
65
|
-
if @args_deploy_flag
|
66
|
-
setting_file = 'deploy_build_setting.json'
|
67
|
-
end
|
68
|
-
|
69
|
-
setting_file_fullname = File.join(pindo_setting_dir, setting_file)
|
70
|
-
setting_file_json = JSON.parse(File.read(setting_file_fullname))
|
71
|
-
if setting_file_json[@app_type]
|
72
|
-
answer = agree("输入的App代号已存,重新创建?(Y/n):")
|
73
|
-
unless answer
|
74
|
-
raise Informative, "输入的App代号已存在!!!"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
puts "========================="
|
79
|
-
puts "========================="
|
80
|
-
puts
|
81
|
-
puts
|
82
|
-
puts "App的代号: #{@app_type}"
|
83
|
-
puts "Boss平台名称: #{@platform_name}"
|
84
|
-
puts "App选择的bundle id: #{@selected_bundleid}"
|
85
|
-
puts "仓库名称: #{@git_repo_name}"
|
86
|
-
puts "App的描述: #{@app_desc}"
|
87
|
-
puts
|
88
|
-
|
89
|
-
answer = agree("请确认上面信息是否正确(Y/n):")
|
90
|
-
unless answer
|
91
|
-
raise Informative, "重新输入 !!!"
|
92
|
-
end
|
93
|
-
|
94
|
-
args_temp = [@git_repo_name]
|
95
|
-
args_temp << "--test"
|
96
|
-
Pindo::Command::Deploy::Initconfig::run(args_temp)
|
97
|
-
|
98
|
-
modify_build_setting
|
99
|
-
|
100
|
-
modify_build_config_json
|
101
|
-
|
102
|
-
end
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
def modify_build_setting
|
107
|
-
|
108
|
-
pindo_setting_dir = clone_pindo_env_config_repo(force_delete:false)
|
109
|
-
setting_file = 'dev_build_setting.json'
|
110
|
-
if @args_deploy_flag
|
111
|
-
setting_file = 'deploy_build_setting.json'
|
112
|
-
end
|
113
|
-
setting_file_fullname = File.join(pindo_setting_dir, setting_file)
|
114
|
-
setting_file_json = JSON.parse(File.read(setting_file_fullname))
|
115
|
-
setting_file_json[@app_type] = {}
|
116
|
-
setting_file_json[@app_type]['git_repo_name'] = @git_repo_name
|
117
|
-
setting_file_json[@app_type]['build_desc'] = @app_desc
|
118
|
-
setting_file_json = Hash[setting_file_json.sort]
|
119
|
-
File.open(setting_file_fullname, "w") do |f|
|
120
|
-
f.write(JSON.pretty_generate(setting_file_json))
|
121
|
-
end
|
122
|
-
|
123
|
-
git_addpush_repo(path:pindo_setting_dir, message:"add app_type: #{@app_type}", commit_file_params:[setting_file])
|
124
|
-
end
|
125
|
-
|
126
|
-
def modify_build_config_json
|
127
|
-
|
128
|
-
pindo_dir = pindo_single_config.pindo_dir
|
129
|
-
app_config_dir = File.join(pindo_dir, @git_repo_name)
|
130
|
-
|
131
|
-
selected_config_dir = clong_buildconfig_repo(repo_name: @selected_bundleid)
|
132
|
-
if File.exist?(File.join(selected_config_dir, "config.json"))
|
133
|
-
FileUtils.cp_r(File.join(selected_config_dir, "config.json"), app_config_dir)
|
134
|
-
end
|
135
|
-
|
136
|
-
app_config_file = File.join(app_config_dir, "config.json")
|
137
|
-
app_config_json = JSON.parse(File.read(app_config_file))
|
138
|
-
|
139
|
-
app_config_json = app_config_json || {}
|
140
|
-
app_config_json["project_info"]["app_type"] = @app_type
|
141
|
-
app_config_json["project_info"]["app_desc"] = @app_desc
|
142
|
-
app_config_json["app_setting"]["kGUKeyAppPlatform"] = @platform_name
|
143
|
-
|
144
|
-
File.open(app_config_file, "w") do |f|
|
145
|
-
f.write(JSON.pretty_generate(app_config_json))
|
146
|
-
end
|
147
|
-
git_addpush_repo(path:app_config_dir, message:"更新配置")
|
148
|
-
end
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
@@ -1,75 +0,0 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
|
3
|
-
module Pindo
|
4
|
-
class Command
|
5
|
-
class Dev < Command
|
6
|
-
class Pgyercert < Dev
|
7
|
-
|
8
|
-
include Appselect
|
9
|
-
|
10
|
-
include XcodeCertHelper
|
11
|
-
|
12
|
-
self.summary = '生成pgyer需要的证书,上传个pgyer重签名用'
|
13
|
-
|
14
|
-
self.description = <<-DESC
|
15
|
-
|
16
|
-
生成pgyer需要的证书,上传个pgyer重签名用。
|
17
|
-
|
18
|
-
DESC
|
19
|
-
|
20
|
-
self.arguments = [
|
21
|
-
|
22
|
-
]
|
23
|
-
|
24
|
-
def self.options
|
25
|
-
[
|
26
|
-
['--deploy', '默认用开发的bundle id,使用--deploy设置使用发布bundle id'],
|
27
|
-
['--adhoc', '默认用dev证书,使用--adhoc设置使用adhoc证书'],
|
28
|
-
].concat(super)
|
29
|
-
end
|
30
|
-
|
31
|
-
def initialize(argv)
|
32
|
-
@args_adhoc_flag = argv.flag?('adhoc', false)
|
33
|
-
@args_deploy_flag = argv.flag?('deploy', false)
|
34
|
-
super
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
def run
|
39
|
-
|
40
|
-
mainapp_bundleid= nil
|
41
|
-
if @args_deploy_flag
|
42
|
-
mainapp_bundleid = get_selected_deploy_bundleid()
|
43
|
-
else
|
44
|
-
mainapp_bundleid = get_selected_dev_bundleid()
|
45
|
-
end
|
46
|
-
puts "选择使用的bundle id: #{mainapp_bundleid}"
|
47
|
-
|
48
|
-
args_temp = []
|
49
|
-
args_temp << mainapp_bundleid
|
50
|
-
Pindo::Command::Deploy::Pullconfig::run(args_temp)
|
51
|
-
|
52
|
-
|
53
|
-
# project_dir = Dir.pwd
|
54
|
-
# Dir.chdir(project_dir)
|
55
|
-
# config_json_file = File.join(project_dir,"config.json")
|
56
|
-
# Debug::modify_cert_with_project(project_dir:project_dir, config_file:config_json_file)
|
57
|
-
|
58
|
-
args_temp = []
|
59
|
-
if @args_adhoc_flag
|
60
|
-
args_temp << "--adhoc"
|
61
|
-
else
|
62
|
-
args_temp << "--dev"
|
63
|
-
end
|
64
|
-
|
65
|
-
Pindo::Command::Deploy::Cert::run(args_temp)
|
66
|
-
|
67
|
-
end
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|