cyclonedx-cocoapods 1.4.0 → 1.4.1

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: 4b3c1577d54844759e40218fb3b0876014aa8a2eac1a8ea2be2512cab13d79f9
4
- data.tar.gz: dd99bd2aa09a1d6ecd956fdd3118a064df6662026b6816ee86f9a2f553347068
3
+ metadata.gz: 84ed77501efec7ca77fce507dd1dbc4a29ffb4b8cf45fc6b942eafe3901af95a
4
+ data.tar.gz: 85204bb25786de11c3dc7ec302d016431ebecd7078149081a6b294ba65f756aa
5
5
  SHA512:
6
- metadata.gz: 5e82c25c27de0fbede464d04a06b9b7f06c3fc79550041835395c6fe5aa32a0f1c4bba1d391b988ff6d39107f696960f064730de43ef8c0f0e8000d576cd1010
7
- data.tar.gz: '048fa99979dd4e606b4952412dad3675bad2ebe3e45eccd8513089f18908d5594213031cb85130434f002d7a8edbafbb67818e602c648b49137768e8085c445b'
6
+ metadata.gz: 7f4b84eb0a11f7f6488fe9fccef7806e786db41ea647806046b729b39952172175df7b8884b17c60e5cac0b246a9bfc6e56d8e53f69b3ad9521c9cde0f19726b
7
+ data.tar.gz: f719564347931af554dbc2705022a548405bbd95320db5c094f5616166a46ecd830d8fddedcaebd9e24fd76ff6e8be2e1917d3a3be8bc6ede3f21e77e763af77
data/CHANGELOG.md CHANGED
@@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [1.4.1]
8
+
9
+ ### Changed
10
+ - Minimum Ruby version is now v2.6.3 so the [Array.union](https://apidock.com/ruby/v2_6_3/Array/union) function can be used.
11
+
12
+ ### Fixed
13
+ - Improved performance when analyzing a Podfile with many pods. ([Issue #78](https://github.com/CycloneDX/cyclonedx-cocoapods/issues/78)) [@macblazer](https://github.com/macblazer).
14
+
7
15
  ## [1.4.0]
8
16
 
9
17
  ### Added
@@ -100,12 +100,10 @@ module CycloneDX
100
100
  parsed_options[:name] = name
101
101
  end
102
102
  options.on('-v', '--version version', 'Version of the component for which the BOM is generated') do |version|
103
- begin
104
- Gem::Version.new(version)
105
- parsed_options[:version] = version
106
- rescue StandardError => e
107
- raise OptionParser::InvalidArgument, e.message
108
- end
103
+ Gem::Version.new(version)
104
+ parsed_options[:version] = version
105
+ rescue StandardError => e
106
+ raise OptionParser::InvalidArgument, e.message
109
107
  end
110
108
  options.on('-t', '--type type',
111
109
  'Type of the component for which the BOM is generated ' \
@@ -184,12 +184,18 @@ module CycloneDX
184
184
  end
185
185
  end
186
186
 
187
- def append_all_pod_dependencies(pods_used, pods_cache)
188
- result = pods_used
187
+ # Calculate simple array of all used pods plus their direct dependencies
188
+ #
189
+ # @param [Array<String>] top_level_pods List of pod names that are directly imported by the Podfile
190
+ # @param [Hash<String,Array<String>>] pods_cache Dependency information directly from the Podfile.lock;
191
+ # keys are string pod names, values are list of direct dependencies of the given pod.
192
+ # @return [Array<String>, Hash<String,Array<String>>] First element is list of all used pod names.
193
+ # Second element is a hash: keys are string pod names, values are the direct dependencies of that pod.
194
+ def append_all_pod_dependencies(top_level_pods, pods_cache)
195
+ result = top_level_pods
189
196
  original_number = 0
190
- dependencies_hash = {}
191
197
 
192
- # Loop adding pod dependencies until we are not adding any more dependencies to the result
198
+ # Loop adding pod dependencies until we are not adding any more dependencies to the result.
193
199
  # This brings in all the transitive dependencies of every top level pod.
194
200
  # Note this also handles two edge cases:
195
201
  # 1. Having a Podfile with no pods used.
@@ -197,15 +203,20 @@ module CycloneDX
197
203
  while result.length != original_number
198
204
  original_number = result.length
199
205
 
200
- pods_used.each do |pod_name|
206
+ top_level_pods.each do |pod_name|
201
207
  if pods_cache.key?(pod_name)
202
- result.push(*pods_cache[pod_name])
203
- dependencies_hash[pod_name] = pods_cache[pod_name].empty? ? [] : pods_cache[pod_name]
208
+ # Append all of the dependencies of this pod into the main list, if they aren't already in the list
209
+ result = result.union(pods_cache[pod_name])
204
210
  end
205
211
  end
206
212
 
207
- result = result.uniq
208
- pods_used = result
213
+ top_level_pods = result
214
+ end
215
+
216
+ # Now that we have the simple list of all unique pods, grab their direct dependencies
217
+ dependencies_hash = {}
218
+ result.each do |pod_name|
219
+ dependencies_hash[pod_name] = pods_cache.key?(pod_name) ? pods_cache[pod_name] : []
209
220
  end
210
221
 
211
222
  [result, dependencies_hash]
@@ -21,6 +21,6 @@
21
21
 
22
22
  module CycloneDX
23
23
  module CocoaPods
24
- VERSION = '1.4.0'
24
+ VERSION = '1.4.1'
25
25
  end
26
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cyclonedx-cocoapods
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - José González
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-10-15 00:00:00.000000000 Z
12
+ date: 2024-11-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cocoapods
@@ -51,48 +51,6 @@ dependencies:
51
51
  - - "<"
52
52
  - !ruby/object:Gem::Version
53
53
  version: '2.0'
54
- - !ruby/object:Gem::Dependency
55
- name: equivalent-xml
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: 0.6.0
61
- type: :development
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: 0.6.0
68
- - !ruby/object:Gem::Dependency
69
- name: rake
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '13.0'
75
- type: :development
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '13.0'
82
- - !ruby/object:Gem::Dependency
83
- name: rspec
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '3.0'
89
- type: :development
90
- prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '3.0'
96
54
  description: CycloneDX is a lightweight software bill-of-material (SBOM) specification
97
55
  designed for use in application security contexts and supply chain component analysis.
98
56
  This Gem generates CycloneDX BOMs from CocoaPods projects.
@@ -133,14 +91,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
133
91
  requirements:
134
92
  - - ">="
135
93
  - !ruby/object:Gem::Version
136
- version: 2.4.0
94
+ version: 2.6.3
137
95
  required_rubygems_version: !ruby/object:Gem::Requirement
138
96
  requirements:
139
97
  - - ">="
140
98
  - !ruby/object:Gem::Version
141
99
  version: '0'
142
100
  requirements: []
143
- rubygems_version: 3.5.16
101
+ rubygems_version: 3.5.23
144
102
  signing_key:
145
103
  specification_version: 4
146
104
  summary: CycloneDX software bill-of-material (SBOM) generation utility