cocoapods-kz 0.0.1

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