cocoapods-kz 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 8a317f2398ad6a77714f19384835a99c77ec15219cdebe66aca2641365d4e0cf
4
+ data.tar.gz: 99fdf75cc916699c8a899c537d0d54093445f62e00b0f7a18eaa4c036a09b763
5
+ SHA512:
6
+ metadata.gz: '09bc36c2bccf0d934ff3962d87a681e46f2e0017dae03f34c09dc960a45fc49a140e46e48f9024547ddfe2c3a61da5811f901191f3073f0edd53a4c1ca27fc4f'
7
+ data.tar.gz: 900c51c4d49bae1fe6aca9b844af5f56570651c031198e5addfbbb7e70574a8a3312b563dcec88421b6a3c484879e7aef4e05ba9595202b3beb2ed7f08a0ca03
@@ -0,0 +1,51 @@
1
+ require 'cocoapods-kz/helpers/global_helper'
2
+ require 'cocoapods-kz/gem_version'
3
+
4
+ module Pod
5
+ class Command
6
+ class Kz < Command
7
+ class Install < Kz
8
+ self.summary = 'pod kz install,用于指定pod是否开启framework模式'
9
+
10
+ self.description = <<-DESC
11
+ pod kz install 通过 --kz-framework与指定pod名(多个pod,使用英文逗号隔开),尝试开启这些pod的framework模式,如果framwork不存在则仍然会使用code模式
12
+ 通过 --kz-code 与指定pod名(多个pod,使用英文逗号隔开),尝试开启这些pod的code模式,其余pod将尝试使用framework模式,如果framwork不存在则仍然会使用code模式
13
+ 如果不添加任何参数,则默认所有pod为code模式,--kz-framework与--kz-code不能同时使用
14
+ DESC
15
+
16
+ def self.options
17
+ [
18
+ ['--repo-update', 'Force running `pod repo update` before install'],
19
+ ['--deployment', 'Disallow any changes to the Podfile or the Podfile.lock during installation'],
20
+ ['--clean-install', 'Ignore the contents of the project cache and force a full pod installation. This only ' \
21
+ 'applies to projects that have enabled incremental installation'],
22
+ ['--framework', "后面需要跟上pod名(多个pod,使用英文逗号隔开)"],
23
+ ['--code', "后面需要跟上pod名(多个pod,使用英文逗号隔开)"],
24
+ ['--debug', "debug模式,会打印调试日志或生成调试文件"],
25
+ ].concat(super).reject { |(name, _)| name == '--no-repo-update' }
26
+ end
27
+
28
+ def initialize(argv)
29
+ @use_code_tag = argv.flag?('code')
30
+ @use_framework_tag = argv.flag?('framework')
31
+ @debug = argv.flag?('debug')
32
+ help! if @use_code_tag && @use_framework_tag
33
+ KZ::KZGlobalHelper.instance.analyze_special_parameters(@use_code_tag, @use_framework_tag, argv.arguments!)
34
+ if Pod.match_version?('~> 1.4')
35
+ KZ::KZGlobalHelper.instance.kz_pod_enable = true
36
+ end
37
+ KZ::KZGlobalHelper.instance.debug = true if @debug
38
+
39
+ super
40
+ @additional_args = argv.remainder!
41
+ end
42
+
43
+ def run
44
+ install = Pod::Command::Install.new(CLAide::ARGV.new([*@additional_args]))
45
+ install.validate!
46
+ install.run
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,41 @@
1
+ require_relative 'install'
2
+ require_relative 'update'
3
+
4
+ module Pod
5
+ class Command
6
+ # This is an example of a cocoapods plugin adding a top-level subcommand
7
+ # to the 'pod' command.
8
+ #
9
+ # You can also create subcommands of existing or new commands. Say you
10
+ # wanted to add a subcommand to `list` to show newly deprecated pods,
11
+ # (e.g. `pod list deprecated`), there are a few things that would need
12
+ # to change.
13
+ #
14
+ # - move this file to `lib/pod/command/list/deprecated.rb` and update
15
+ # the class to exist in the the Pod::Command::List namespace
16
+ # - change this class to extend from `List` instead of `Command`. This
17
+ # tells the plugin system that it is a subcommand of `list`.
18
+ # - edit `lib/cocoapods_plugins.rb` to require this file
19
+ #
20
+ # @todo Create a PR to add your plugin to CocoaPods/cocoapods.org
21
+ # in the `plugins.json` file, once your plugin is released.
22
+ #
23
+ class Kz < Command
24
+ self.summary = 'Short description of cocoapods-kz.'
25
+ self.abstract_command = true
26
+ self.description = <<-DESC
27
+ 看准组建化头文件管理、混编、二进制化
28
+ DESC
29
+
30
+ def initialize(argv)
31
+ @help = argv.flag?('help')
32
+ super
33
+ end
34
+
35
+ def validate!
36
+ super
37
+ banner! if @help
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,50 @@
1
+ require 'cocoapods-kz/helpers/global_helper'
2
+
3
+ module Pod
4
+ class Command
5
+ class Kz < Command
6
+ class Update < Kz
7
+ self.summary = 'pod kz update,用于指定pod是否开启framework模式'
8
+
9
+ self.description = <<-DESC
10
+ pod kz update 通过 --kz-framework与指定pod名(多个pod,使用英文逗号隔开),尝试开启这些pod的framework模式,如果framwork不存在则仍然会使用code模式
11
+ 通过 --kz-code 与指定pod名(多个pod,使用英文逗号隔开),尝试开启这些pod的code模式,其余pod将尝试使用framework模式,如果framwork不存在则仍然会使用code模式
12
+ 如果不添加任何参数,则默认所有pod为code模式,--kz-framework与--kz-code不能同时使用
13
+ DESC
14
+
15
+ def self.options
16
+ [
17
+ ["--sources=#{Pod::TrunkSource::TRUNK_REPO_URL}", 'The sources from which to update dependent pods. ' \
18
+ 'Multiple sources must be comma-delimited'],
19
+ ['--exclude-pods=podName', 'Pods to exclude during update. Multiple pods must be comma-delimited'],
20
+ ['--clean-install', 'Ignore the contents of the project cache and force a full pod installation. This only ' \
21
+ 'applies to projects that have enabled incremental installation'],
22
+ ['--framework', "后面需要跟上pod名(多个pod,使用英文逗号隔开)"],
23
+ ['--code', "后面需要跟上pod名(多个pod,使用英文逗号隔开)"],
24
+ ['--debug', "debug模式,会打印调试日志或生成调试文件"],
25
+ ].concat(super)
26
+ end
27
+
28
+ def initialize(argv)
29
+ @use_code_tag = argv.flag?('code')
30
+ @use_framework_tag = argv.flag?('framework')
31
+ help! if @use_code_tag && @use_framework_tag
32
+ KZ::KZGlobalHelper.instance.analyze_special_parameters(@use_code_tag, @use_framework_tag, argv.arguments!)
33
+ if Pod.match_version?('~> 1.4')
34
+ KZ::KZGlobalHelper.instance.kz_pod_enable = true
35
+ end
36
+ KZ::KZGlobalHelper.instance.debug = true if @debug
37
+
38
+ super
39
+ @additional_args = argv.remainder!
40
+ end
41
+
42
+ def run
43
+ update = Pod::Command::Update.new(CLAide::ARGV.new([*@additional_args]))
44
+ update.validate!
45
+ update.run
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1 @@
1
+ require 'cocoapods-kz/command/kz'
@@ -0,0 +1,9 @@
1
+ module CocoapodsKz
2
+ VERSION = "0.0.1"
3
+ end
4
+
5
+ module Pod
6
+ def self.match_version?(*version)
7
+ Gem::Dependency.new('', *version).match?('', Pod::VERSION)
8
+ end
9
+ end
@@ -0,0 +1,48 @@
1
+ module KZ
2
+ class BuildFrameworkConfig
3
+
4
+ def initialize(main_project, pod_project)
5
+ @pod_project = pod_project
6
+ end
7
+
8
+ def config_project
9
+ @pod_project.targets.each do |target|
10
+ if target.isa == "PBXNativeTarget" && target.product_type == "com.apple.product-type.framework"
11
+ generate_framework_script = target.new_shell_script_build_phase('[KZ] Generate Framework')
12
+ generate_framework_script.show_env_vars_in_log = '0'
13
+ generate_framework_script.always_out_of_date = '1'
14
+ generate_framework_script.shell_script = %q{
15
+ if [ "${MACH_O_TYPE}" != "staticlib" ]; then
16
+ exit 0
17
+ fi
18
+
19
+ if [ "${ACTION}" != "build" ]; then
20
+ exit 0
21
+ fi
22
+
23
+ PRODUCT_DIR=${PODS_BUILD_DIR}/Debug-iphoneos/${TARGET_NAME}/${FULL_PRODUCT_NAME}
24
+ PRODUCT_SIMULATOR_DIR=${PODS_BUILD_DIR}/Debug-iphonesimulator/${TARGET_NAME}/${FULL_PRODUCT_NAME}
25
+ CURRENT_PRODUCT_DIR=${PODS_CONFIGURATION_BUILD_DIR}/${TARGET_NAME}
26
+
27
+ if [ -d "${KZ_FRAMEWORK_CACHE_PATH}/${FULL_PRODUCT_NAME}" ]; then
28
+ rm -r "${KZ_FRAMEWORK_CACHE_PATH}/${FULL_PRODUCT_NAME}"
29
+ fi
30
+ cp -r ${CURRENT_PRODUCT_DIR}/${FULL_PRODUCT_NAME} "${KZ_FRAMEWORK_CACHE_PATH}"
31
+
32
+ find "${CURRENT_PRODUCT_DIR}" -iname "*.bundle" -type d | while read -r BUNDLE_FILE; do
33
+ BUNDLE_NAME=$(basename ${BUNDLE_FILE})
34
+ if [ -d "${KZ_FRAMEWORK_CACHE_PATH}/${BUNDLE_NAME}" ]; then
35
+ rm -r "${KZ_FRAMEWORK_CACHE_PATH}/${BUNDLE_NAME}"
36
+ fi
37
+ cp -r ${BUNDLE_FILE} "${KZ_FRAMEWORK_CACHE_PATH}"
38
+ done
39
+
40
+ if [ -f ${PRODUCT_DIR}/${PRODUCT_NAME} ] && [ -f ${PRODUCT_SIMULATOR_DIR}/${PRODUCT_NAME} ]; then
41
+ lipo -create ${PRODUCT_DIR}/${PRODUCT_NAME} ${PRODUCT_SIMULATOR_DIR}/${PRODUCT_NAME} -output "${KZ_FRAMEWORK_CACHE_PATH}/${PRODUCT_NAME}.framework/${PRODUCT_NAME}"
42
+ fi
43
+ }
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,214 @@
1
+ require 'fileutils'
2
+ require_relative 'global_helper'
3
+
4
+ module KZ
5
+ class HmapContentStyle
6
+ QUOTES_PRIVATE = 1
7
+ QUOTES_REPAIR = 2
8
+ end
9
+
10
+ class CreateHmap
11
+
12
+ def initialize(main_project, pod_project)
13
+ @main_project = main_project
14
+ @pod_project = pod_project
15
+ end
16
+
17
+ def traverse_folder(folder_path)
18
+ Dir.foreach(folder_path) do |file_name|
19
+ next if file_name == '.' || file_name == '..'
20
+
21
+ file_path = File.join(folder_path, file_name)
22
+ if File.file?(file_path)
23
+ yield(file_path) if file_name.end_with?('.h')
24
+ elsif File.directory?(file_path)
25
+ traverse_folder(file_path) do |file_path|
26
+ yield(file_path)
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ def get_pod_pchfile_path(target_name)
33
+ @pod_project.project_dir + 'Target Support Files' + target_name + "#{target_name}-prefix.pch"
34
+ end
35
+
36
+ def save_hmap_file(hmap_hash, save_path, file_name)
37
+ hmap_json = JSON.pretty_generate(hmap_hash)
38
+ hmap_json_path = save_path + "#{file_name}.json"
39
+ hmap_path = save_path + "#{file_name}.hmap"
40
+ json_file = File.new(hmap_json_path, 'w')
41
+ return unless json_file
42
+
43
+ json_file.syswrite(hmap_json)
44
+ system "#{HMAP_EXECUTE_PATH} convert #{hmap_json_path} #{hmap_path}"
45
+
46
+ FileUtils.rm(hmap_json_path) unless KZ::KZGlobalHelper.instance.debug
47
+ end
48
+
49
+ def create_main_hamp
50
+ main_sources_path = @main_project.project_dir + @main_project.root_object.display_name
51
+ private_hmap_hash = {}
52
+ traverse_folder(main_sources_path) do |header_path|
53
+ header_pathname = Pathname.new(header_path)
54
+ header_pathname_basename = header_pathname.basename.to_s
55
+
56
+ header_hmap_value = {}
57
+ header_hmap_value['suffix'] = header_pathname_basename
58
+ header_hmap_value['prefix'] = header_pathname.dirname.to_s + '/'
59
+
60
+ private_hmap_hash[header_pathname_basename] = header_hmap_value
61
+ end
62
+
63
+ if !private_hmap_hash.empty?
64
+ save_hmap_file(private_hmap_hash, KZ_POD_CONFIG_ROOT, @main_project.root_object.display_name)
65
+ end
66
+
67
+ @main_project.targets.each do |target|
68
+ if target.isa == "PBXNativeTarget" and target.product_type == "com.apple.product-type.application"
69
+ target.build_configurations.each do |config|
70
+ config.build_settings['HEADER_SEARCH_PATHS'] = "${PODS_ROOT}/#{@main_project.root_object.display_name }.hmap"
71
+ config.build_settings['USE_HEADERMAP'] = 'NO'
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ def get_all_native_target_from(project)
78
+ all_native_target = {}
79
+
80
+ project.targets.each do |target|
81
+ if target.isa == "PBXNativeTarget" and target.product_type == "com.apple.product-type.framework" and !target.name.start_with?('Pods-')
82
+ all_native_target[target.name] = target
83
+ end
84
+ end
85
+ all_native_target
86
+ end
87
+
88
+ def get_all_handle_target_from(project)
89
+ all_handle_target = {}
90
+
91
+ project.targets.each do |target|
92
+ if !(target.isa == "PBXNativeTarget" and target.product_type == "com.apple.product-type.bundle") and !target.name.start_with?('Pods-')
93
+ all_handle_target[target.name] = target
94
+ end
95
+ end
96
+ all_handle_target
97
+ end
98
+
99
+ def get_hmap_info_from(kz_pod_target, hmap_content_style)
100
+ header_paths = kz_pod_target.public_headers
101
+ header_paths = kz_pod_target.all_headers if hmap_content_style == HmapContentStyle::QUOTES_PRIVATE
102
+ hmap_info = {}
103
+ header_paths.each do |header_pathname|
104
+ header_pathname_basename = header_pathname.basename.to_s
105
+
106
+ header_hmap_value_quotes = {}
107
+ header_hmap_value_quotes['suffix'] = header_pathname_basename
108
+ header_hmap_value_quotes['prefix'] = header_pathname.dirname.to_s + '/'
109
+ hmap_info[header_pathname_basename] = header_hmap_value_quotes
110
+
111
+ if hmap_content_style == HmapContentStyle::QUOTES_PRIVATE
112
+ # pch
113
+ pchfile_path = get_pod_pchfile_path(kz_pod_target.name)
114
+ if pchfile_path.exist?
115
+ suffix = pchfile_path.basename.to_s
116
+ prefix = pchfile_path.dirname.to_s + '/'
117
+ header_hmap_value = {}
118
+ header_hmap_value['suffix'] = suffix
119
+ header_hmap_value['prefix'] = prefix
120
+ hmap_info[suffix] = header_hmap_value
121
+ end
122
+
123
+ unless kz_pod_target.is_dev_pod
124
+ # 各别第三方在使用自己组件文件时,会使用#import <xx/xx.h>的方式
125
+ hmap_info[kz_pod_target.name + '/' + header_pathname_basename] = header_hmap_value_quotes
126
+ end
127
+
128
+ # 例如SPBoss.h会被在SPBoss-Swift.h中以#import <SPBoss/SPBoss.h>的方式使用,需要重定义寻找路径
129
+ if kz_pod_target.uses_swift && kz_pod_target.is_dev_pod && header_pathname_basename == "#{kz_pod_target.name}.h"
130
+ hmap_info[kz_pod_target.name + '/' + header_pathname_basename] = header_hmap_value_quotes
131
+ end
132
+ elsif hmap_content_style == HmapContentStyle::QUOTES_REPAIR
133
+ header_hmap_value_slash = {}
134
+ header_hmap_value_slash['suffix'] = header_pathname_basename
135
+ header_hmap_value_slash['prefix'] = kz_pod_target.name + '/'
136
+ hmap_info[header_pathname_basename] = header_hmap_value_slash
137
+ end
138
+ end
139
+ hmap_info
140
+ end
141
+
142
+ def create_pod_hamp(all_kz_pod_targets)
143
+ all_handle_targets = get_all_handle_target_from(@pod_project)
144
+ all_handle_targets.each do |target_name, target|
145
+ kz_pod_target = all_kz_pod_targets[target_name]
146
+ next unless kz_pod_target
147
+
148
+ # 修复头文件导入方式
149
+ kz_recursive_dependent_targets = kz_pod_target.repair_import
150
+ if kz_recursive_dependent_targets.count > 0
151
+ all_repair_hmap_info = {}
152
+ kz_recursive_dependent_targets.each { |recursive_dependent_target|
153
+ repair_hmap_info = get_hmap_info_from(recursive_dependent_target, HmapContentStyle::QUOTES_REPAIR)
154
+ all_repair_hmap_info.merge!(repair_hmap_info)
155
+ }
156
+ if all_repair_hmap_info.count > 0
157
+ hmap_cache_path = kz_pod_target.pod_config_cache_path(false)
158
+ save_hmap_file(all_repair_hmap_info, hmap_cache_path, target_name + '_repair')
159
+ kz_pod_target.repair_header_search_path = hmap_cache_path + "#{target_name}_repair.hmap"
160
+ end
161
+ end
162
+ end
163
+
164
+ all_native_targets = get_all_native_target_from(@pod_project)
165
+ all_native_targets.each do |target_name, target|
166
+ kz_pod_target = all_kz_pod_targets[target_name]
167
+ next unless kz_pod_target
168
+
169
+ # 添加私有头文件引用
170
+ private_hamp_info = get_hmap_info_from(kz_pod_target, HmapContentStyle::QUOTES_PRIVATE)
171
+ if private_hamp_info.count > 0
172
+ hmap_cache_path = kz_pod_target.pod_config_cache_path(false)
173
+ save_hmap_file(private_hamp_info, kz_pod_target.pod_config_cache_path(false), target_name)
174
+ kz_pod_target.private_header_search_path = hmap_cache_path + "#{target_name}.hmap"
175
+ end
176
+
177
+ # 修复缺失的依赖
178
+ framework_search_paths = '$(inherited)'
179
+ kz_pod_target.all_repair_dependent_target_info.values.each do |repair_target|
180
+ result = KZGlobalHelper.instance.pod_config_result_with_target(repair_target)
181
+ if result
182
+ framework_search_paths += (' ' + "#{result.resource_path.to_s}")
183
+ else
184
+ # 修复target依赖
185
+ dependency_target = all_native_targets[repair_target.name]
186
+ target.add_dependency(dependency_target) if dependency_target
187
+ # 修复framework_search_paths
188
+ framework_search_paths += (' ' + '"${PODS_CONFIGURATION_BUILD_DIR}/' + repair_target.name + '"')
189
+ end
190
+ end
191
+ kz_pod_target.framwork_search_paths = framework_search_paths
192
+ end
193
+
194
+ all_native_targets.each do |target_name, target|
195
+ kz_pod_target = all_kz_pod_targets[target_name]
196
+ next unless kz_pod_target
197
+
198
+ # 添加配置
199
+ target.build_configurations.each do |config|
200
+ config.build_settings['HEADER_SEARCH_PATHS'] = kz_pod_target.header_search_paths
201
+ config.build_settings['USE_HEADERMAP'] = 'NO'
202
+ config.build_settings['FRAMEWORK_SEARCH_PATHS'] = kz_pod_target.framwork_search_paths
203
+ config.build_settings['KZ_FRAMEWORK_CACHE_PATH'] = kz_pod_target.pod_config_cache_path(true).to_s
204
+ end
205
+ end
206
+ end
207
+
208
+ def config_project
209
+ create_main_hamp
210
+ create_pod_hamp(KZGlobalHelper.instance.kz_analyzer.all_kz_pod_targets)
211
+ end
212
+
213
+ end
214
+ end
@@ -0,0 +1,71 @@
1
+ require 'cocoapods'
2
+ require 'fileutils'
3
+ require_relative 'kz_analyzer'
4
+ require_relative 'kz_framework_manager'
5
+ require_relative 'kz_config_result'
6
+ require_relative 'kz_pod_target'
7
+
8
+ module KZ
9
+ KZ_POD_CONFIG_ROOT = Pod::Config.instance.sandbox_root + 'KZPodConfigure'
10
+
11
+ HMAP_EXECUTE_PATH = File.dirname(__FILE__) + '/../resources/hmap'
12
+ FLEX_COMPLIER_PATH = KZ_POD_CONFIG_ROOT + 'FlexCompiler'
13
+
14
+ class KZGlobalHelper
15
+ attr_accessor :kz_pod_enable
16
+ attr_accessor :kz_pod_config
17
+ attr_accessor :kz_analyzer
18
+ attr_accessor :specify_pod_names
19
+ attr_accessor :specify_pod_mode
20
+ attr_accessor :debug
21
+
22
+ private_class_method :new
23
+
24
+ def initialize
25
+ @kz_pod_enable = false
26
+ @specify_pod_mode = :kz_pod_origin_mode
27
+ @pods_config_cache = {}
28
+ @debug = false
29
+
30
+ FileUtils.mkdir_p(KZ_POD_CONFIG_ROOT)
31
+ FileUtils.cp_r(File.dirname(__FILE__) + '/../resources/FlexCompiler', KZ_POD_CONFIG_ROOT)
32
+ end
33
+
34
+ @@instance = nil
35
+ def self.instance
36
+ @@instance ||= new
37
+ end
38
+
39
+ def analyze_special_parameters(use_code_tag, use_framework_tag, pod_names)
40
+ specify_pod_names = []
41
+ if pod_names.count > 0
42
+ pod_names.each do |param|
43
+ if param.include?(',')
44
+ specify_pod_names.concat(param.split(","))
45
+ else
46
+ specify_pod_names << param
47
+ end
48
+ end
49
+ end
50
+ @specify_pod_names = specify_pod_names
51
+ if use_code_tag
52
+ @specify_pod_mode = :kz_pod_code_mode
53
+ elsif use_framework_tag
54
+ @specify_pod_mode = :kz_pod_framework_mode
55
+ end
56
+ end
57
+
58
+ def pod_config_result_with_target(kz_pod_target)
59
+ return nil unless @kz_pod_enable && @kz_analyzer != nil
60
+ return nil unless kz_pod_target && kz_pod_target.config_pod_mode == :kz_pod_framework_mode
61
+
62
+ return @pods_config_cache[kz_pod_target.name] if @pods_config_cache.has_key?(kz_pod_target.name)
63
+
64
+ result = KZFrameworkManager.validate_framework_and_get_result(kz_pod_target)
65
+
66
+ @pods_config_cache[kz_pod_target.name] = result if result
67
+ result
68
+ end
69
+
70
+ end
71
+ end
@@ -0,0 +1,86 @@
1
+ require_relative 'kz_pod_target'
2
+
3
+ module KZ
4
+ class KZAnalyzer
5
+ attr_accessor :all_kz_pod_targets
6
+
7
+ def initialize(native_pod_targets, development_pods)
8
+ @native_pod_targets = native_pod_targets
9
+ @development_pods = development_pods.keys
10
+ @all_kz_pod_targets = {}
11
+ end
12
+
13
+ def analyer
14
+ @native_pod_targets.each { |native_pod_target|
15
+ create_kz_pod_target_from(native_pod_target, :kz_pod_origin_mode)
16
+ }
17
+ end
18
+
19
+ def create_kz_pod_target_from(native_pod_target, config_pod_mode)
20
+ native_pod_target_name = native_pod_target.name
21
+ if @all_kz_pod_targets.has_key?(native_pod_target_name)
22
+ kz_pod_target = @all_kz_pod_targets[native_pod_target_name]
23
+ kz_pod_target.config_pod_mode = config_pod_mode unless kz_pod_target.is_dev_pod
24
+ else
25
+ kz_pod_target = KZPodTarget.new(native_pod_target)
26
+ is_dev_pod = @development_pods.include?(native_pod_target_name)
27
+ kz_pod_target.is_dev_pod = is_dev_pod
28
+ kz_pod_target.force_config_pod_mode = get_real_config_pod_mode(kz_pod_target)
29
+ if config_pod_mode != :kz_pod_origin_mode && !is_dev_pod
30
+ kz_pod_target.config_pod_mode = config_pod_mode
31
+ else
32
+ kz_pod_target.config_pod_mode = get_use_config_pod_mode(kz_pod_target)
33
+ end
34
+ @all_kz_pod_targets[native_pod_target_name] = kz_pod_target
35
+
36
+ kz_dependent_target_info = {}
37
+ native_pod_target.dependent_targets.each do |native_dependent_target|
38
+ kz_dependent_pod_target = create_kz_pod_target_from(native_dependent_target, kz_pod_target.config_pod_mode)
39
+ kz_dependent_target_info[native_dependent_target.name] = kz_dependent_pod_target if kz_dependent_pod_target
40
+ end
41
+ kz_pod_target.dependent_target_info = kz_dependent_target_info
42
+ kz_pod_target.add_kz_pod_config(KZGlobalHelper.instance.kz_pod_config[native_pod_target_name]) do |repair_dependent_pod_target_name|
43
+ repair_native_pod_target = get_native_pod_target_with(repair_dependent_pod_target_name)
44
+ repair_kz_pod_target = nil
45
+ if repair_native_pod_target
46
+ repair_kz_pod_target = create_kz_pod_target_from(repair_native_pod_target, kz_pod_target.config_pod_mode)
47
+ end
48
+ repair_kz_pod_target
49
+ end
50
+ end
51
+
52
+ kz_pod_target
53
+ end
54
+
55
+ def get_native_pod_target_with(pod_target_name)
56
+ @native_pod_targets.each do |native_pod_target|
57
+ return native_pod_target if native_pod_target.name == pod_target_name
58
+ end
59
+ nil
60
+ end
61
+
62
+ def kz_pod_targets_with(pod_name)
63
+ kz_pod_targets = []
64
+ @all_kz_pod_targets.values.each do |target|
65
+ kz_pod_targets << target if target.root_name == pod_name
66
+ end
67
+ kz_pod_targets
68
+ end
69
+
70
+ def get_real_config_pod_mode(kz_pod_target)
71
+ if KZGlobalHelper.instance.specify_pod_names.include?(kz_pod_target.name)
72
+ return KZGlobalHelper.instance.specify_pod_mode
73
+ end
74
+ :kz_pod_origin_mode
75
+ end
76
+
77
+ def get_use_config_pod_mode(kz_pod_target)
78
+ if KZGlobalHelper.instance.specify_pod_mode == :kz_pod_framework_mode
79
+ KZGlobalHelper.instance.specify_pod_names.include?(kz_pod_target.name) ? :kz_pod_framework_mode : :kz_pod_code_mode
80
+ elsif KZGlobalHelper.instance.specify_pod_mode == :kz_pod_code_mode
81
+ KZGlobalHelper.instance.specify_pod_names.include?(kz_pod_target.name) ? :kz_pod_code_mode : :kz_pod_framework_mode
82
+ end
83
+ end
84
+
85
+ end
86
+ end
@@ -0,0 +1,41 @@
1
+ require_relative 'kz_pod_target'
2
+
3
+ module KZ
4
+ class KZConfigResult
5
+ attr_accessor :name
6
+ attr_accessor :kz_pod_target
7
+ attr_accessor :resource_path
8
+
9
+ def initialize(kz_pod_target)
10
+ @name = kz_pod_target.name
11
+ @kz_pod_target = kz_pod_target
12
+ end
13
+
14
+ def get_bundle_paths
15
+ bundle_paths = []
16
+ Dir.foreach(@resource_path) do |bundle_name|
17
+ next if bundle_name == '.' || bundle_name == '..'
18
+
19
+ bundle_path = @resource_path + bundle_name
20
+ if File.directory?(bundle_path) && bundle_name.end_with?(".bundle")
21
+ bundle_paths << bundle_path
22
+ end
23
+ end
24
+ bundle_paths
25
+ end
26
+
27
+ def get_framework_paths
28
+ framework_paths = []
29
+ Dir.foreach(@resource_path) do |framework_name|
30
+ next if framework_name == '.' || framework_name == '..'
31
+
32
+ framework_path = @resource_path + framework_name
33
+ if File.directory?(framework_path) && framework_name.end_with?(".framework")
34
+ framework_paths << framework_path
35
+ end
36
+ end
37
+ framework_paths
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,52 @@
1
+ require_relative 'kz_pod_target'
2
+ require_relative 'global_helper'
3
+ require_relative 'kz_config_result'
4
+
5
+ module KZ
6
+ class KZFrameworkManager
7
+ @@all_resources_cache_info = {}
8
+
9
+ def self.validate_framework_and_get_result(kz_pod_target)
10
+ resources_cache_info = self.resources_cache_info
11
+ resource_path = resources_cache_info["#{kz_pod_target.name}_#{kz_pod_target.version}"]
12
+ return nil unless resource_path
13
+
14
+ result = KZConfigResult.new(kz_pod_target)
15
+ result.resource_path = resource_path
16
+ result
17
+ end
18
+
19
+ def self.resources_cache_info
20
+ if @@all_resources_cache_info.count > 0
21
+ return @@all_resources_cache_info
22
+ end
23
+
24
+ Dir.foreach(KZ_POD_CONFIG_ROOT) do |folder_name|
25
+ next if folder_name == '.' || folder_name == '..'
26
+
27
+ config_folder = KZ_POD_CONFIG_ROOT + folder_name
28
+ if File.directory?(config_folder)
29
+ Dir.foreach(config_folder) do |version|
30
+ next if version == '.' || version == '..'
31
+
32
+ version_folder = config_folder + version
33
+ if File.directory?(version_folder)
34
+ have_framework = false
35
+ Dir.foreach(version_folder) do |file_name|
36
+ next if file_name == '.' || file_name == '..'
37
+
38
+ if file_name.end_with?(".framework") && File.directory?(version_folder + file_name)
39
+ have_framework = true
40
+ break
41
+ end
42
+ end
43
+ @@all_resources_cache_info["#{folder_name}_#{version}"] = version_folder if have_framework
44
+ end
45
+ end
46
+ end
47
+ end
48
+ @@all_resources_cache_info
49
+ end
50
+
51
+ end
52
+ end
@@ -0,0 +1,174 @@
1
+ require 'cocoapods'
2
+ require 'fileutils'
3
+ require_relative 'global_helper'
4
+
5
+ module KZ
6
+ class KZPodTarget
7
+
8
+ attr_reader :native_pod_target
9
+ attr_reader :name
10
+ attr_reader :root_name
11
+ attr_reader :product_name
12
+ attr_reader :version
13
+ attr_accessor :dependent_target_info
14
+ attr_accessor :repair_dependent_target_info
15
+ attr_reader :repair_import
16
+ attr_accessor :is_dev_pod
17
+ attr_accessor :config_pod_mode
18
+ attr_accessor :force_config_pod_mode
19
+
20
+ attr_accessor :private_header_search_path
21
+ attr_accessor :repair_header_search_path
22
+ attr_accessor :framwork_search_paths
23
+
24
+ def initialize(native_pod_target)
25
+ @native_pod_target = native_pod_target
26
+ @name = native_pod_target.name
27
+ @root_name = native_pod_target.root_spec.name
28
+ @product_name = native_pod_target.product_name
29
+ @version = native_pod_target.version
30
+ @dependent_target_info = {}
31
+ @repair_dependent_target_info = {}
32
+ @repair_import = []
33
+ @isDevPod = false
34
+ @config_pod_mode = :kz_pod_origin_mode
35
+
36
+ native_pod_target.file_accessors.each do |file_accessor|
37
+ file_accessor.kz_pod_target = self
38
+ end
39
+ end
40
+
41
+ def uses_swift
42
+ native_pod_target.uses_swift?
43
+ end
44
+
45
+ def all_headers
46
+ return @_all_headers if @_all_headers != nil
47
+
48
+ all_headers = []
49
+ native_pod_target.file_accessors.each do |file_accessor|
50
+ all_headers.concat(file_accessor.headers)
51
+ end
52
+
53
+ @_all_headers = all_headers
54
+ @_all_headers
55
+ end
56
+
57
+ def public_headers
58
+ return @_public_headers if @_public_headers != nil
59
+
60
+ public_headers = []
61
+ native_pod_target.file_accessors.each do |file_accessor|
62
+ public_headers.concat(file_accessor.origin_public_headers)
63
+ public_headers.concat(file_accessor.vendored_frameworks_headers)
64
+ end
65
+
66
+ @_public_headers = public_headers
67
+ @_public_headers
68
+ end
69
+
70
+ def config_pod_mode=(value)
71
+ return if value == :kz_pod_origin_mode
72
+
73
+ if @config_pod_mode != :kz_pod_framework_mode
74
+ @config_pod_mode = value
75
+ end
76
+
77
+ @dependent_target_info.values.each do |dependent_target|
78
+ dependent_target.config_pod_mode=(value) unless dependent_target.is_dev_pod
79
+ end
80
+ end
81
+
82
+ def config_pod_mode
83
+ return @force_config_pod_mode if @force_config_pod_mode != :kz_pod_origin_mode
84
+
85
+ @config_pod_mode
86
+ end
87
+
88
+ def add_kz_pod_config(pod_config)
89
+ return unless pod_config
90
+
91
+ repair_dependency = pod_config[:dependency]
92
+ if repair_dependency
93
+ repair_dependency.each { |repair_dependent_pod_target_name|
94
+ kz_repair_pod_target = yield(repair_dependent_pod_target_name)
95
+ if kz_repair_pod_target
96
+ @dependent_target_info[repair_dependent_pod_target_name] = kz_repair_pod_target
97
+ @repair_dependent_target_info[repair_dependent_pod_target_name] = kz_repair_pod_target
98
+ end
99
+ }
100
+ end
101
+
102
+ repair_import = pod_config[:repair_import]
103
+ if repair_import.is_a?(TrueClass)
104
+ @repair_import = self.recursive_dependent_targets
105
+ elsif repair_import.is_a?(Array)
106
+ repair_import.each do |repair_import_target_name|
107
+ kz_repair_pod_target = yield(repair_import_target_name)
108
+ @repair_import << kz_repair_pod_target
109
+ end
110
+ end
111
+ end
112
+
113
+ def all_need_repair_import
114
+ all_need_repair_import = []
115
+
116
+ self.recursive_dependent_targets.each do |dependent_target|
117
+ all_need_repair_import << dependent_target if dependent_target.repair_import.count > 0
118
+ end
119
+ all_need_repair_import.uniq
120
+ end
121
+
122
+ def recursive_dependent_targets
123
+ recursive_dependent_targets = []
124
+ @dependent_target_info.values.each do |dependent_target|
125
+ recursive_dependent_targets << dependent_target
126
+ recursive_dependent_targets.concat(dependent_target.recursive_dependent_targets)
127
+ end
128
+ if recursive_dependent_targets.count > 0
129
+ recursive_dependent_targets.uniq
130
+ end
131
+ recursive_dependent_targets
132
+ end
133
+
134
+ def header_search_paths
135
+ header_search_paths = ''
136
+ if @private_header_search_path && File.exist?(@private_header_search_path)
137
+ header_search_paths = @private_header_search_path.to_s
138
+ end
139
+ repair_header_search_paths = self.all_repair_header_search_paths.join(' ')
140
+ if repair_header_search_paths.length > 0
141
+ header_search_paths += (' ' + repair_header_search_paths)
142
+ end
143
+ header_search_paths
144
+ end
145
+
146
+ def all_repair_dependent_target_info
147
+ all_repair_dependent_target_info = @repair_dependent_target_info
148
+ @dependent_target_info.values.each do |dependent_target|
149
+ all_repair_dependent_target_info.merge!(dependent_target.all_repair_dependent_target_info)
150
+ end
151
+ all_repair_dependent_target_info
152
+ end
153
+
154
+ def all_repair_header_search_paths
155
+ all_repair_header_search_paths = []
156
+ if @repair_header_search_path && File.exist?(@repair_header_search_path)
157
+ all_repair_header_search_paths << @repair_header_search_path.to_s
158
+ end
159
+ self.all_need_repair_import.each do |need_repair_target|
160
+ sub_repair_header_search_path = need_repair_target.repair_header_search_path
161
+ all_repair_header_search_paths << sub_repair_header_search_path if sub_repair_header_search_path
162
+ end
163
+ all_repair_header_search_paths.uniq
164
+ end
165
+
166
+ def pod_config_cache_path(concat_version)
167
+ kz_target_framework_folder = KZ_POD_CONFIG_ROOT + @name
168
+ kz_target_framework_folder += @version if concat_version
169
+ FileUtils.mkdir_p(kz_target_framework_folder) unless File.exist?(kz_target_framework_folder)
170
+ Pathname(kz_target_framework_folder)
171
+ end
172
+
173
+ end
174
+ end
@@ -0,0 +1,40 @@
1
+ require 'fileutils'
2
+ require 'tempfile'
3
+
4
+ module KZ
5
+ class StripFrameworkConfig
6
+ def initialize(main_project, pod_project)
7
+ @main_project = main_project
8
+ @pod_project = pod_project
9
+ end
10
+
11
+ def pod_target_support_files_path
12
+ @pod_project.project_dir + 'Target Support Files'
13
+ end
14
+
15
+ def config_project
16
+ @main_project.targets.each do |target|
17
+ if target.isa == "PBXNativeTarget" and target.product_type == "com.apple.product-type.application"
18
+ target_support_file_path = pod_target_support_files_path + "Pods-#{target.name}" + "Pods-#{target.name}-frameworks.sh"
19
+ if target_support_file_path.exist?
20
+ temp_sh_file_path = @main_project.project_dir + "Pods-#{target.name}" + 'temp.sh'
21
+ temp_sh_file = Tempfile.new(temp_sh_file_path.to_s)
22
+ chmod_cmd = "chmod +x #{temp_sh_file.path}"
23
+ system chmod_cmd
24
+
25
+ sh_file = File.open(target_support_file_path, "r+")
26
+ sh_file.each_line { |line|
27
+ temp_sh_file.puts(line)
28
+ if line.start_with?(" # Resign the code if required by the build settings to avoid unstable apps")
29
+ temp_sh_file.puts(' xcrun strip -x "${destination}/${basename}.framework/${basename}" 2> /dev/null')
30
+ end
31
+ }
32
+ temp_sh_file.close
33
+ FileUtils.mv(temp_sh_file.path, target_support_file_path)
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,53 @@
1
+ require_relative 'global_helper'
2
+
3
+ module KZ
4
+ class XmlBuildConfig
5
+ def initialize(main_project, pod_project)
6
+ @pod_project = pod_project
7
+ end
8
+
9
+ def new_build_rule(project, target, name)
10
+ new_rule = nil
11
+ target.build_rules.each do |build_rule|
12
+ new_rule = build_rule if build_rule.name == name
13
+ end
14
+
15
+ if new_rule == nil
16
+ new_rule = project.new(Xcodeproj::Project::PBXBuildRule)
17
+ target.build_rules << new_rule
18
+ end
19
+
20
+ new_rule.name = name
21
+ new_rule.compiler_spec = 'com.apple.compilers.proxy.script'
22
+ new_rule
23
+ end
24
+
25
+ def create_xml_rule(project, target)
26
+ xml_rule = new_build_rule(project, target, '[KZ] Custom Xml Build')
27
+ xml_rule.file_type = 'text.xml'
28
+ xml_rule.output_files = Array['${KZ_XML_FLEX_DIR}/${INPUT_FILE_BASE}.flex']
29
+ xml_rule.script = %Q{FLEX_PATH=${KZ_XML_FLEX_DIR}/${INPUT_FILE_BASE}.flex
30
+ rm -rf ${FLEX_PATH}
31
+ $KZ_XML_FLEX_COMPILER $INPUT_FILE_PATH $FLEX_PATH
32
+ if [ -f $FLEX_PATH ] ; then
33
+ cp $FLEX_PATH $KZ_XML_FLEX_BUILD_DIR
34
+ exit 0
35
+ else
36
+ exit 1
37
+ fi}
38
+ end
39
+
40
+ def config_project
41
+ @pod_project.targets.each do |target|
42
+ if target.isa == "PBXNativeTarget" && target.product_type == "com.apple.product-type.framework" && target.name.start_with?("SP")
43
+ target.build_configurations.each do |config|
44
+ config.build_settings["KZ_XML_FLEX_COMPILER"] = FLEX_COMPLIER_PATH.to_s
45
+ config.build_settings["KZ_XML_FLEX_DIR"] = "${TARGET_TEMP_DIR}/XmlFlexs"
46
+ config.build_settings["KZ_XML_FLEX_BUILD_DIR"] = "${TARGET_BUILD_DIR}/${PRODUCT_NAME}.bundle"
47
+ end
48
+ self.create_xml_rule(@pod_project, target)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,26 @@
1
+ require 'cocoapods-kz/native/acknowledgements'
2
+
3
+ module Pod
4
+ module Generator
5
+ class Acknowledgements
6
+ def license_text(spec)
7
+ return nil unless spec.license
8
+ text = spec.license[:text]
9
+ unless text
10
+ if license_file = spec.license[:file]
11
+ license_path = file_accessor(spec).root + license_file
12
+ if File.exist?(license_path)
13
+ text = IO.read(license_path)
14
+ else
15
+ # UI.warn "Unable to read the license file `#{license_file}` " \
16
+ # "for the spec `#{spec}`"
17
+ end
18
+ elsif license_file = file_accessor(spec).license
19
+ text = IO.read(license_file)
20
+ end
21
+ end
22
+ text
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ require 'cocoapods-kz/helpers/global_helper'
2
+
3
+ module Pod
4
+ class Installer
5
+ class Analyzer
6
+ alias_method :original_generate_targets, :generate_targets
7
+
8
+ def generate_targets(resolver_specs_by_target, target_inspections)
9
+ aggregate_targets, pod_targets = original_generate_targets(resolver_specs_by_target, target_inspections)
10
+
11
+ kz_analyer = KZ::KZAnalyzer.new(pod_targets, self.sandbox.development_pods)
12
+ kz_analyer.analyer
13
+ KZ::KZGlobalHelper.instance.kz_analyzer = kz_analyer
14
+
15
+ [aggregate_targets, pod_targets]
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,42 @@
1
+ require 'cocoapods-kz/helpers/global_helper'
2
+
3
+ module Pod
4
+ class Podfile
5
+ module DSL
6
+ KZ::KZGlobalHelper.instance.kz_pod_config ||= {}
7
+
8
+ def kz_pod(name = nil, *requirements)
9
+ unless name
10
+ raise StandardError, 'kz_pod requires a name.'
11
+ end
12
+
13
+ kz_pod_config = {}
14
+ kz_pod_config[name] ||= {}
15
+
16
+ pod_attach = requirements.last
17
+ return false unless pod_attach.is_a?(Hash)
18
+
19
+ dependency = pod_attach.delete(:dependency)
20
+ if !dependency.nil? && dependency.is_a?(Array)
21
+ kz_pod_config[name][:dependency] = dependency
22
+ end
23
+
24
+ repair_import = pod_attach.delete(:repair_import)
25
+ if repair_import
26
+ kz_pod_config[name][:repair_import] = repair_import
27
+ end
28
+
29
+ KZ::KZGlobalHelper.instance.kz_pod_config.merge!(kz_pod_config)
30
+ end
31
+
32
+ def pod(name = nil, *requirements)
33
+ unless name
34
+ raise StandardError, 'A dependency requires a name.'
35
+ end
36
+
37
+ current_target_definition.store_pod(name, *requirements)
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,87 @@
1
+ require 'cocoapods/sandbox/file_accessor'
2
+
3
+ module Pod
4
+ class Sandbox
5
+ class FileAccessor
6
+
7
+ attr_accessor :kz_pod_target
8
+
9
+ alias_method :origin_public_headers, :public_headers
10
+ def public_headers(include_frameworks = false)
11
+ if KZ::KZGlobalHelper.instance.pod_config_result_with_target(self.kz_pod_target)
12
+ []
13
+ else
14
+ origin_public_headers(include_frameworks)
15
+ end
16
+ end
17
+
18
+ def project_headers
19
+ if KZ::KZGlobalHelper.instance.pod_config_result_with_target(self.kz_pod_target)
20
+ []
21
+ else
22
+ project_header_files
23
+ end
24
+ end
25
+
26
+ def private_headers
27
+ if KZ::KZGlobalHelper.instance.pod_config_result_with_target(self.kz_pod_target)
28
+ []
29
+ else
30
+ private_header_files
31
+ end
32
+ end
33
+
34
+ alias_method :origin_source_files, :source_files
35
+ def source_files
36
+ if KZ::KZGlobalHelper.instance.pod_config_result_with_target(self.kz_pod_target)
37
+ []
38
+ else
39
+ origin_source_files
40
+ end
41
+ end
42
+
43
+ alias_method :origin_arc_source_files, :arc_source_files
44
+ def arc_source_files
45
+ if KZ::KZGlobalHelper.instance.pod_config_result_with_target(self.kz_pod_target)
46
+ []
47
+ else
48
+ origin_arc_source_files
49
+ end
50
+ end
51
+
52
+ alias_method :origin_resource_bundles, :resource_bundles
53
+ def resource_bundles
54
+ if KZ::KZGlobalHelper.instance.pod_config_result_with_target(self.kz_pod_target)
55
+ {}
56
+ else
57
+ origin_resource_bundles
58
+ end
59
+ end
60
+
61
+ alias_method :origin_resources, :resources
62
+ def resources
63
+ result = KZ::KZGlobalHelper.instance.pod_config_result_with_target(self.kz_pod_target)
64
+ if result
65
+ resources = origin_resources
66
+ resources.concat(result.get_bundle_paths)
67
+ resources
68
+ else
69
+ origin_resources
70
+ end
71
+ end
72
+
73
+ alias_method :origin_vendored_frameworks, :vendored_frameworks
74
+ def vendored_frameworks
75
+ result = KZ::KZGlobalHelper.instance.pod_config_result_with_target(self.kz_pod_target)
76
+ if result
77
+ frameworks = origin_vendored_frameworks
78
+ frameworks.concat(result.get_framework_paths)
79
+ frameworks
80
+ else
81
+ origin_vendored_frameworks
82
+ end
83
+ end
84
+
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,33 @@
1
+ require 'cocoapods/installer'
2
+ require 'cocoapods-kz/helpers/xml_build_config'
3
+ require 'cocoapods-kz/helpers/strip_framework_config'
4
+ require 'cocoapods-kz/helpers/build_framework_config'
5
+ require 'cocoapods-kz/helpers/create_hamp'
6
+
7
+ module Pod
8
+ class Installer
9
+ alias_method :original_integrate_user_project, :integrate_user_project
10
+ def integrate_user_project
11
+ original_integrate_user_project
12
+
13
+ main_project = self.aggregate_targets.first.user_project
14
+ pods_project = self.pods_project
15
+
16
+ puts 'Config Xml Build Rules'
17
+ KZ::XmlBuildConfig.new(main_project, pods_project).config_project
18
+
19
+ puts 'Config Framework Strip'
20
+ KZ::StripFrameworkConfig.new(main_project, pods_project).config_project
21
+
22
+ puts 'Config Framework Build'
23
+ KZ::BuildFrameworkConfig.new(main_project, pods_project).config_project
24
+
25
+ puts 'Config Hmap'
26
+ KZ::CreateHmap.new(main_project, pods_project).config_project
27
+
28
+ main_project.save
29
+ pods_project.save
30
+ puts 'Config Done'
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,16 @@
1
+ require 'cocoapods/installer/user_project_integrator'
2
+ require 'cocoapods-kz/helpers/global_helper'
3
+
4
+ module Pod
5
+ class Installer
6
+ class UserProjectIntegrator
7
+
8
+ alias_method :origin_print_override_warning, :print_override_warning
9
+ def print_override_warning(aggregate_target, user_target, config, key)
10
+ unless KZ::KZGlobalHelper.instance.kz_pod_enable
11
+ origin_print_override_warning(aggregate_target, user_target, config, key)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ require 'cocoapods'
2
+ require_relative 'gem_version'
3
+
4
+ if Pod.match_version?('~> 1.4')
5
+ require 'cocoapods-kz/native/dls'
6
+ require 'cocoapods-kz/native/installer'
7
+ require 'cocoapods-kz/native/acknowledgements'
8
+ require 'cocoapods-kz/native/analyzer'
9
+ require 'cocoapods-kz/native/file_accessor'
10
+ require 'cocoapods-kz/native/user_project_integrator'
11
+ end
Binary file
@@ -0,0 +1 @@
1
+ require 'cocoapods-kz/gem_version'
@@ -0,0 +1,2 @@
1
+ require 'cocoapods-kz/command'
2
+ require 'cocoapods-kz/native'
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cocoapods-kz
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - yixiong
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-11-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: A short description of cocoapods-kz.
42
+ email:
43
+ - yixiong@kanzhun.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/cocoapods-kz.rb
49
+ - lib/cocoapods-kz/command.rb
50
+ - lib/cocoapods-kz/command/install.rb
51
+ - lib/cocoapods-kz/command/kz.rb
52
+ - lib/cocoapods-kz/command/update.rb
53
+ - lib/cocoapods-kz/gem_version.rb
54
+ - lib/cocoapods-kz/helpers/build_framework_config.rb
55
+ - lib/cocoapods-kz/helpers/create_hamp.rb
56
+ - lib/cocoapods-kz/helpers/global_helper.rb
57
+ - lib/cocoapods-kz/helpers/kz_analyzer.rb
58
+ - lib/cocoapods-kz/helpers/kz_config_result.rb
59
+ - lib/cocoapods-kz/helpers/kz_framework_manager.rb
60
+ - lib/cocoapods-kz/helpers/kz_pod_target.rb
61
+ - lib/cocoapods-kz/helpers/strip_framework_config.rb
62
+ - lib/cocoapods-kz/helpers/xml_build_config.rb
63
+ - lib/cocoapods-kz/native.rb
64
+ - lib/cocoapods-kz/native/acknowledgements.rb
65
+ - lib/cocoapods-kz/native/analyzer.rb
66
+ - lib/cocoapods-kz/native/dls.rb
67
+ - lib/cocoapods-kz/native/file_accessor.rb
68
+ - lib/cocoapods-kz/native/installer.rb
69
+ - lib/cocoapods-kz/native/user_project_integrator.rb
70
+ - lib/cocoapods-kz/resources/FlexCompiler
71
+ - lib/cocoapods-kz/resources/hmap
72
+ - lib/cocoapods_plugin.rb
73
+ homepage: https://github.com/EXAMPLE/cocoapods-kz
74
+ licenses:
75
+ - MIT
76
+ metadata: {}
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubygems_version: 3.4.13
93
+ signing_key:
94
+ specification_version: 4
95
+ summary: A longer description of cocoapods-kz.
96
+ test_files: []