pprof 0.5.0 → 0.5.1

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: f7691660bb69c7c6f6f4fedb4722dc0e647183378e5aa79cfa0ce2a80f7e4cef
4
- data.tar.gz: ae54346cc1d76c10a89468b605a698727ff38909f683bed7ff8a6d779c6605b0
3
+ metadata.gz: 21276029f4a059802fcc59cdf37a843caa2b38cc11d6af22f76fa2969bf24975
4
+ data.tar.gz: 02eedbe630b35226f7a00c531d0b8075b11ab6f4c705434e2f4e4f3445251c8d
5
5
  SHA512:
6
- metadata.gz: 9b2490137336562c025610bbfc7de8b0fe1a177005b9a7c7cfea21310fedb3f77164745303dc08b1816d3e8dd5a0f7a5aaa71373a71c784921982d36da4e876f
7
- data.tar.gz: 22665cd4ba32a996577a8ed8099348f29193fb88589a32b1faaf8ca03298a971902373d23cdad568c59a1b6e23f59f81e3c0a3e543e8173c18ddd71f098379a5
6
+ metadata.gz: 48eb1f57db15c832e6a9acf454d9c6a5ce3be07dc7db4d5877cccb7c32c96f6cfddcf7b3be78a8af8c2c9374148961273a0a1e22a5f51e13b0d8df7359b20ed7
7
+ data.tar.gz: fdb8efa34984352bc61242ae6452c3e5f6a6e3c11708735c0061d202dae12d8c232458ad88f02d572579221e7d1b8e7e30b1c457048ad626097d80d9825e5aba
data/bin/pprof CHANGED
@@ -40,6 +40,8 @@ parser = OptionParser.new do |opts|
40
40
  |Tips:
41
41
  | - If you want to search for _exact_ match, you can use and anchored RegEx like `/^InHouse$/i`
42
42
  | - To remove all expired certificates, you can use `#{opts.program_name} -e0 | xargs -0 rm`
43
+ | - You can combine the `--json` output with `jq` to generate and filter using some powerful custom outputs.
44
+ | e.g.: `#{opts.program_name} --name 'My App' --json --devices | jq '.[] | {uuid:.UUID, name:.AppIDName, nb_profiles: .ProvisionedDevices|length}'`
43
45
  BANNER
44
46
 
45
47
  opts.separator ''
@@ -142,7 +144,7 @@ unless filters.empty? || ARGV.empty?
142
144
  exit
143
145
  end
144
146
 
145
- unless options.empty? || !ARGV.empty?
147
+ unless list_options[:mode] == :json || options.empty? || !ARGV.empty?
146
148
  puts 'You should use option flags only when providing an specific path.'
147
149
  puts parser # Usage
148
150
  exit
@@ -154,7 +156,15 @@ o = PProf::OutputFormatter.new
154
156
  if ARGV.empty?
155
157
  # Print list of matching profiles
156
158
  list_options[:mode] = :path if list_options[:zero] && list_options[:mode] == :table
157
- o.print_filtered_list(PProf::ProvisioningProfile::DEFAULT_DIR, filters, list_options)
159
+ filter_func = o.filter_proc(filters)
160
+ case list_options[:mode]
161
+ when :table
162
+ o.print_table(&filter_func)
163
+ when :json
164
+ o.print_json_list(options: options, &filter_func)
165
+ else
166
+ o.print_list(options: list_options, &filter_func)
167
+ end
158
168
  else
159
169
  begin
160
170
  # Print info about given profile path/UUID
@@ -113,7 +113,7 @@ module PProf
113
113
  hash.delete 'DER-Encoded-Profile'
114
114
  hash.delete 'ProvisionedDevices' unless options[:devices]
115
115
  if options[:certs]
116
- hash['DeveloperCertificates'] = developer_certificates.map do |cert|
116
+ hash['DeveloperCertificates'] = profile.developer_certificates.map do |cert|
117
117
  {
118
118
  subject: cert.subject,
119
119
  issuer: cert.issuer,
@@ -140,27 +140,14 @@ module PProf
140
140
  @output.puts JSON.pretty_generate(as_json(profile, options))
141
141
  end
142
142
 
143
- # Prints the filtered list of Provisioning Profiles
144
- #
145
- # Convenience method. Calls self.print_list with a filter block build from a filter hash
146
- #
147
- # @param [String] dir
148
- # The directory to search for the provisioning profiles. Defaults to the standard directory on Mac
143
+ # Generates a lambda which takes a `PProf::ProvisioningProfile` and returns if it should be kept in our listing or not
149
144
  #
150
145
  # @param [Hash<Symbol,Any>] filters
151
146
  # The hash describing the applied filters
147
+ # @return [Lambda] A lambda which takes a `PProf::ProvisioningProfile` and returns `true` if it matches the provided `filters`
152
148
  #
153
- # @param [Hash<Symbol,Any>] list_options
154
- # The way to print the output.
155
- # * Valid values for key `:mode` are:
156
- # - `:table` (for ASCII table output)
157
- # - `:list` (for plain list of only the UUIDs, suitable for piping to `xargs`)
158
- # - `:path` (for plain list of only the paths, suitable for piping to `xargs`)
159
- # * Valid values for key `:zero` are `true` or `false` to decide if we print `\0` at the end of each output.
160
- # Only used by `:list` and `:path` modes
161
- #
162
- def print_filtered_list(dir = PProf::ProvisioningProfile::DEFAULT_DIR, filters = {}, list_options = { mode: :table })
163
- filter_func = lambda do |p|
149
+ def filter_proc(filters = {})
150
+ lambda do |p|
164
151
  (filters[:name].nil? || p.name =~ filters[:name]) &&
165
152
  (filters[:appid_name].nil? || p.app_id_name =~ filters[:appid_name]) &&
166
153
  (filters[:appid].nil? || p.entitlements.app_id =~ filters[:appid]) &&
@@ -172,15 +159,6 @@ module PProf
172
159
  (filters[:aps_env].nil? || match_aps_env(p.entitlements.aps_environment, filters[:aps_env])) &&
173
160
  true
174
161
  end
175
-
176
- case list_options[:mode]
177
- when :table
178
- print_table(dir, &filter_func)
179
- when :json
180
- print_json_list(dir, list_options, &filter_func)
181
- else
182
- print_list(dir, list_options, &filter_func)
183
- end
184
162
  end
185
163
 
186
164
  # Prints the filtered list as a table
@@ -193,7 +171,7 @@ module PProf
193
171
  # The block is given ProvisioningProfile object and should
194
172
  # return true to display the row, false to filter it out
195
173
  #
196
- def print_table(dir = PProf::ProvisioningProfile::DEFAULT_DIR)
174
+ def print_table(dir: PProf::ProvisioningProfile::DEFAULT_DIR)
197
175
  count = 0
198
176
  errors = []
199
177
 
@@ -237,7 +215,7 @@ module PProf
237
215
  # The block is given ProvisioningProfile object and should
238
216
  # return true to display the row, false to filter it out
239
217
  #
240
- def print_list(dir = PProf::ProvisioningProfile::DEFAULT_DIR, options) # rubocop:disable Style/OptionalArguments
218
+ def print_list(dir: PProf::ProvisioningProfile::DEFAULT_DIR, options:) # rubocop:disable Style/OptionalArguments
241
219
  errors = []
242
220
  Dir['*.mobileprovision', base: dir].each do |file_name|
243
221
  file = File.join(dir, file_name)
@@ -259,14 +237,14 @@ module PProf
259
237
  # Defaults to '~/Library/MobileDevice/Provisioning Profiles'
260
238
  # @param [Hash] options
261
239
  # The options hash typically filled while parsing the command line arguments.
262
- # - :mode: will print the UUIDs if set to `:list`, the file path otherwise
263
- # - :zero: will concatenate the entries with `\0` instead of `\n` if set
240
+ # - :certs: will print the UUIDs if set to `:list`, the file path otherwise
241
+ # - :devices: will concatenate the entries with `\0` instead of `\n` if set
264
242
  #
265
243
  # @yield each provisioning profile for filtering/validation
266
244
  # The block is given ProvisioningProfile object and should
267
245
  # return true to display the row, false to filter it out
268
246
  #
269
- def print_json_list(dir = PProf::ProvisioningProfile::DEFAULT_DIR, options) # rubocop:disable Style/OptionalArguments
247
+ def print_json_list(dir: PProf::ProvisioningProfile::DEFAULT_DIR, options:) # rubocop:disable Style/OptionalArguments
270
248
  errors = []
271
249
  profiles = Dir['*.mobileprovision', base: dir].map do |file_name|
272
250
  file = File.join(dir, file_name)
data/lib/pprof/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  module PProf
4
4
  # Module version
5
- VERSION = '0.5.0'
5
+ VERSION = '0.5.1'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pprof
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olivier Halligon