pprof 0.3.2 → 0.3.4

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
  SHA1:
3
- metadata.gz: b298d026ed403f21ea18ce7023b6a31369b749c1
4
- data.tar.gz: 9dbfec58d992aa3d80decc8bbb3f8167f2839a0a
3
+ metadata.gz: 1e19ab5781df3a2fe5ddd41e85b937da9134941a
4
+ data.tar.gz: ec74aa8ec2cd3341756d38ab617839cb259d87ac
5
5
  SHA512:
6
- metadata.gz: 4be4244290d618ceb0a91b23ef21d9d327dadee0840e4291ac8d854b8f2a137269099898fb8c1001f08863df9eeabd37609b58431cb1340a1e71110aad275c4a
7
- data.tar.gz: f00597c5cf7be23cf250861d47c8ac3cb5e75a43b15440155733a405baf7b5e8a4603caf6489a5e601bea7c6338ee23aba632268c0b4652b1da13e1edde899c7
6
+ metadata.gz: fd233c67e41648c601af8a57ae712a2ad32dfbd8912ba71d062633afbb6dbddeadc32161d9f5d929213c4479dfe8a0479c38c10d42d9bd6485477a28754df261
7
+ data.tar.gz: df20d443af778ba98a8b44d44927a994dd94d97536369bfba77580e8740787c1a9ab593938a4000cf6ad6a667f18e42ab43a9f7ed5310a400dfecf95983e1e6c
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  [![Twitter: @aligatr](https://img.shields.io/badge/contact-@aligatr-blue.svg?style=flat)](https://twitter.com/aligatr)
4
4
  [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/AliSoftware/pprof/blob/master/LICENSE)
5
+ [![Gem Version](https://badge.fury.io/rb/pprof.svg)](https://badge.fury.io/rb/pprof)
5
6
 
6
7
  `pprof` is a ruby library and binary to manipulate Provisioning Profiles.
7
8
 
@@ -11,8 +12,11 @@ It can help you create ruby scripts to list, get information, find and filter Pr
11
12
 
12
13
  ### Rubygems
13
14
 
14
- As of now this library is very early stage and [hasn't been pushed on RubyGems yet](https://github.com/AliSoftware/pprof/issues/4).
15
- I intend to push it as soon as [#2](https://github.com/AliSoftware/pprof/issues/4) (unit tests) and [#3](https://github.com/AliSoftware/pprof/issues/4) (CHANGELOG) are addressed.
15
+ ```sh
16
+ $ gem install pprof
17
+ ```
18
+
19
+ _(You might need to run this command with `sudo` if your gem home is a system directory)_
16
20
 
17
21
  ### Build from source
18
22
 
@@ -1,60 +1,90 @@
1
+ # Module for the pprof tool to manipulate Provisioning Profiles
1
2
  module PProf
3
+ # Represents the list of entitlements in a Provisioning Profile
2
4
  class Entitlements
5
+ # Create a new Entitlements object from the hash representation
6
+ # extracted from the Provisioning Profile
7
+ #
8
+ # @param [Hash] dict
9
+ # The hash representation of the entitlements, typically
10
+ # extracted from the Provisioning Profile.
3
11
  def initialize(dict)
4
12
  @dict = dict
5
13
  end
6
14
 
15
+ # The list of Keychain Access Groups
16
+ #
7
17
  # @return [Array<String>]
8
18
  def keychain_access_groups
9
19
  @dict['keychain-access-groups']
10
20
  end
11
21
 
22
+ # The status of the `get-task-allow` flag.
23
+ # True if we can attach a debugger to the executable, false if not.
24
+ #
12
25
  # @return [Bool]
13
26
  def get_task_allow
14
27
  @dict['get-task-allow']
15
28
  end
16
29
 
30
+ # The full application identifier (including the team prefix), as specified in the entitlements
31
+ #
17
32
  # @return [String]
18
33
  def app_id
19
34
  @dict['application-identifier']
20
35
  end
21
36
 
37
+ # The Team Identifier
38
+ #
22
39
  # @return [String]
23
40
  def team_id
24
41
  @dict['com.apple.developer.team-identifier']
25
42
  end
26
43
 
44
+ # The Apple Push Service environment used for push notifications.
45
+ # Typically either 'development' or 'production', or `nil` if push isn't enabled.
46
+ #
27
47
  # @return [String]
28
48
  def aps_environment
29
49
  @dict['aps-environment']
30
50
  end
31
51
 
52
+ # The Application Groups registered in the entitlements
53
+ #
32
54
  # @return [Array<String>]
33
55
  def app_groups
34
56
  @dict['com.apple.security.application-groups']
35
57
  end
36
58
 
59
+ # Are Beta (TestFlight) reports active?
60
+ #
37
61
  # @return [Bool]
38
62
  def beta_reports_active
39
63
  @dict['beta-reports-active']
40
64
  end
41
65
 
66
+ # True if the HealthKit entitlement is set
67
+ #
42
68
  # @return [Bool]
43
69
  def healthkit
44
70
  @dict['com.apple.developer.healthkit']
45
71
  end
46
72
 
73
+ # The Ubiquity Container identifiers, if at least one is enabled
74
+ #
47
75
  # @return [Array<String>]
48
76
  def ubiquity_container_identifiers
49
77
  @dict['com.apple.developer.ubiquity-container-identifiers']
50
78
  end
51
79
 
80
+ # The Ubiquity Key-Value Store Identifier, if enabled.
81
+ #
52
82
  # @return [String]
53
83
  def ubiquity_kvstore_identifier
54
84
  @dict['com.apple.developer.ubiquity-kvstore-identifier']
55
85
  end
56
86
 
57
- # Access entitlements by key
87
+ # Generic access to any entitlement by key
58
88
  #
59
89
  # @param [#to_s] key
60
90
  # The entitlement key to read
@@ -72,7 +102,7 @@ module PProf
72
102
  @dict.has_key?(key.to_s)
73
103
  end
74
104
 
75
- # The list of entitlement keys as String
105
+ # The list of all entitlement keys, as String
76
106
  #
77
107
  # @return [Array<String>]
78
108
  #
@@ -80,10 +110,17 @@ module PProf
80
110
  @dict.keys.map(&:to_s)
81
111
  end
82
112
 
113
+ # The hash representation of the entitlements (as represented in their PLIST form)
114
+ #
115
+ # @return [Hash]
83
116
  def to_hash
84
117
  @dict
85
118
  end
86
119
 
120
+ # The pretty-printed list of all entitlement keys and values
121
+ # (as a multi-line dashed list for human reading)
122
+ #
123
+ # @return [String]
87
124
  def to_s
88
125
  @dict.map do |key, value|
89
126
  "- #{key}: #{value}"
@@ -1,4 +1,6 @@
1
+ # Module for the pprof tool to manipulate Provisioning Profiles
1
2
  module PProf
3
+ # A helper tool to pretty-print Provisioning Profile informations
2
4
  class OutputFormatter
3
5
  # Initialize a new OutputFormatter
4
6
  #
@@ -12,16 +14,25 @@ module PProf
12
14
 
13
15
  # A small helper to print ASCII tables
14
16
  class ASCIITable
17
+ # Create a new ASCII table
18
+ #
19
+ # @param [Int...] widths
20
+ # The list of width for each colum of the table
15
21
  def initialize(*widths)
16
22
  @widths = widths
17
23
  end
18
24
 
25
+ # Add a new row to the ASCII table
26
+ #
27
+ # @param [String...] cols
28
+ # The content of each column of the row to add
19
29
  def row(*cols)
20
30
  '| ' + cols.zip(@widths).map do |c,w|
21
31
  (c || '<nil>').to_s.ljust(w)[0...w]
22
32
  end.join(' | ') + ' |'
23
33
  end
24
34
 
35
+ # Add a separator line to the ASCII table
25
36
  def separator
26
37
  '+' + @widths.map { |w| '-' * (w+2) }.join('+') + '+'
27
38
  end
@@ -2,10 +2,22 @@ require 'openssl'
2
2
  require 'plist'
3
3
  require 'time'
4
4
 
5
+ # Module for the pprof tool to manipulate Provisioning Profiles
5
6
  module PProf
7
+ # Represents the content of a Provisioning Profile file
6
8
  class ProvisioningProfile
9
+ # The default location where all the Provisioning Profiles are stored on a Mac
7
10
  DEFAULT_DIR="#{ENV['HOME']}/Library/MobileDevice/Provisioning Profiles"
8
11
 
12
+ # Create a new ProvisioningProfile object from a file path or UUID
13
+ #
14
+ # - If the parameter given has the form of an UUID, a file named with this UUID
15
+ # and a `.mobileprovision` is searched in the default directory `DEFAULT_DIR`
16
+ # - Otherwise, the parameter is interpreted as a file path
17
+ #
18
+ # @param [String] file
19
+ # File path or UUID of the ProvisioningProfile
20
+ #
9
21
  def initialize(file)
10
22
  if file =~ %r/^[0-9A-F-]*$/i
11
23
  path = "#{PProf::ProvisioningProfile::DEFAULT_DIR}/#{file}.mobileprovision"
@@ -17,77 +29,115 @@ module PProf
17
29
  @plist = Plist::parse_xml(pkcs7.data)
18
30
  end
19
31
 
32
+ # The name of the Provisioning Profile
33
+ #
20
34
  # @return [String]
21
35
  def name
22
36
  @plist['Name']
23
37
  end
24
38
 
39
+ # The UUID of the Provisioning Profile
40
+ #
25
41
  # @return [String]
26
42
  def uuid
27
43
  @plist['UUID']
28
44
  end
29
45
 
46
+ # The name of the Application Identifier associated with this Provisioning Profile
47
+ #
48
+ # @note This is not the AppID itself, but rather the name you associated to that
49
+ # AppID in your Developer Portal
50
+ #
30
51
  # @return [String]
31
52
  def app_id_name
32
53
  @plist['AppIDName']
33
54
  end
34
55
 
56
+ # The AppID prefix (which is typically the ID of the team)
57
+ #
35
58
  # @return [String]
36
59
  def app_id_prefix
37
60
  @plist['ApplicationIdentifierPrefix']
38
61
  end
39
62
 
63
+ # The Creation date of this Provisioning Profile
64
+ #
40
65
  # @return [DateTime]
41
66
  def creation_date
42
67
  @plist['CreationDate']
43
68
  end
44
69
 
70
+ # The expiration date of this Provisioning Profile
71
+ #
45
72
  # @return [DateTime]
46
73
  def expiration_date
47
74
  @plist['ExpirationDate']
48
75
  end
49
76
 
77
+ # The Time-To-Live of this Provisioning Profile
50
78
  # @return [Int]
51
79
  def ttl
52
80
  @plist['TimeToLive'].to_i
53
81
  end
54
82
 
83
+ # The Team IDs associated with this Provisioning Profile
84
+ #
85
+ # @note typically Provisioning Profiles contain only one team
86
+ #
55
87
  # @return [Array<String>]
56
88
  def team_ids
57
89
  @plist['TeamIdentifier']
58
90
  end
59
91
 
92
+ # The name of the Team associated with this Provisioning Profile
93
+ #
60
94
  # @return [String]
61
95
  def team_name
62
96
  @plist['TeamName']
63
97
  end
64
98
 
65
- # @return [Array<OpenSSL::X509::Certificate>] List of certificates associated with this profile
99
+ # The list of X509 Developer Certifiates associated with this profile
100
+ #
101
+ # @return [Array<OpenSSL::X509::Certificate>]
66
102
  def developer_certificates
67
103
  @plist['DeveloperCertificates'].map do |data|
68
104
  OpenSSL::X509::Certificate.new(data.string)
69
105
  end
70
106
  end
71
107
 
72
- # @return [Entitlements] All the entitlements associated with this profile
108
+ # All the entitlements associated with this Provisioning Profile
109
+ #
110
+ # @return [Entitlements]
73
111
  def entitlements
74
112
  PProf::Entitlements.new(@plist['Entitlements'])
75
113
  end
76
114
 
77
- # @return [Array<String>] List of provisioned devices if any
115
+ # The list of devices provisioned with this Provisioning Profile (if any)
116
+ #
117
+ # @return [Array<String>]
78
118
  def provisioned_devices
79
119
  @plist['ProvisionedDevices']
80
120
  end
81
121
 
122
+ # Indicates if this Provisioning Profile is provisioned for all devices
123
+ # or only for a list of some specific devices
124
+ #
82
125
  # @return [Bool]
83
126
  def provisions_all_devices
84
127
  @plist['ProvisionsAllDevices'] || false
85
128
  end
86
129
 
130
+ # The hash representation of this Provisioning Profile
131
+ #
132
+ # @return [Hash]
87
133
  def to_hash
88
134
  @dict
89
135
  end
90
136
 
137
+ # The human-readable string representation of this Provisioning Profile
138
+ # Typically suitable for printing this Provisioning Profile information to the user.
139
+ #
140
+ # @return [String]
91
141
  def to_s
92
142
  lines = [:name, :uuid, :app_id_name, :app_id_prefix, :creation_date, :expiration_date, :ttl, :team_ids, :team_name].map do |key|
93
143
  "- #{key.to_s}: #{self.send(key.to_sym)}"
@@ -1,3 +1,4 @@
1
1
  module PProf
2
- VERSION = '0.3.2'
2
+ # Module version
3
+ VERSION = '0.3.4'
3
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pprof
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olivier Halligon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-09 00:00:00.000000000 Z
11
+ date: 2016-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: plist
@@ -39,7 +39,7 @@ files:
39
39
  - lib/pprof/output_formatter.rb
40
40
  - lib/pprof/provisioning_profile.rb
41
41
  - lib/pprof/version.rb
42
- homepage: http://rubygems.org/gems/pp
42
+ homepage: https://github.com/AliSoftware/pprof
43
43
  licenses:
44
44
  - MIT
45
45
  metadata: {}