match 0.9.0 → 0.10.0
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 +4 -4
- data/lib/match.rb +19 -0
- data/lib/match/generator.rb +1 -1
- data/lib/match/nuke.rb +1 -1
- data/lib/match/runner.rb +27 -11
- data/lib/match/spaceship_ensure.rb +18 -6
- data/lib/match/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: ca106e53fcfa3a6afb2796907c6375bbeb4712ea
|
4
|
+
data.tar.gz: b2dfe54acc43db599594d53e142a1a53525f33be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4fe6fc7d7b53ca65690898254cefe1c3119ed3525c8a8ec26c01c39595fe601742312dce8a8938f6f0c23da684a1d15078c05d98da75b4801252d31946c85027
|
7
|
+
data.tar.gz: 14552497d001e8d507c5fede87a21afdee863e7afa930429a2c224b0459c7513338f37536594f9c5fff7b603af30bb448b7d41dd4e304fc99034681af61309e8
|
data/lib/match.rb
CHANGED
@@ -26,7 +26,26 @@ module Match
|
|
26
26
|
return envs
|
27
27
|
end
|
28
28
|
|
29
|
+
# @return [Boolean] returns true if the unsupported enterprise mode should be enabled
|
29
30
|
def self.enterprise?
|
30
31
|
ENV["MATCH_FORCE_ENTERPRISE"]
|
31
32
|
end
|
33
|
+
|
34
|
+
# @return [Boolean] returns true if match should interpret the given [certificate|profile] type as an enterprise one
|
35
|
+
def self.type_is_enterprise?(type)
|
36
|
+
Match.enterprise? && type != "development"
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.profile_type_sym(type)
|
40
|
+
return :enterprise if self.type_is_enterprise? type
|
41
|
+
return :adhoc if type == "adhoc"
|
42
|
+
return :appstore if type == "appstore"
|
43
|
+
return :development
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.cert_type_sym(type)
|
47
|
+
return :enterprise if self.type_is_enterprise? type
|
48
|
+
return :development if type == "development"
|
49
|
+
return :distribution
|
50
|
+
end
|
32
51
|
end
|
data/lib/match/generator.rb
CHANGED
@@ -36,7 +36,7 @@ module Match
|
|
36
36
|
def self.generate_provisioning_profile(params: nil, prov_type: nil, certificate_id: nil, app_identifier: nil)
|
37
37
|
require 'sigh'
|
38
38
|
|
39
|
-
prov_type =
|
39
|
+
prov_type = Match.profile_type_sym(params[:type])
|
40
40
|
|
41
41
|
profile_name = ["match", profile_type_name(prov_type), app_identifier].join(" ")
|
42
42
|
|
data/lib/match/nuke.rb
CHANGED
@@ -47,7 +47,7 @@ module Match
|
|
47
47
|
# Collect all the certs/profiles
|
48
48
|
def prepare_list
|
49
49
|
UI.message "Fetching certificates and profiles..."
|
50
|
-
cert_type = type
|
50
|
+
cert_type = Match.cert_type_sym(type)
|
51
51
|
|
52
52
|
prov_types = [:development]
|
53
53
|
prov_types = [:appstore, :adhoc] if cert_type == :distribution
|
data/lib/match/runner.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Match
|
2
2
|
class Runner
|
3
3
|
attr_accessor :changes_to_commit
|
4
|
+
attr_accessor :spaceship
|
4
5
|
|
5
6
|
def run(params)
|
6
7
|
FastlaneCore::PrintTable.print_values(config: params,
|
@@ -10,7 +11,7 @@ module Match
|
|
10
11
|
UI.error("Enterprise profiles are currently not officially supported in _match_, you might run into issues") if Match.enterprise?
|
11
12
|
|
12
13
|
params[:workspace] = GitHelper.clone(params[:git_url], params[:shallow_clone], skip_docs: params[:skip_docs], branch: params[:git_branch])
|
13
|
-
spaceship = SpaceshipEnsure.new(params[:username]) unless params[:readonly]
|
14
|
+
self.spaceship = SpaceshipEnsure.new(params[:username]) unless params[:readonly]
|
14
15
|
|
15
16
|
if params[:app_identifier].kind_of?(Array)
|
16
17
|
app_identifiers = params[:app_identifier]
|
@@ -31,10 +32,11 @@ module Match
|
|
31
32
|
|
32
33
|
# Provisioning Profiles
|
33
34
|
app_identifiers.each do |app_identifier|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
loop do
|
36
|
+
break if fetch_provisioning_profile(params: params,
|
37
|
+
certificate_id: cert_id,
|
38
|
+
app_identifier: app_identifier)
|
39
|
+
end
|
38
40
|
end
|
39
41
|
|
40
42
|
# Done
|
@@ -60,9 +62,7 @@ module Match
|
|
60
62
|
end
|
61
63
|
|
62
64
|
def fetch_certificate(params: nil)
|
63
|
-
cert_type = :
|
64
|
-
cert_type = :development if params[:type] == "development"
|
65
|
-
cert_type = :enterprise if Match.enterprise? && params[:type] == "enterprise"
|
65
|
+
cert_type = Match.cert_type_sym(params[:type])
|
66
66
|
|
67
67
|
certs = Dir[File.join(params[:workspace], "certs", cert_type.to_s, "*.cer")]
|
68
68
|
keys = Dir[File.join(params[:workspace], "certs", cert_type.to_s, "*.p12")]
|
@@ -92,10 +92,11 @@ module Match
|
|
92
92
|
|
93
93
|
# @return [String] The UUID of the provisioning profile so we can verify it with the Apple Developer Portal
|
94
94
|
def fetch_provisioning_profile(params: nil, certificate_id: nil, app_identifier: nil)
|
95
|
-
prov_type = params[:type]
|
95
|
+
prov_type = Match.profile_type_sym(params[:type])
|
96
96
|
|
97
97
|
profile_name = [Match::Generator.profile_type_name(prov_type), app_identifier].join("_").gsub("*", '\*') # this is important, as it shouldn't be a wildcard
|
98
|
-
|
98
|
+
base_dir = File.join(params[:workspace], "profiles", prov_type.to_s)
|
99
|
+
profiles = Dir[File.join(base_dir, "#{profile_name}.mobileprovision")]
|
99
100
|
|
100
101
|
# Install the provisioning profiles
|
101
102
|
profile = profiles.last
|
@@ -105,7 +106,15 @@ module Match
|
|
105
106
|
end
|
106
107
|
|
107
108
|
if profile.nil? or params[:force]
|
108
|
-
|
109
|
+
if params[:readonly]
|
110
|
+
all_profiles = Dir.entries(base_dir).reject { |f| f.start_with? "." }
|
111
|
+
UI.error "No matching provisioning profiles found for '#{profile_name}'"
|
112
|
+
UI.error "A new one cannot be created because you enabled `readonly`"
|
113
|
+
UI.error "Provisioning profiles in your repo for type `#{prov_type}`:"
|
114
|
+
all_profiles.each { |p| UI.error "- '#{p}'" }
|
115
|
+
UI.error "If you are certain that a profile should exist, double-check the recent changes to your match repository"
|
116
|
+
UI.user_error! "No matching provisioning profiles found and can not create a new one because you enabled `readonly`. Check the output above for more information."
|
117
|
+
end
|
109
118
|
profile = Generator.generate_provisioning_profile(params: params,
|
110
119
|
prov_type: prov_type,
|
111
120
|
certificate_id: certificate_id,
|
@@ -118,6 +127,13 @@ module Match
|
|
118
127
|
parsed = FastlaneCore::ProvisioningProfile.parse(profile)
|
119
128
|
uuid = parsed["UUID"]
|
120
129
|
|
130
|
+
if spaceship && !spaceship.profile_exists(username: params[:username], uuid: uuid)
|
131
|
+
# This profile is invalid, let's remove the local file and generate a new one
|
132
|
+
File.delete(profile)
|
133
|
+
self.changes_to_commit = true
|
134
|
+
return nil
|
135
|
+
end
|
136
|
+
|
121
137
|
Utils.fill_environment(Utils.environment_variable_name(app_identifier: app_identifier,
|
122
138
|
type: prov_type),
|
123
139
|
uuid)
|
@@ -54,13 +54,25 @@ module Match
|
|
54
54
|
found = Spaceship.provisioning_profile.all.find do |profile|
|
55
55
|
profile.uuid == uuid
|
56
56
|
end
|
57
|
-
return if found
|
58
57
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
58
|
+
unless found
|
59
|
+
UI.error("Provisioning profile '#{uuid}' is not available on the Developer Portal")
|
60
|
+
UI.error("for the user #{username}")
|
61
|
+
UI.error("Make sure to use the same user and team every time you run 'match' for this")
|
62
|
+
UI.error("Git repository. This might be caused by deleting the provisioning profile on the Dev Portal")
|
63
|
+
UI.user_error!("To reset the provisioning profiles of your Apple account, you can use the `match nuke` feature, more information on https://github.com/fastlane/fastlane/tree/master/match")
|
64
|
+
end
|
65
|
+
|
66
|
+
if found.valid?
|
67
|
+
return found
|
68
|
+
else
|
69
|
+
UI.important("'#{found.name}' is available on the Developer Portal, however it's 'Invalid', fixing this now for you 🔨")
|
70
|
+
# it's easier to just create a new one, than to repair an existing profile
|
71
|
+
# it has the same effects anyway, including a new UUID of the provisioning profile
|
72
|
+
found.delete!
|
73
|
+
# return nil to re-download the new profile in runner.rb
|
74
|
+
return nil
|
75
|
+
end
|
64
76
|
end
|
65
77
|
end
|
66
78
|
end
|
data/lib/match/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: match
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: security
|