xcode-archive-cache 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c3de4b956fe76ce673329ecf9977a911d3c6bb3055c00e59c3e6903cb16e6b2
4
- data.tar.gz: 92253d7316a2a716b71a053f182483e7af54aeb1662111175f3e071909d79998
3
+ metadata.gz: b2121ee4ca94b2acfa38e1071a6f30209381464a7da5239e919d4b70cafd1d84
4
+ data.tar.gz: 9874700c995c65ee3ecaa4772a1aa6deba6868591b96da6d271b9ee1f32588df
5
5
  SHA512:
6
- metadata.gz: 88b0a7e44eecbdc426755761dd5df10fb0e1cff4a00c44f915df1f65515685ce3f2527d8d9b1173ea439bff032d49f4875f32a859291a702f829d378103c8234
7
- data.tar.gz: c63650b58e921da5e38bb8648d0e6e3cfeddb55165e72f8984511c769a139b6ab3108350c0e684ed27ed9dbf9e02ef46135cc315a182ebc00586bb33c3fdae1f
6
+ metadata.gz: 528092da4900b8232d71a9583ec0752c92ff2ee851bc13db3609c91c1a9aec3db4278abb777a3c574728d35b409b59ede6fc1481c0dafed49b93a396b994b114
7
+ data.tar.gz: c16c9ff1c2623437b5e29c0fea3cd1bc10cfe631c4df1772197595392b5a05286a8223294c20f9dc306b5ed47089f7c7c85c7eeb4138a940d2a37861c6266bdc
@@ -122,10 +122,12 @@ module XcodeArchiveCache
122
122
  # @return [String]
123
123
  #
124
124
  def get_main_product_glob(built_node)
125
- product_name = built_node.native_target.product_reference.name ?
126
- built_node.native_target.product_reference.name :
127
- built_node.native_target.product_reference.path
128
- get_product_glob(File.basename(product_name))
125
+ product_names = [File.basename(built_node.native_target.product_reference.path)]
126
+ if built_node.native_target.product_reference.name
127
+ product_names.push(File.basename(built_node.native_target.product_reference.name))
128
+ end
129
+
130
+ get_product_glob(product_names.select { |name| File.extname(name).length > 0 })
129
131
  end
130
132
 
131
133
  # @param [XcodeArchiveCache::BuildGraph::Node] built_node
@@ -133,7 +135,7 @@ module XcodeArchiveCache
133
135
  # @return [String]
134
136
  #
135
137
  def get_swift_objc_interface_header_glob(built_node)
136
- get_product_glob(File.basename(built_node.swift_objc_interface_header_file))
138
+ get_product_glob([File.basename(built_node.swift_objc_interface_header_file)])
137
139
  end
138
140
 
139
141
  # @param [XcodeArchiveCache::BuildGraph::Node] built_node
@@ -142,7 +144,7 @@ module XcodeArchiveCache
142
144
  #
143
145
  def get_swiftmodule_glob(built_node)
144
146
  if built_node.module_name
145
- get_product_glob(built_node.module_name + ".swiftmodule")
147
+ get_product_glob([built_node.module_name + ".swiftmodule"])
146
148
  end
147
149
  end
148
150
 
@@ -153,24 +155,24 @@ module XcodeArchiveCache
153
155
  def get_modulemap_glob(built_node)
154
156
  resulting_modulemap_file_name = built_node.resulting_modulemap_file_name
155
157
  if resulting_modulemap_file_name
156
- get_product_glob(resulting_modulemap_file_name)
158
+ get_product_glob([resulting_modulemap_file_name])
157
159
  else
158
160
  modulemap_file_path = built_node.original_modulemap_file_path
159
161
  if modulemap_file_path && File.exist?(modulemap_file_path)
160
162
  modulemap_file_name = File.basename(modulemap_file_path)
161
- get_product_glob(modulemap_file_name)
163
+ get_product_glob([modulemap_file_name])
162
164
  end
163
165
  end
164
166
  end
165
167
 
166
- # @param [String] file_name
168
+ # @param [Array<String>] file_names
167
169
  #
168
170
  # @return [String]
169
171
  #
170
- def get_product_glob(file_name)
172
+ def get_product_glob(file_names)
171
173
  File.join(derived_data_path,
172
174
  "**",
173
- file_name)
175
+ "{#{file_names.join(",")}}")
174
176
  end
175
177
 
176
178
  # @param [String] framework_path
@@ -123,7 +123,7 @@ module XcodeArchiveCache
123
123
  #
124
124
  def find_for_product_name(product_name)
125
125
  canonical = all_targets
126
- .select {|native_target| native_target.name == product_name || native_target.product_reference.display_name == product_name}
126
+ .select {|native_target| native_target.name == product_name || native_target.product_reference.display_name == product_name || native_target.product_reference.path == product_name }
127
127
  .first
128
128
 
129
129
  parsed = @product_name_to_target[product_name]
@@ -13,7 +13,7 @@ module XcodeArchiveCache
13
13
  @headers_mover = HeadersMover.new(storage)
14
14
  @dependency_remover = DependencyRemover.new
15
15
  @build_flags_changer = BuildFlagsChanger.new
16
- @pods_fixer = PodsScriptFixer.new
16
+ @pods_fixer = PodsScriptFixer.new(storage)
17
17
  @modulemap_fixer = XcodeArchiveCache::Modulemap::HeaderPathFixer.new(storage)
18
18
  @framework_embedder = FrameworkEmbedder.new
19
19
  end
@@ -55,8 +55,8 @@ module XcodeArchiveCache
55
55
  # are covered by "Embed Pods Frameworks" script
56
56
  #
57
57
  if graph.node_by_name(get_pods_target_name(target))
58
- pods_fixer.fix_embed_frameworks_script(target, graph, storage.container_dir_path)
59
- pods_fixer.fix_copy_resources_script(target, graph, storage.container_dir_path)
58
+ pods_fixer.fix_embed_frameworks_script(target, graph)
59
+ pods_fixer.fix_copy_resources_script(target, graph)
60
60
  else
61
61
  framework_nodes = graph.nodes.select { |node| node.has_framework_product? }
62
62
  framework_file_paths = framework_nodes.map { |node| File.join(storage.get_storage_path(node), node.product_file_name) }
@@ -4,36 +4,41 @@ module XcodeArchiveCache
4
4
 
5
5
  include XcodeArchiveCache::Logs
6
6
 
7
- def initialize
7
+ # @param [XcodeArchiveCache::Injection::Storage] storage
8
+ #
9
+ def initialize(storage)
10
+ @storage = storage
8
11
  @build_settings_interpolator = XcodeArchiveCache::BuildSettings::StringInterpolator.new
9
12
  end
10
13
 
11
14
  # @param [Xcodeproj::Project::Object::PBXNativeTarget] target
12
15
  # @param [XcodeArchiveCache::BuildGraph::Graph] graph
13
- # @param [String] products_dir
14
16
  #
15
- def fix_embed_frameworks_script(target, graph, products_dir)
17
+ def fix_embed_frameworks_script(target, graph)
16
18
  build_settings = graph.dependent_build_settings
17
19
  file_path = find_embed_frameworks_script(target, build_settings)
18
20
  return unless file_path
19
21
 
20
- fix_script(file_path, graph, products_dir)
22
+ fix_script(file_path, graph)
21
23
  end
22
24
 
23
25
  # @param [Xcodeproj::Project::Object::PBXNativeTarget] target
24
26
  # @param [XcodeArchiveCache::BuildGraph::Graph] graph
25
- # @param [String] products_dir
26
27
  #
27
- def fix_copy_resources_script(target, graph, products_dir)
28
+ def fix_copy_resources_script(target, graph)
28
29
  build_settings = graph.dependent_build_settings
29
30
  file_path = find_copy_resources_script(target, build_settings)
30
31
  return unless file_path
31
32
 
32
- fix_script(file_path, graph, products_dir)
33
+ fix_script(file_path, graph)
33
34
  end
34
35
 
35
36
  private
36
37
 
38
+ # @return [XcodeArchiveCache::Injection::Storage]
39
+ #
40
+ attr_reader :storage
41
+
37
42
  # @return [XcodeArchiveCache::BuildSettings::StringInterpolator]
38
43
  #
39
44
  attr_reader :build_settings_interpolator
@@ -57,16 +62,14 @@ module XcodeArchiveCache
57
62
  end
58
63
 
59
64
  # @param [String] file_path
60
- # @param [XcodeArchiveCache::BuildGraph::Node] graph
61
- # @param [String] products_dir
65
+ # @param [XcodeArchiveCache::BuildGraph::Graph] graph
62
66
  #
63
- def fix_script(file_path, graph, products_dir)
67
+ def fix_script(file_path, graph)
64
68
  info("fixing #{file_path}")
65
69
  script = File.read(file_path)
66
70
  graph.nodes.each do |node|
67
- relative_product_path = "#{node.native_target.display_name}/#{node.product_file_name}"
68
- absolute_product_path = File.join(products_dir, relative_product_path)
69
- script = script.gsub(Regexp.new("\"[^\"]+\/#{node.product_file_name}\""), "\"#{absolute_product_path}\"")
71
+ product_path = File.join(storage.get_storage_path(node), node.product_file_name)
72
+ script = script.gsub(Regexp.new("\"[^\"]+\/#{node.product_file_name}\""), "\"#{product_path}\"")
70
73
  end
71
74
 
72
75
  File.open(file_path, "w") {|file| file.puts(script)}
@@ -18,7 +18,7 @@ module XcodeArchiveCache
18
18
  end
19
19
 
20
20
  # @param [Xcodeproj::Project::Object::PBXAbstractTarget] target
21
- # @param [XcodeArchiveCache::BuildSettings::Container] build_settings
21
+ # @param [XcodeArchiveCache::BuildSettings::Loader] build_settings_loader
22
22
  #
23
23
  def fix(target, build_settings_loader)
24
24
  checked_targets.push(target.equatable_identifier)
@@ -77,7 +77,7 @@ module XcodeArchiveCache
77
77
  def prepare_storage(node)
78
78
  path = get_storage_path(node)
79
79
  if File.exist?(path)
80
- raise StandardError.new, "Injection storage path is already busy"
80
+ raise StandardError.new, "Injection storage path is already busy: #{path}"
81
81
  end
82
82
 
83
83
  FileUtils.mkdir_p(path)
@@ -89,7 +89,12 @@ module XcodeArchiveCache
89
89
  # @return [String]
90
90
  #
91
91
  def get_storage_path(node)
92
- File.join(container_dir_path, node.name)
92
+ path = File.join(container_dir_path, node.name)
93
+ if node.native_target
94
+ path += "-#{node.native_target.uuid}"
95
+ end
96
+
97
+ path
93
98
  end
94
99
 
95
100
  # @param [XcodeArchiveCache::BuildGraph::Node] node
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcode-archive-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilya Dyakonov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-21 00:00:00.000000000 Z
11
+ date: 2021-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xcodeproj
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  requirements: []
147
- rubygems_version: 3.0.6
147
+ rubygems_version: 3.1.6
148
148
  signing_key:
149
149
  specification_version: 4
150
150
  summary: Native targets cache for Xcode archive builds.