cocoapods-meitu-bin 1.3.2 → 1.4.0
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-meitu-bin/command/bin/output_source.rb +3 -21
- data/lib/cocoapods-meitu-bin/command/bin.rb +1 -1
- data/lib/cocoapods-meitu-bin/config/config.rb +33 -2
- data/lib/cocoapods-meitu-bin/gem_version.rb +1 -1
- data/lib/cocoapods-meitu-bin/helpers/buildAll/bin_helper.rb +52 -1
- data/lib/cocoapods-meitu-bin/native/clean.rb +95 -0
- data/lib/cocoapods-meitu-bin/native/resolver.rb +2 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 471b86e9797ce3ab7f09877755b0c3473baa5ea31ff3d3f19694dd829059b033
|
4
|
+
data.tar.gz: eef8b276868277386cc2153030a0f8dab00ee0fba7d4574d05c04406879e3aa7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56f89da57ab03d6622b7c2f5649bd45a68fc89c6dd9847fafcf547da1d6a80255cb33c22ac12629d49e4d272b977d19911fe9a318721e6c7425775464dd3e3e0
|
7
|
+
data.tar.gz: 41be7d7d12089f6a6c8c74f45d4eda244f478c20634ea27d553b74bccc104b0c6cc6840b91320addf3bd97cf1c51915ea814a66096d0efd53b9f97d63d79ce73
|
@@ -118,35 +118,17 @@ module Pod
|
|
118
118
|
|
119
119
|
# 获取 podfile
|
120
120
|
def podfile
|
121
|
-
@podfile ||=
|
122
|
-
podfile_path = File.join(Pathname.pwd, 'Podfile')
|
123
|
-
raise 'Podfile不存在' unless File.exist?(podfile_path)
|
124
|
-
sources_manager = Pod::Config.instance.sources_manager
|
125
|
-
podfile = Podfile.from_file(Pathname.new(podfile_path))
|
126
|
-
podfile_hash = podfile.to_hash
|
127
|
-
podfile_hash['sources'] = (podfile_hash['sources'] || []).concat(sources_manager.code_source_list.map(&:url))
|
128
|
-
podfile_hash['sources'] << sources_manager.binary_source.url
|
129
|
-
podfile_hash['sources'].uniq!
|
130
|
-
Podfile.from_hash(podfile_hash)
|
131
|
-
end
|
121
|
+
@podfile ||= Pod::Config.instance.podfile
|
132
122
|
end
|
133
123
|
|
134
124
|
# 获取 podfile.lock
|
135
125
|
def lockfile
|
136
|
-
@lockfile ||=
|
137
|
-
lock_path = File.join(Pathname.pwd, 'Podfile.lock')
|
138
|
-
raise 'Podfile.lock不存在,请执行pod install' unless File.exist?(lock_path)
|
139
|
-
Lockfile.from_file(Pathname.new(lock_path))
|
140
|
-
end
|
126
|
+
@lockfile ||= Pod::Config.instance.lockfile
|
141
127
|
end
|
142
128
|
|
143
129
|
# 获取 sandbox
|
144
130
|
def sandbox
|
145
|
-
@sandbox ||=
|
146
|
-
sandbox_path = File.join(Pathname.pwd, 'Pods')
|
147
|
-
raise 'Pods文件夹不存在,请执行pod install' unless File.exist?(sandbox_path)
|
148
|
-
Pod::Sandbox.new(sandbox_path)
|
149
|
-
end
|
131
|
+
@sandbox ||= Pod::Config.instance.sandbox
|
150
132
|
end
|
151
133
|
|
152
134
|
# 根据podfile和podfile.lock分析依赖
|
@@ -15,7 +15,7 @@ require 'cocoapods-meitu-bin/command/bin/lock'
|
|
15
15
|
require 'cocoapods-meitu-bin/command/bin/source'
|
16
16
|
require 'cocoapods-meitu-bin/helpers'
|
17
17
|
require 'cocoapods-meitu-bin/helpers/framework_builder'
|
18
|
-
|
18
|
+
require 'cocoapods-meitu-bin/native/clean'
|
19
19
|
module Pod
|
20
20
|
class Command
|
21
21
|
# This is an example of a cocoapods plugin adding a top-level subcommand
|
@@ -12,6 +12,9 @@ module CBin
|
|
12
12
|
def template_hash
|
13
13
|
{
|
14
14
|
'configuration_env' => { description: '编译环境', default: 'dev', selection: %w[dev debug_iphoneos release_iphoneos] },
|
15
|
+
'minimum_deployment_target' => { description: '最低部署目标,参与二进制版本生成', default: 'iOS12.0'},
|
16
|
+
'bundle_identifier' => { description: '捆绑标识符,参与二进制版本生成', default: 'com.xxx.www' },
|
17
|
+
'random_value' => { description: '随机值,参与二进制版本生成', default: 'a1b2c3d4f5' },
|
15
18
|
'binary_repo_url' => { description: '二进制podspec私有源地址', default: 'git@github.com:Zhangyanshen/example-private-spec-bin.git' },
|
16
19
|
'binary_upload_url' => { description: '二进制文件上传地址', default: 'http://localhost:8080/frameworks' },
|
17
20
|
'binary_download_url' => { description: '二进制文件下载地址,后面会依次传入Xcode版本、configuration、组件名称与组件版本', default: 'http://localhost:8080/frameworks' },
|
@@ -56,6 +59,8 @@ module CBin
|
|
56
59
|
CBin.config.binary_download_url
|
57
60
|
end
|
58
61
|
|
62
|
+
|
63
|
+
|
59
64
|
def set_configuration_env(env)
|
60
65
|
@configuration_env = env
|
61
66
|
end
|
@@ -158,8 +163,34 @@ class PodUpdateConfig
|
|
158
163
|
@@is_mtxx = false
|
159
164
|
@@is_clear = false
|
160
165
|
@@shell_project = false
|
161
|
-
|
162
|
-
|
166
|
+
@@external_source_commit = {}
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
def self.set_external_source_commit
|
171
|
+
podfile_obj = Pod::Config.instance.podfile
|
172
|
+
# 遍历 Podfile 中的目标定义
|
173
|
+
podfile_obj.target_definitions.each do |target_name, target_definition|
|
174
|
+
target_definition.dependencies.each do |dependency|
|
175
|
+
if dependency.external_source
|
176
|
+
# if dependency.name == "MTBusinessBaseKit"
|
177
|
+
# puts dependency.external_source
|
178
|
+
# end
|
179
|
+
if dependency.external_source[:commit]
|
180
|
+
git_commit = dependency.external_source[:commit]
|
181
|
+
# puts "Git Commit for #{dependency}: #{git_commit}"
|
182
|
+
if @@external_source_commit[dependency.name].nil?
|
183
|
+
@@external_source_commit[dependency.name] = git_commit
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
puts "#{@@external_source_commit}" if ENV['p_bin_d'] == '1'
|
190
|
+
end
|
191
|
+
def self.external_source_commit
|
192
|
+
@@external_source_commit
|
193
|
+
end
|
163
194
|
def self.set_shell_project
|
164
195
|
@@shell_project = true
|
165
196
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'digest'
|
2
|
-
|
2
|
+
require 'cocoapods-meitu-bin/config/config'
|
3
3
|
module CBin
|
4
4
|
module BuildAll
|
5
5
|
class BinHelper
|
@@ -20,7 +20,14 @@ module CBin
|
|
20
20
|
# puts "#{pod_name}:#{include_dependencies}"
|
21
21
|
if include_dependencies
|
22
22
|
specs << dependencies_str(pod_name, specifications)
|
23
|
+
else
|
24
|
+
if !ENV['MEITU_USE_OPEN_COMMIT']
|
25
|
+
specs << dependencies_commit_str(pod_name, specifications)
|
26
|
+
end
|
23
27
|
end
|
28
|
+
specs << minimum_deployment_target_str
|
29
|
+
specs << bundle_identifier_str
|
30
|
+
specs << random_value_str
|
24
31
|
specs << xcode_version
|
25
32
|
specs << (configuration.nil? ? 'Debug' : configuration)
|
26
33
|
specs_str = specs.join('')
|
@@ -35,6 +42,20 @@ module CBin
|
|
35
42
|
"#{original_version}.bin#{specs_str_md5}"
|
36
43
|
end
|
37
44
|
|
45
|
+
#最低部署目标,参与二进制版本生成
|
46
|
+
def minimum_deployment_target_str
|
47
|
+
CBin.config.minimum_deployment_target
|
48
|
+
end
|
49
|
+
|
50
|
+
# 捆绑标识符,参与二进制版本生成
|
51
|
+
def bundle_identifier_str
|
52
|
+
CBin.config.bundle_identifier
|
53
|
+
end
|
54
|
+
# 随机值,参与二进制版本生成
|
55
|
+
def random_value_str
|
56
|
+
CBin.config.random_value
|
57
|
+
end
|
58
|
+
|
38
59
|
def xcode_version
|
39
60
|
@xcode_version ||= begin
|
40
61
|
`xcodebuild -version`.split(' ').join('')
|
@@ -49,11 +70,13 @@ module CBin
|
|
49
70
|
# 将当前 Pod 库的依赖库拼接成字符串(格式:pod1_name(pod1_version),pod2_name(pod2_version),...)
|
50
71
|
def dependencies_str(pod_name, specifications)
|
51
72
|
deps = []
|
73
|
+
|
52
74
|
specifications.map do |spec|
|
53
75
|
if spec.root.name == pod_name
|
54
76
|
deps.concat(spec.dependencies)
|
55
77
|
end
|
56
78
|
end
|
79
|
+
|
57
80
|
if deps.empty?
|
58
81
|
UI.puts "`#{pod_name}`无依赖库".red if ENV['p_bin_d'] == '1'
|
59
82
|
return ''
|
@@ -64,6 +87,11 @@ module CBin
|
|
64
87
|
next
|
65
88
|
end
|
66
89
|
version = dep_version(dep, specifications)
|
90
|
+
if !ENV['MEITU_USE_OPEN_COMMIT']
|
91
|
+
if PodUpdateConfig.external_source_commit[dep.name]
|
92
|
+
version = PodUpdateConfig.external_source_commit[dep.name]
|
93
|
+
end
|
94
|
+
end
|
67
95
|
result << "#{dep.name}(#{version})"
|
68
96
|
end
|
69
97
|
if ENV['p_bin_d'] == '1'
|
@@ -76,6 +104,29 @@ module CBin
|
|
76
104
|
end
|
77
105
|
result.join(',')
|
78
106
|
end
|
107
|
+
def dependencies_commit_str(pod_name, specifications)
|
108
|
+
deps = []
|
109
|
+
specifications.map do |spec|
|
110
|
+
if spec.root.name == pod_name
|
111
|
+
deps.concat(spec.dependencies)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
if deps.empty?
|
116
|
+
UI.puts "`#{pod_name}`无依赖库".red if ENV['p_bin_d'] == '1'
|
117
|
+
return ''
|
118
|
+
end
|
119
|
+
result = []
|
120
|
+
deps.uniq.map do |dep|
|
121
|
+
if dep.root_name == pod_name
|
122
|
+
next
|
123
|
+
end
|
124
|
+
if PodUpdateConfig.external_source_commit[dep.name]
|
125
|
+
result << "#{dep.name}(#{PodUpdateConfig.external_source_commit[dep.name]})"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
result.join(',')
|
129
|
+
end
|
79
130
|
|
80
131
|
# 获取依赖库版本号
|
81
132
|
def dep_version(dep, specifications)
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'cocoapods/downloader'
|
2
|
+
|
3
|
+
module Pod
|
4
|
+
class Command
|
5
|
+
class Bin < Command
|
6
|
+
class Clean < Bin
|
7
|
+
# self.abstract_command = true
|
8
|
+
self.summary = '删除二进制组件版本pod缓存'
|
9
|
+
self.description = <<-DESC
|
10
|
+
#{summary},--all 移除全部二进制版本缓存
|
11
|
+
DESC
|
12
|
+
|
13
|
+
def self.options
|
14
|
+
[
|
15
|
+
%w[--all 移除全部二进制版本缓存],
|
16
|
+
# %w[--no-need 移除除了当前需要的版本外的其他版本二进制版本缓存]
|
17
|
+
].concat(super).uniq
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize(argv)
|
21
|
+
@all = argv.flag?('all', false)
|
22
|
+
# @no_need = argv.flag?('no-need', false)
|
23
|
+
super
|
24
|
+
end
|
25
|
+
|
26
|
+
def run
|
27
|
+
cache = Downloader::Cache.new(Pod::Config.instance.cache_root + 'Pods')
|
28
|
+
all_del_cache_size=0
|
29
|
+
cache.cache_descriptors_per_pod.each do |pod_name, cache_descriptors|
|
30
|
+
del_cache_descriptors = []
|
31
|
+
del_cache_versions = []
|
32
|
+
current_pod_name_del_cache_size=0
|
33
|
+
cache_descriptors.each do |desc|
|
34
|
+
# version 包含 bin
|
35
|
+
if desc[:version].to_s.include?('bin')
|
36
|
+
if @all
|
37
|
+
current_pod_name_del_cache_size += folder_size(desc[:slug])
|
38
|
+
del_cache_descriptors << desc
|
39
|
+
del_cache_versions << desc[:version]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
all_del_cache_size+=current_pod_name_del_cache_size
|
44
|
+
size = format_size(current_pod_name_del_cache_size)
|
45
|
+
Pod::UI.puts "#{pod_name}删除#{del_cache_versions}共#{size}"
|
46
|
+
remove_caches(del_cache_descriptors)
|
47
|
+
end
|
48
|
+
size = format_size(all_del_cache_size)
|
49
|
+
Pod::UI.puts "共删除#{size}二进制版本pod缓存".red
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
def remove_caches(cache_descriptors)
|
54
|
+
cache_descriptors.each do |desc|
|
55
|
+
UI.message("Removing spec #{desc[:spec_file]} (v#{desc[:version]})") do
|
56
|
+
FileUtils.rm(desc[:spec_file])
|
57
|
+
end
|
58
|
+
UI.message("Removing cache #{desc[:slug]}") do
|
59
|
+
FileUtils.rm_rf(desc[:slug])
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
def folder_size(path)
|
64
|
+
return 0 unless File.directory?(path)
|
65
|
+
|
66
|
+
total_size = 0
|
67
|
+
Dir.foreach(path) do |entry|
|
68
|
+
next if entry == '.' || entry == '..'
|
69
|
+
|
70
|
+
full_path = File.join(path, entry)
|
71
|
+
if File.file?(full_path)
|
72
|
+
total_size += File.size(full_path)
|
73
|
+
elsif File.directory?(full_path)
|
74
|
+
total_size += folder_size(full_path)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
total_size
|
79
|
+
end
|
80
|
+
def format_size(size)
|
81
|
+
units = %w[bytes KB MB GB TB]
|
82
|
+
return '0 bytes' if size.zero?
|
83
|
+
|
84
|
+
exp = (Math.log(size) / Math.log(1024)).to_i
|
85
|
+
exp = units.size - 1 if exp > units.size - 1
|
86
|
+
format('%.2f %s', size / (1024 ** exp).to_f, units[exp])
|
87
|
+
end
|
88
|
+
def clean_all_binary
|
89
|
+
# Your method implementation here
|
90
|
+
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -133,6 +133,8 @@ module Pod
|
|
133
133
|
start_time = Time.now
|
134
134
|
@activated = Molinillo::Resolver.new(self, self).resolve(dependencies, locked_dependencies)
|
135
135
|
UI.puts "pod_time_profiler: Molinillo resolve耗时:#{'%.1f' % (Time.now - start_time)}s".green
|
136
|
+
#记录podfile 中commit 使用的组件map,提供后面二进制版本生成使用
|
137
|
+
PodUpdateConfig.set_external_source_commit
|
136
138
|
resolver_specs_by_target
|
137
139
|
rescue Molinillo::ResolverError => e
|
138
140
|
handle_resolver_error(e)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-meitu-bin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jensen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parallel
|
@@ -143,6 +143,7 @@ files:
|
|
143
143
|
- lib/cocoapods-meitu-bin/native.rb
|
144
144
|
- lib/cocoapods-meitu-bin/native/acknowledgements.rb
|
145
145
|
- lib/cocoapods-meitu-bin/native/analyzer.rb
|
146
|
+
- lib/cocoapods-meitu-bin/native/clean.rb
|
146
147
|
- lib/cocoapods-meitu-bin/native/file_accessor.rb
|
147
148
|
- lib/cocoapods-meitu-bin/native/gen.rb
|
148
149
|
- lib/cocoapods-meitu-bin/native/installation_options.rb
|