cocoapods-podgenerate 0.1.11 → 0.1.12

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: 5c79d61610d0b30ff557b52df29c28607ed0062d6c034ba6e69dc6ad7d2463ee
4
- data.tar.gz: e6d5e86da46594113833fa2d30a1bf3af3b99f9054099911c4e3d0e55badab4b
3
+ metadata.gz: 4ff95024148a86a27ad23b6b884f1bfda2b1bac59e4c0274ac6b53dac16504fa
4
+ data.tar.gz: 6a1fbb763cc83d3dd9245eaa2ae38877f4a4e784fef6651f6003e13b69ab0759
5
5
  SHA512:
6
- metadata.gz: 52ef26a16cb084d8a65300700f3fe4a1ef868af792270b5140d4a33b006d2a72cc3e1c4472c3d92e636edc4d578c822d257b9cda27217cfb274444db66dbdc23
7
- data.tar.gz: 1d3f0d33c76d37690ee97d282f9f9034ee4d4e8de91afa594059fb4ccfc359f1d31543c48567a93fb346e837eed97ccc592e02878207a22477d971843a7a1110
6
+ metadata.gz: 8b5840fbee3dac260a6673f870dfc7ce1bd1f57c47b71e055b9eee7bdbd1cb5361fe65c06702f9f4589fe3aae4475e31b9cc167c34708d49770c56aecacaa4ab
7
+ data.tar.gz: a74db8fc1218a2ae364bb15bb200c8b51692515bffe57322295567d9e971680a59efa60f46ce380db1a9982ff545255ba049df9efa034bfd1f3d0f3811a25227
@@ -110,6 +110,13 @@ module Pod
110
110
  # 清理沙盒中残留的文件
111
111
  Pod::Installer::SandboxDirCleaner.new(sandbox, pod_targets, aggregate_targets).clean!
112
112
 
113
+ # 跳过路径修复: touch Pods project.pbxproj 让 Xcode 感知到变化
114
+ # 否则 Xcode 的 Dynamic Project Reloading 不会触发
115
+ pods_pbxproj = File.join(sandbox.project_path.to_s, 'project.pbxproj')
116
+ if File.file?(pods_pbxproj)
117
+ FileUtils.touch(pods_pbxproj)
118
+ end
119
+
113
120
  # H1 修复: 当没有目标需要生成时,跳过 update_project_cache 调用
114
121
  # @target_installation_results 仅在 create_and_save_projects 内设置,
115
122
  # 在跳过路径上始终为 nil,回退到空 InstallationResults.new({}, {})
@@ -75,26 +75,38 @@ module Pod
75
75
  # 增量 + 并行保存项目
76
76
  #
77
77
  # 流程:
78
- # 1. 过滤: 跳过 pbxproj 内容未变的项目(SHA256 摘要比对)
79
- # 2. 排序: 对需要保存的项目调用 sort(:groups_position => :below)
80
- # 3. 保存: 多项目并行写入(每个 xcodeproj 独立目录)
78
+ # 1. SHA256 摘要比对,分出变更和未变更项目
79
+ # 2. 未变更项目:touch pbxproj 更新时间戳(触发 Xcode 动态刷新)
80
+ # 3. 变更项目:排序后并行保存
81
81
  #
82
82
  # 【Bug 修复 L1】
83
- # 只有当 old_digest 和 current_digest 都非 nil 且相等时才跳过。
83
+ # 只有当 old_digest 和 current_digest 都非 nil 且相等时才跳过保存。
84
84
  # 如果任一为 nil(例如文件不可读),一律重新保存以确保项目完整性。
85
85
  #
86
+ # 【Xcode 动态刷新】
87
+ # v0.1.12 修复:未变更的项目也需要 touch pbxproj 文件,
88
+ # 否则 Xcode 不会触发 Dynamic Project Reloading(项目树不刷新)。
89
+ #
86
90
  # @param projects [Array<Project>] 要保存的项目列表
87
91
  def save_projects(projects)
88
- to_save = projects.select do |project|
92
+ to_save = []
93
+ unchanged = []
94
+ projects.each do |project|
89
95
  old = @project_digests[project.object_id]
90
96
  cur = digest_pbxproj(project)
91
97
  if old && cur && old == cur
92
- Pod::UI.message "- Skipping unchanged project #{UI.path project.path}"
93
- false
98
+ unchanged << project
94
99
  else
95
- true
100
+ to_save << project
96
101
  end
97
102
  end
103
+
104
+ # 先 touch 未变更项目(轻量操作,触发 Xcode 动态刷新)
105
+ unless unchanged.empty?
106
+ Pod::UI.message "- Touching #{unchanged.size} unchanged projects for Xcode refresh"
107
+ unchanged.each { |p| touch_pbxproj(p) }
108
+ end
109
+
98
110
  return if to_save.empty?
99
111
 
100
112
  # 排序(串行 — sort 操作轻量,并行开销反而更大)
@@ -262,6 +274,24 @@ module Pod
262
274
  nil
263
275
  end
264
276
 
277
+ # touch 项目的 pbxproj 文件,更新修改时间戳
278
+ #
279
+ # Xcode 的 Dynamic Project Reloading 通过检测 xcodeproj 内
280
+ # project.pbxproj 的修改时间来触发。当 SHA256 摘要未变化时
281
+ # 跳过 save 会导致 Xcode 无法感知变化,项目树不刷新。
282
+ # 本方法即使内容不变也更新文件修改时间。
283
+ #
284
+ # @param project [Project] Xcodeproj 项目
285
+ def touch_pbxproj(project)
286
+ path = project.path
287
+ return unless path
288
+ pbx_path = path.to_s.end_with?('.xcodeproj') ? File.join(path.to_s, 'project.pbxproj') : path.to_s
289
+ return unless File.file?(pbx_path)
290
+ FileUtils.touch(pbx_path)
291
+ rescue StandardError
292
+ nil
293
+ end
294
+
265
295
  # 计算线程池大小
266
296
  def compute_pool_size
267
297
  [[Etc.nprocessors - 1, 2].max, 16].min
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-podgenerate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - PodGenerate Team