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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf922746db89582b7329cf9c703a49ea506e2d1384507e7752587d3b9de4123b
4
- data.tar.gz: ebdb54496afee8b0e0e57bf6e31358b743e204a895c2d0c45fead0813ac0c102
3
+ metadata.gz: 471b86e9797ce3ab7f09877755b0c3473baa5ea31ff3d3f19694dd829059b033
4
+ data.tar.gz: eef8b276868277386cc2153030a0f8dab00ee0fba7d4574d05c04406879e3aa7
5
5
  SHA512:
6
- metadata.gz: ab9245d4c070947805daae07dc13c7376e104ffe405aaa2dbaaaa84a1970cdb90262b0219a518e309c96df2f9ca94ec0d708fc227f1fc1dd7c8bed438bad22eb
7
- data.tar.gz: e98017a256e5c3e56e27054019654bc12b3b45c4e21d18d1274d7333132fe7cd332c857d1048406a632a3cdaeacb822e20918d41450575c2b953350898f8d0d2
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 ||= begin
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 ||= begin
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 ||= begin
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
  module CBin
2
- VERSION = "1.3.2"
2
+ VERSION = "1.4.0"
3
3
  end
4
4
 
5
5
  module Pod
@@ -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.3.2
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-10-21 00:00:00.000000000 Z
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