fastlane-plugin-verify_ipa 0.2.1 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +26 -3
- data/lib/fastlane/plugin/verify_ipa/actions/verify_ipa_entitlements_action.rb +36 -11
- data/lib/fastlane/plugin/verify_ipa/actions/verify_ipa_files_action.rb +1 -1
- data/lib/fastlane/plugin/verify_ipa/helper/verify_ipa_helper.rb +10 -4
- data/lib/fastlane/plugin/verify_ipa/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8d3d6a12c11ed740135f189e5ee1bbd27f4e155
|
4
|
+
data.tar.gz: 5f225411dfcd0b22c1651b1bea94b903b84bab57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afd584e1c65d24a7297ec756ba095056a96ca6a287ca9fb46aa6279a473788f1a1adbb43f9516adb39501a76abd1f2c5f29ecc1113668cb31ced179a174a4b12
|
7
|
+
data.tar.gz: d66f57bffaf9c67957e54b12985172411b14979733da809a19aa9c3ddc427b0c58d8c84bca6ed0ffc71060b8c998c448f3a8c6870f0f9c7e578275da6e7b6a3b
|
data/README.md
CHANGED
@@ -62,9 +62,32 @@ verify_ipa_entitlements(
|
|
62
62
|
team_identifier: 'MZ6ZTY3EA7',
|
63
63
|
aps_environment: 'production',
|
64
64
|
other_params: {
|
65
|
-
|
66
|
-
|
67
|
-
|
65
|
+
keychain_access_groups: ['MZ6ZTY3EA7.*'],
|
66
|
+
get_task_allow: false,
|
67
|
+
beta_reports_active: true
|
68
|
+
}
|
69
|
+
)
|
70
|
+
```
|
71
|
+
|
72
|
+
To test application extensions, use the `:extensions` parameter, e.g:
|
73
|
+
|
74
|
+
```bash
|
75
|
+
verify_ipa_entitlements(
|
76
|
+
application_identifier: 'MZ6ZTY3EA7.com.apple.myapp',
|
77
|
+
team_identifier: 'MZ6ZTY3EA7',
|
78
|
+
aps_environment: 'production',
|
79
|
+
application_groups: [
|
80
|
+
'group.com.apple.mygroup'
|
81
|
+
]
|
82
|
+
extensions: {
|
83
|
+
'My Great Extension': {
|
84
|
+
application_identifier: 'MZ6ZTY3EA7.com.apple.myapp.ext',
|
85
|
+
team_identifier: 'MZ6ZTY3EA7',
|
86
|
+
application_groups: [
|
87
|
+
'group.com.apple.mygroup'
|
88
|
+
]
|
89
|
+
}
|
90
|
+
}
|
68
91
|
)
|
69
92
|
```
|
70
93
|
|
@@ -5,42 +5,57 @@ module Fastlane
|
|
5
5
|
class VerifyIpaEntitlementsAction < Action
|
6
6
|
def self.run(params)
|
7
7
|
Dir.mktmpdir do |dir|
|
8
|
-
app_path = Helper::VerifyIpaHelper.app_path(params, dir)
|
8
|
+
app_path = Helper::VerifyIpaHelper.app_path(params[:ipa_path], dir)
|
9
9
|
entitlements = self.read_entitlements(params, app_path)
|
10
10
|
self.verify_entitlements(params, entitlements)
|
11
|
+
self.verify_extensions(params, app_path)
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
14
|
-
def self.read_entitlements(params,
|
15
|
-
profile_path = "#{
|
16
|
-
profile_plist = sh("security cms -D -i #{profile_path}")
|
15
|
+
def self.read_entitlements(params, path)
|
16
|
+
profile_path = "#{path}/embedded.mobileprovision"
|
17
|
+
profile_plist = sh("security cms -D -i '#{profile_path}'")
|
17
18
|
UI.user_error!("Unable to extract profile") unless $? == 0
|
18
19
|
|
19
20
|
profile = Plist.parse_xml(profile_plist)
|
20
21
|
profile['Entitlements']
|
21
22
|
end
|
22
23
|
|
23
|
-
def self.verify_entitlements(params, entitlements)
|
24
|
+
def self.verify_entitlements(params, entitlements, appex_name = nil)
|
24
25
|
if params[:application_identifier]
|
25
|
-
self.verify_param(:application_identifier, params[:application_identifier], entitlements['application-identifier'])
|
26
|
+
self.verify_param(:application_identifier, params[:application_identifier], entitlements['application-identifier'], appex_name)
|
26
27
|
end
|
27
28
|
if params[:team_identifier]
|
28
|
-
self.verify_param(:team_identifier, params[:team_identifier], entitlements['com.apple.developer.team-identifier'])
|
29
|
+
self.verify_param(:team_identifier, params[:team_identifier], entitlements['com.apple.developer.team-identifier'], appex_name)
|
29
30
|
end
|
30
31
|
if params[:aps_environment]
|
31
|
-
self.verify_param(:aps_environment, params[:aps_environment], entitlements['aps-environment'])
|
32
|
+
self.verify_param(:aps_environment, params[:aps_environment], entitlements['aps-environment'], appex_name)
|
33
|
+
end
|
34
|
+
if params[:application_groups]
|
35
|
+
self.verify_param(:application_groups, params[:application_groups], entitlements['com.apple.security.application-groups'], appex_name)
|
32
36
|
end
|
33
37
|
if params[:other_params]
|
34
38
|
params[:other_params].keys.each do |key|
|
35
|
-
self.verify_param(key, params[:other_params][key], entitlements[key.to_s.tr('_', '-')])
|
39
|
+
self.verify_param(key, params[:other_params][key], entitlements[key.to_s.tr('_', '-')], appex_name)
|
36
40
|
end
|
37
41
|
end
|
38
42
|
|
39
43
|
UI.success("Entitlements are verified.")
|
40
44
|
end
|
41
45
|
|
42
|
-
def self.verify_param(param, expected, actual)
|
43
|
-
|
46
|
+
def self.verify_param(param, expected, actual, appex_name)
|
47
|
+
msg_prefix = appex_name ? "[#{appex_name}] " : ""
|
48
|
+
UI.user_error!("#{msg_prefix}Mismatched #{param}. Expected: '#{expected}'; Found: '#{actual}'") unless expected == actual
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.verify_extensions(params, app_path)
|
52
|
+
if params[:extensions]
|
53
|
+
params[:extensions].each do |key, value|
|
54
|
+
appex_path = Helper::VerifyIpaHelper.appex_path(app_path, key)
|
55
|
+
entitlements = self.read_entitlements(params, appex_path)
|
56
|
+
self.verify_entitlements(value, entitlements, appex_path)
|
57
|
+
end
|
58
|
+
end
|
44
59
|
end
|
45
60
|
|
46
61
|
def self.description
|
@@ -69,9 +84,19 @@ module Fastlane
|
|
69
84
|
env_name: 'VERIFY_IPA_APS_ENVIRONMENT',
|
70
85
|
description: 'Key aps-environment in Entitlements',
|
71
86
|
optional: true),
|
87
|
+
FastlaneCore::ConfigItem.new(key: :application_groups,
|
88
|
+
env_name: 'VERIFY_IPA_APPLICATION_GROUPS',
|
89
|
+
description: 'Key com.apple.security.application-groups in Entitlements',
|
90
|
+
optional: true,
|
91
|
+
type: Array),
|
72
92
|
FastlaneCore::ConfigItem.new(key: :other_params,
|
73
93
|
env_name: 'VERIFY_IPA_OTHER_PARAMS',
|
74
94
|
description: 'A hash of entitlement key and expected values',
|
95
|
+
optional: true,
|
96
|
+
type: Hash),
|
97
|
+
FastlaneCore::ConfigItem.new(key: :extensions,
|
98
|
+
env_name: 'VERIFY_IPA_EXTENSIONS',
|
99
|
+
description: 'A hash of entitlement key & values for app extensions found under the PlugIns folder',
|
75
100
|
optional: true,
|
76
101
|
type: Hash)
|
77
102
|
]
|
@@ -3,7 +3,7 @@ module Fastlane
|
|
3
3
|
class VerifyIpaFilesAction < Action
|
4
4
|
def self.run(params)
|
5
5
|
Dir.mktmpdir do |dir|
|
6
|
-
app_path = Helper::VerifyIpaHelper.app_path(params, dir)
|
6
|
+
app_path = Helper::VerifyIpaHelper.app_path(params[:ipa_path], dir)
|
7
7
|
self.verify_files(params, app_path)
|
8
8
|
end
|
9
9
|
end
|
@@ -1,14 +1,20 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Helper
|
3
3
|
class VerifyIpaHelper
|
4
|
-
def self.app_path(
|
5
|
-
ipa_path
|
4
|
+
def self.app_path(ipa_path, tmpdir)
|
5
|
+
ipa_path ||= Actions.lane_context[Fastlane::Actions::SharedValues::IPA_OUTPUT_PATH] || ''
|
6
6
|
UI.user_error!("Unable to find ipa file '#{ipa_path}'.") unless File.exist?(ipa_path)
|
7
7
|
|
8
8
|
ipa_path = File.expand_path(ipa_path)
|
9
|
-
`unzip '#{ipa_path}' -d #{
|
9
|
+
`unzip '#{ipa_path}' -d #{tmpdir}`
|
10
10
|
UI.user_error!("Unable to unzip ipa '#{ipa_path}'") unless $? == 0
|
11
|
-
Dir["#{
|
11
|
+
Dir["#{tmpdir}/Payload/*.app"].first
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.appex_path(app_path, appex_name)
|
15
|
+
appex_path = "#{app_path}/PlugIns/#{appex_name}.appex"
|
16
|
+
UI.user_error!("Unable to find '#{appex_path}'.") unless File.exist?(appex_path)
|
17
|
+
appex_path
|
12
18
|
end
|
13
19
|
end
|
14
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-verify_ipa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derek Yang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: plist
|