cocoapods-dongjia 1.1.2 → 1.1.7
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 +4 -4
- data/lib/cocoapods-dongjia/command.rb +1 -0
- data/lib/cocoapods-dongjia/command/install.rb +0 -6
- data/lib/cocoapods-dongjia/command/open.rb +0 -6
- data/lib/cocoapods-dongjia/command/reinstall.rb +8 -1
- data/lib/cocoapods-dongjia/command/release.rb +40 -0
- data/lib/cocoapods-dongjia/command/strip.rb +9 -8
- data/lib/cocoapods-dongjia/gem_version.rb +3 -3
- data/lib/cocoapods_plugin.rb +18 -16
- data/lib/dongjia_binarization.rb +642 -0
- data/lib/dongjia_pods_iterator.rb +50 -22
- data/lib/dongjia_router.rb +2 -0
- data/lib/helper/Core/podfile/dsl.rb +16 -0
- data/lib/helper/{podfile_warnings.rb → installer.rb} +17 -3
- data/lib/helper/podfile.rb +60 -0
- metadata +41 -12
- data/lib/dongjia_branch_inspector.rb +0 -43
- data/lib/dongjia_scheme_manager.rb +0 -58
- data/lib/helper/podfile_local_importer.rb +0 -34
@@ -4,38 +4,62 @@ module Dongjia
|
|
4
4
|
|
5
5
|
class PodsIterator
|
6
6
|
|
7
|
+
def self.update_build_setting(config, key, value)
|
8
|
+
if config.build_settings[key] != value
|
9
|
+
config.build_settings[key] = value
|
10
|
+
return true
|
11
|
+
else
|
12
|
+
return false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
7
16
|
# 关闭警告
|
8
17
|
def self.disable_warnings(config, target_name)
|
18
|
+
changed = false
|
19
|
+
|
9
20
|
# 禁用非 DJ 开头 Pod 的警告
|
10
|
-
config
|
11
|
-
|
21
|
+
changed ||= update_build_setting(config, 'GCC_WARN_INHIBIT_ALL_WARNINGS', 'YES') unless target_name.start_with?('DJ')
|
22
|
+
|
12
23
|
# 不检测 block 中的隐式 self 调用
|
13
|
-
config
|
24
|
+
changed ||= update_build_setting(config, 'CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF', "NO")
|
14
25
|
|
15
26
|
# 不检测已废弃的方法
|
16
|
-
config
|
17
|
-
|
18
|
-
# 允许 objc_msgSend
|
19
|
-
config.build_settings['ENABLE_STRICT_OBJC_MSGSEND'] = "NO"
|
27
|
+
changed ||= update_build_setting(config, 'GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS', "NO")
|
20
28
|
|
21
29
|
# 不检测注释
|
22
|
-
config
|
30
|
+
changed ||= update_build_setting(config, 'CLANG_WARN_DOCUMENTATION_COMMENTS', "NO")
|
23
31
|
|
24
|
-
#
|
25
|
-
config.build_settings['
|
26
|
-
|
27
|
-
# 强制设置 deployment 版本为 8.0
|
28
|
-
if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 8.0
|
29
|
-
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = "8.0"
|
32
|
+
# 强制设置 deployment 版本为 9.0
|
33
|
+
if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 9.0
|
34
|
+
changed ||= update_build_setting(config, 'IPHONEOS_DEPLOYMENT_TARGET', "9.0")
|
30
35
|
end
|
31
36
|
|
32
37
|
# 关闭 bitcode
|
33
|
-
config
|
38
|
+
changed ||= update_build_setting(config, 'ENABLE_BITCODE', "NO")
|
39
|
+
|
40
|
+
changed
|
34
41
|
end
|
35
42
|
|
36
43
|
# 打开 LTO
|
37
44
|
def self.enable_lto(config)
|
38
|
-
|
45
|
+
changed = false
|
46
|
+
# changed ||= update_build_setting(config, 'LLVM_LTO', 'YES_THIN') if config.name == 'Release'
|
47
|
+
changed
|
48
|
+
end
|
49
|
+
|
50
|
+
# 将 umbrella 导出的头文件改为尖括号形式
|
51
|
+
def self.convert_umbrella_header_import(pod_name)
|
52
|
+
umbrella_path = "./Pods/Target Support Files/#{pod_name}/#{pod_name}-umbrella.h"
|
53
|
+
return unless File.exist?(umbrella_path)
|
54
|
+
contents = File.read(umbrella_path)
|
55
|
+
return unless contents.include?("#import \"")
|
56
|
+
File.open(umbrella_path, 'r+') do |f|
|
57
|
+
x = f.read
|
58
|
+
begin x.gsub!("#import \"#{pod_name}/", "#import <#{pod_name}/").gsub!('.h"', '.h>') rescue nil end
|
59
|
+
begin x.gsub!('#import "', "#import <#{pod_name}/").gsub!('.h"', '.h>') rescue nil end
|
60
|
+
f.rewind
|
61
|
+
f.write(x)
|
62
|
+
end
|
39
63
|
end
|
40
64
|
|
41
65
|
# 遍历所有 Pod 工程配置
|
@@ -50,23 +74,27 @@ module Dongjia
|
|
50
74
|
|
51
75
|
if name != 'Pods.xcodeproj'
|
52
76
|
proj.build_configurations.each do | config |
|
53
|
-
# 强制设置 deployment 版本为
|
54
|
-
if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f <
|
55
|
-
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = "
|
77
|
+
# 强制设置 deployment 版本为 9.0
|
78
|
+
if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 9.0
|
79
|
+
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = "9.0"
|
56
80
|
end
|
57
81
|
end
|
58
82
|
end
|
59
83
|
|
60
84
|
# project 的每个 target 配置
|
85
|
+
changed = false
|
61
86
|
proj.targets.select {|t| !t.name.start_with?('Pods')}.each do | target |
|
62
87
|
next if target.name.start_with?('Pods')
|
63
88
|
target.build_configurations.each do | config |
|
64
|
-
disable_warnings(config, target.name) if turn_off_warnings
|
65
|
-
enable_lto(config) if lto_enabled
|
89
|
+
changed ||= disable_warnings(config, target.name) if turn_off_warnings
|
90
|
+
changed ||= enable_lto(config) if lto_enabled
|
91
|
+
convert_umbrella_header_import(target.name)
|
66
92
|
end
|
67
93
|
end
|
68
94
|
|
69
|
-
|
95
|
+
if changed
|
96
|
+
proj.save
|
97
|
+
end
|
70
98
|
|
71
99
|
end
|
72
100
|
|
data/lib/dongjia_router.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
module Pod
|
2
|
+
class Podfile
|
3
|
+
module DSL
|
4
|
+
# Hook Podfile 中的 install: 方法,将当前版本 Cocoapods 不支持的 option 剔除
|
5
|
+
original_install = instance_method(:install!)
|
6
|
+
define_method(:install!) do |installation_method, options = {}|
|
7
|
+
all_options = Installer::InstallationOptions::all_options
|
8
|
+
valid_options = {}
|
9
|
+
options.each do |k, v|
|
10
|
+
valid_options.merge!({k => v}) if all_options.include?(k.to_s)
|
11
|
+
end
|
12
|
+
original_install.bind(self).(installation_method, valid_options)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require_relative 'dongjia_version_checker'
|
2
|
+
require_relative '../dongjia_binarization'
|
2
3
|
|
3
4
|
module Pod
|
4
5
|
|
5
6
|
class Installer
|
6
7
|
|
7
8
|
class PodSourceInstaller
|
8
|
-
|
9
9
|
# 关闭自己仓库中 pod 的安全警告
|
10
10
|
old_method = instance_method(:verify_source_is_secure)
|
11
11
|
define_method(:verify_source_is_secure) do |root_spec|
|
@@ -14,15 +14,29 @@ module Pod
|
|
14
14
|
old_method.bind(self).(root_spec)
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
18
17
|
end
|
19
18
|
|
19
|
+
# Hook post_installer
|
20
20
|
origin_perform_post_install_actions = instance_method(:perform_post_install_actions)
|
21
21
|
define_method :perform_post_install_actions do
|
22
22
|
origin_perform_post_install_actions.bind(self).()
|
23
23
|
Dongjia::DongjiaVersionChecker.check_version
|
24
24
|
end
|
25
25
|
|
26
|
-
|
26
|
+
# Hook Pods.xcodeproj 尚未写入
|
27
|
+
origin_run_podfile_post_install_hooks = instance_method(:run_podfile_post_install_hooks)
|
28
|
+
define_method :run_podfile_post_install_hooks do
|
29
|
+
origin_run_podfile_post_install_hooks.bind(self).()
|
30
|
+
# 处理二进制化
|
31
|
+
# Dongjia::Binarization.process(self)
|
32
|
+
end
|
27
33
|
|
34
|
+
# Hook Pods.xcodeproj 已生成完毕
|
35
|
+
origin_generate_pods_project = instance_method(:generate_pods_project)
|
36
|
+
define_method :generate_pods_project do
|
37
|
+
origin_generate_pods_project.bind(self).()
|
38
|
+
# 处理二进制化
|
39
|
+
Dongjia::Binarization.process(self)
|
40
|
+
end
|
41
|
+
end
|
28
42
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require_relative 'pod'
|
2
|
+
|
3
|
+
module Pod
|
4
|
+
|
5
|
+
class LocalSpec
|
6
|
+
@@local_spec_importing = false
|
7
|
+
@@local_spec_path = nil
|
8
|
+
def self.import_local_pod(path)
|
9
|
+
@@local_spec_importing = true
|
10
|
+
@@local_spec_path = path
|
11
|
+
yield if block_given?
|
12
|
+
@@local_spec_path = nil
|
13
|
+
@@local_spec_importing = false
|
14
|
+
end
|
15
|
+
def self.local_spec_importing?
|
16
|
+
@@local_spec_importing
|
17
|
+
end
|
18
|
+
def self.local_spec_path
|
19
|
+
@@local_spec_path
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class Podfile
|
24
|
+
|
25
|
+
# 只在 debug 模式下集成的组件,默认为空
|
26
|
+
@@debug_only_pods = []
|
27
|
+
|
28
|
+
# 导入工程目录下相对位置的 pod
|
29
|
+
def import_relative_in(path = './')
|
30
|
+
LocalSpec.import_local_pod(path) do
|
31
|
+
yield if block_given?
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
original_pod = instance_method(:pod)
|
36
|
+
define_method(:pod) do |name = nil, *requirements|
|
37
|
+
|
38
|
+
if Pod::Podfile::is_release_mode?
|
39
|
+
realname = name.split('/').first
|
40
|
+
if @@debug_only_pods.include?(realname)
|
41
|
+
puts "#{realname} is only for debug, it will be removed."
|
42
|
+
next
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
if LocalSpec.local_spec_importing?
|
47
|
+
path_cfg = { :path => "#{LocalSpec.local_spec_path}/#{Pod::repo_name(name)}" }
|
48
|
+
if requirements.length == 0
|
49
|
+
requirements = [path_cfg]
|
50
|
+
else
|
51
|
+
cfg = requirements.first
|
52
|
+
cfg.merge!(path_cfg) unless cfg.has_key?(:path)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
original_pod.bind(self).(name, *requirements)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-dongjia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jiangzhuoyi
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,34 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.13.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: down
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 5.2.0
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 5.2.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: archive-zip
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.12.0
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.12.0
|
69
97
|
description: A short description of cocoapods-dongjia.
|
70
98
|
email:
|
71
99
|
- jiangzhuoyi@idongjia.cn
|
@@ -79,30 +107,31 @@ files:
|
|
79
107
|
- lib/cocoapods-dongjia/command/install.rb
|
80
108
|
- lib/cocoapods-dongjia/command/open.rb
|
81
109
|
- lib/cocoapods-dongjia/command/reinstall.rb
|
110
|
+
- lib/cocoapods-dongjia/command/release.rb
|
82
111
|
- lib/cocoapods-dongjia/command/strip.rb
|
83
112
|
- lib/cocoapods-dongjia/gem_version.rb
|
84
113
|
- lib/cocoapods_plugin.rb
|
85
|
-
- lib/
|
114
|
+
- lib/dongjia_binarization.rb
|
86
115
|
- lib/dongjia_config.rb
|
87
116
|
- lib/dongjia_enterprise_inspector.rb
|
88
117
|
- lib/dongjia_pods_iterator.rb
|
89
118
|
- lib/dongjia_router.rb
|
90
|
-
- lib/dongjia_scheme_manager.rb
|
91
119
|
- lib/dongjia_source.rb
|
120
|
+
- lib/helper/Core/podfile/dsl.rb
|
92
121
|
- lib/helper/dongjia_version_checker.rb
|
122
|
+
- lib/helper/installer.rb
|
93
123
|
- lib/helper/pod.rb
|
94
|
-
- lib/helper/
|
124
|
+
- lib/helper/podfile.rb
|
95
125
|
- lib/helper/podfile_options.rb
|
96
|
-
- lib/helper/podfile_warnings.rb
|
97
126
|
- lib/helper/project.rb
|
98
127
|
homepage: https://github.com/EXAMPLE/cocoapods-dongjia
|
99
128
|
licenses:
|
100
129
|
- MIT
|
101
130
|
metadata:
|
102
131
|
update_desc: |2
|
103
|
-
-
|
104
|
-
-
|
105
|
-
post_install_message:
|
132
|
+
- 修复源码和二进制切换后的集成依赖问题
|
133
|
+
- 修复一些导致 crash 的问题
|
134
|
+
post_install_message:
|
106
135
|
rdoc_options: []
|
107
136
|
require_paths:
|
108
137
|
- lib
|
@@ -117,8 +146,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
146
|
- !ruby/object:Gem::Version
|
118
147
|
version: '0'
|
119
148
|
requirements: []
|
120
|
-
rubygems_version: 3.
|
121
|
-
signing_key:
|
149
|
+
rubygems_version: 3.2.19
|
150
|
+
signing_key:
|
122
151
|
specification_version: 4
|
123
152
|
summary: A longer description of cocoapods-dongjia.
|
124
153
|
test_files: []
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'cocoapods'
|
2
|
-
|
3
|
-
module Pod
|
4
|
-
|
5
|
-
class Podfile
|
6
|
-
|
7
|
-
gitdir = File.join(Dir.pwd, '.git')
|
8
|
-
if File.exist?(gitdir)
|
9
|
-
|
10
|
-
# 获取当前分支,仅对 dev 和 master 进行校验
|
11
|
-
branch = `git symbolic-ref --short -q HEAD`.strip
|
12
|
-
if branch == 'dev' or branch == 'master'
|
13
|
-
|
14
|
-
# Hook pod 方法
|
15
|
-
alias_method :pod_alias_by_inspector, :pod
|
16
|
-
|
17
|
-
def pod(name = nil, *requirements, &block)
|
18
|
-
|
19
|
-
if name.start_with?('DJ') && requirements.count > 0
|
20
|
-
req = requirements.first
|
21
|
-
if req[:branch] && req[:branch] != 'master'
|
22
|
-
UI.warn "检测到 #{name} 指向了分支 #{req[:branch]}\n"
|
23
|
-
exit -1
|
24
|
-
elsif req[:tag]
|
25
|
-
UI.warn "检测到 #{name} 指向了标签 #{req[:tag]}\n"
|
26
|
-
exit -1
|
27
|
-
elsif req[:commit]
|
28
|
-
UI.warn "检测到 #{name} 指向了节点 #{req[:commit]}\n"
|
29
|
-
exit -1
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
pod_alias_by_inspector(name, *requirements, &block)
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'helper/project'
|
2
|
-
|
3
|
-
module Dongjia
|
4
|
-
|
5
|
-
class SchemeManager
|
6
|
-
|
7
|
-
# 获取主工程的 development team
|
8
|
-
def self.development_team(ctx)
|
9
|
-
team = nil
|
10
|
-
project = ctx.umbrella_targets.first.user_project
|
11
|
-
return team unless project.is_a?(Xcodeproj::Project)
|
12
|
-
|
13
|
-
target = project.targets.find { |t|
|
14
|
-
!t.name.include?('企业版') && !t.name.end_with?('Extension')
|
15
|
-
}
|
16
|
-
return team unless target.is_a?(Xcodeproj::Project::PBXNativeTarget)
|
17
|
-
|
18
|
-
build_cfg = target.build_configurations.find { |c| c.name == 'Debug' }
|
19
|
-
return team unless build_cfg.is_a?(Xcodeproj::Project::XCBuildConfiguration)
|
20
|
-
|
21
|
-
team = build_cfg.build_settings['DEVELOPMENT_TEAM']
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.setup(ctx, params)
|
25
|
-
visibled_appspecs = params[:visibled_appspecs]
|
26
|
-
# return if !visibled_appspecs || visibled_appspecs.empty?
|
27
|
-
sandbox_root = ctx.sandbox_root
|
28
|
-
|
29
|
-
team = development_team(ctx)
|
30
|
-
|
31
|
-
Dir.foreach(sandbox_root).select{|f| f.end_with?('xcodeproj')}.each do |name|
|
32
|
-
proj = Xcodeproj::Project.open(File.join(sandbox_root, name))
|
33
|
-
proj.targets.each do | target |
|
34
|
-
# 确保是 appspec
|
35
|
-
next unless target.name.include?('-')
|
36
|
-
# 确保是可执行程序
|
37
|
-
next unless target.product_type == 'com.apple.product-type.application'
|
38
|
-
|
39
|
-
# 设置签名信息
|
40
|
-
if team.is_a?(String)
|
41
|
-
target.build_configurations.first.build_settings['DEVELOPMENT_TEAM'] = team
|
42
|
-
target.build_configurations.each { |cfg|
|
43
|
-
cfg.build_settings['DEVELOPMENT_TEAM'] = team
|
44
|
-
}
|
45
|
-
end
|
46
|
-
|
47
|
-
if visibled_appspecs.include?(target.name.split('-').first)
|
48
|
-
# 将 visibled_appspecs 中指定的 target 设为可见状态
|
49
|
-
proj.set_target_scheme_visible(target, true)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
proj.save if team.is_a?(String)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|