openapi-sourcetools 0.4.1 → 0.4.2

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/openapi-merge +26 -21
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cfb2a4e1895e12ccf61aabad1059b2c4b03125bca7ec6701c647a18d3c801445
4
- data.tar.gz: 7a55cb13b161085bf4b94cb57dcce5197fccbc692af745eede4877c6bdbe4bce
3
+ metadata.gz: 205e65ab29d8392a612d241cf0afc0197aba2884c076a7cbeb6523399520e573
4
+ data.tar.gz: f3cc5e36a89cc174c260a695c5e7d21914660ad8c3813e15d78b03409a964373
5
5
  SHA512:
6
- metadata.gz: 16883c132110669f173b8ae0b5247307cc36e77d4dd3c821c73b13234a2d49216e9a2180e3ffa98953ad4caca2ebb76d90a3d24c076872b7434ba98f11055090
7
- data.tar.gz: f2315fd7358db4deaf3a5c47a846cd18d0a816077381a0abfc6946b2c6bac6caffff2548c41396df7d8e27a7bfa597ae6922dce5d73c5b80a0407adb79463b3f
6
+ metadata.gz: ec20a103c6150baccb9d8ff315bdf3849993fd977ef4738c251f77aefc07b9dbc4f6521e55b14445d07df04dde2cf307bd0d025a33d124b272fea0052f69a956
7
+ data.tar.gz: 6c763b05cf087a982a53106ca9f889c221cea2788c57fddb1e120b1287f15a8a7d4e42711e0c24c1b87f79187b38f27cf431de918502609317d35deedfe0d170
data/bin/openapi-merge CHANGED
@@ -127,30 +127,35 @@ def gather_refs(doc, found)
127
127
  end
128
128
 
129
129
  if env(:prune)
130
- refs = Set.new
131
- gather_refs(merged, refs)
132
- used = {}
133
- all = merged.fetch('components', {})
134
- refs.each do |ref|
135
- p = ref.split('/')
136
- p.shift(2)
137
- item = all
138
- p.each do |key|
139
- item = item.fetch(key, nil)
140
- break if item.nil?
141
- end
142
- next if item.nil?
143
- sub = used
144
- p.each_index do |k|
145
- if k + 1 < p.size
146
- sub[p[k]] = {} unless sub.has_key? p[k]
147
- sub = sub[p[k]]
148
- else
149
- sub[p[k]] = item
130
+ prev_refs = Set.new
131
+ loop do # May have references from deleted so repeat until nothing deleted.
132
+ refs = Set.new
133
+ gather_refs(merged, refs)
134
+ used = {}
135
+ all = merged.fetch('components', {})
136
+ refs.each do |ref|
137
+ p = ref.split('/')
138
+ p.shift(2)
139
+ item = all
140
+ p.each do |key|
141
+ item = item.fetch(key, nil)
142
+ break if item.nil?
143
+ end
144
+ next if item.nil?
145
+ sub = used
146
+ p.each_index do |k|
147
+ if k + 1 < p.size
148
+ sub[p[k]] = {} unless sub.has_key? p[k]
149
+ sub = sub[p[k]]
150
+ else
151
+ sub[p[k]] = item
152
+ end
150
153
  end
151
154
  end
155
+ merged['components'] = used
156
+ break if refs == prev_refs
157
+ prev_refs = refs
152
158
  end
153
- merged['components'] = used
154
159
  end
155
160
 
156
161
  output = env(:out)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapi-sourcetools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ismo Kärkkäinen