match 0.6.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +21 -2
- data/lib/match.rb +1 -0
- data/lib/match/commands_generator.rb +0 -4
- data/lib/match/git_helper.rb +1 -1
- data/lib/match/runner.rb +6 -0
- data/lib/match/setup.rb +1 -1
- data/lib/match/utils.rb +7 -2
- data/lib/match/version.rb +1 -1
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 087266c797f85b986e6053a174598705e80fc126
|
4
|
+
data.tar.gz: 8656cd27778e0aa10eb69666575c0f403b50e2ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f6c119f14cf2dd4b410c3ed0637a174e022e29063644ce62324445f63924bbe09ee906cc4f28ceef39b0bf60c80f33c714cf81408823604fac84ef90cb10f0b
|
7
|
+
data.tar.gz: 3c603250ade06074968158c231b5d4a56e19378f6163f81aa6b6d089a85a2d5ae910ff9241dee85381dc93ee759070edf6d6cb0b9278918ba8a7f06ccd707e6c
|
data/README.md
CHANGED
@@ -38,7 +38,7 @@ match
|
|
38
38
|
|
39
39
|
A new approach to iOS code signing: Share one code signing identity across your development team to simplify your codesigning setup and prevent code signing issues.
|
40
40
|
|
41
|
-
`match` is the implementation of the https://codesigning.guide concept. `match` creates all required certificates & provisioning profiles and stores them in a separate git repository. Every team member with access to the repo can use those credentials for code signing. `match` also automatically repairs broken and expired credentials. It's the easiest way to share signing credentials across teams
|
41
|
+
`match` is the implementation of the https://codesigning.guide concept. `match` creates all required certificates & provisioning profiles and stores them in a separate git repository. Every team member with access to the repo can use those credentials for code signing. `match` also automatically repairs broken and expired credentials. It's the easiest way to share signing credentials across teams
|
42
42
|
|
43
43
|
[More information on how to get started with codesigning](/fastlane/docs/Codesigning)
|
44
44
|
|
@@ -258,6 +258,25 @@ gym
|
|
258
258
|
...
|
259
259
|
```
|
260
260
|
|
261
|
+
##### Registering new devices
|
262
|
+
|
263
|
+
By using `match`, you'll save a lot of time every time you add new device to your Ad Hoc or Development profiles. Use `match` in combination with the [`register_devices`](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Actions.md#register_devices) action.
|
264
|
+
|
265
|
+
```ruby
|
266
|
+
lane :beta do
|
267
|
+
register_devices(devices_file: "./devices.txt")
|
268
|
+
match(type: "adhoc", force_for_new_devices: true)
|
269
|
+
end
|
270
|
+
```
|
271
|
+
|
272
|
+
By using the `force_for_new_devices` parameter, `match` will check if the device count has changed since the last time you ran `match`, and automatically re-generate the provisioning profile if necessary. You can also use `force: true` to re-generate the provisioning profile on each run.
|
273
|
+
|
274
|
+
If you're not using `fastlane`, you can also use the `force_for_new_devices` option from the command line:
|
275
|
+
|
276
|
+
```
|
277
|
+
match adhoc --force_for_new_devices
|
278
|
+
```
|
279
|
+
|
261
280
|
##### Multiple Targets
|
262
281
|
|
263
282
|
If your app has multiple targets (e.g. Today Widget or WatchOS Extension)
|
@@ -360,7 +379,7 @@ What's the worst that could happen for each of the profile types?
|
|
360
379
|
|
361
380
|
##### App Store Profiles
|
362
381
|
|
363
|
-
An App Store profile can't be used for anything as long as it's not re-signed by Apple. The only way to get an app resigned is to submit an app for review
|
382
|
+
An App Store profile can't be used for anything as long as it's not re-signed by Apple. The only way to get an app resigned is to submit an app for review which could take anywhere from 24 hours to a few days (checkout [appreviewtimes.com](http://appreviewtimes.com) for up-to-date expectations). Attackers could only submit an app for review, if they also got access to your iTunes Connect credentials (which are not stored in git, but in your local keychain). Additionally you get an email notification every time a build gets uploaded to cancel the submission even before your app gets into the review stage.
|
364
383
|
|
365
384
|
##### Development and Ad Hoc Profiles
|
366
385
|
|
data/lib/match.rb
CHANGED
@@ -18,6 +18,7 @@ require 'spaceship'
|
|
18
18
|
module Match
|
19
19
|
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|
20
20
|
UI = FastlaneCore::UI
|
21
|
+
ROOT = Pathname.new(File.expand_path('../..', __FILE__))
|
21
22
|
|
22
23
|
def self.environments
|
23
24
|
envs = %w(appstore adhoc development)
|
@@ -14,8 +14,6 @@ module Match
|
|
14
14
|
FastlaneCore::UpdateChecker.show_update_status('match', Match::VERSION)
|
15
15
|
end
|
16
16
|
|
17
|
-
# rubocop:disable Metrics/MethodLength
|
18
|
-
# rubocop:disable Metrics/AbcSize
|
19
17
|
def run
|
20
18
|
program :version, Match::VERSION
|
21
19
|
program :description, Match::DESCRIPTION
|
@@ -120,7 +118,5 @@ module Match
|
|
120
118
|
|
121
119
|
run!
|
122
120
|
end
|
123
|
-
# rubocop:enable Metrics/MethodLength
|
124
|
-
# rubocop:enable Metrics/AbcSize
|
125
121
|
end
|
126
122
|
end
|
data/lib/match/git_helper.rb
CHANGED
@@ -122,7 +122,7 @@ module Match
|
|
122
122
|
|
123
123
|
# Copies the README.md into the git repo
|
124
124
|
def self.copy_readme(directory)
|
125
|
-
template = File.read("#{
|
125
|
+
template = File.read("#{Match::ROOT}/lib/assets/READMETemplate.md")
|
126
126
|
File.write(File.join(directory, "README.md"), template)
|
127
127
|
end
|
128
128
|
end
|
data/lib/match/runner.rb
CHANGED
@@ -31,6 +31,12 @@ module Match
|
|
31
31
|
TablePrinter.print_summary(params, uuid)
|
32
32
|
|
33
33
|
UI.success "All required keys, certificates and provisioning profiles are installed 🙌".green
|
34
|
+
rescue Spaceship::Client::UnexpectedResponse, Spaceship::Client::InvalidUserCredentialsError, Spaceship::Client::NoUserCredentialsError => ex
|
35
|
+
UI.error("An error occured while verifying your certificates and profiles with the Apple Developer Portal.")
|
36
|
+
UI.error("If you already have your certificates stored in git, you can run `match` in readonly mode")
|
37
|
+
UI.error("to just install the certificates and profiles without accessing the Dev Portal.")
|
38
|
+
UI.error("To do so, just pass `readonly: true` to your match call.")
|
39
|
+
raise ex
|
34
40
|
ensure
|
35
41
|
GitHelper.clear_changes
|
36
42
|
end
|
data/lib/match/setup.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Match
|
2
2
|
class Setup
|
3
3
|
def run(path)
|
4
|
-
template = File.read("#{
|
4
|
+
template = File.read("#{Match::ROOT}/lib/assets/MatchfileTemplate")
|
5
5
|
|
6
6
|
UI.important "Please create a new, private git repository"
|
7
7
|
UI.important "to store the certificates and profiles there"
|
data/lib/match/utils.rb
CHANGED
@@ -7,9 +7,14 @@ module Match
|
|
7
7
|
#
|
8
8
|
# So, if the passed value can't be resolved as a file in Library/Keychains, just use it as-is
|
9
9
|
# as the keychain path.
|
10
|
-
|
10
|
+
#
|
11
|
+
# We need to expand each path because File.exist? won't handle directories including ~ properly
|
12
|
+
keychain_paths = [
|
13
|
+
File.join(Dir.home, 'Library', 'Keychains', keychain),
|
14
|
+
keychain
|
15
|
+
].map { |path| File.expand_path(path) }
|
11
16
|
|
12
|
-
keychain_path = keychain_paths.
|
17
|
+
keychain_path = keychain_paths.find { |path| File.exist?(path) }
|
13
18
|
|
14
19
|
UI.user_error!("Could not locate the provided keychain. Tried:\n\t#{keychain_paths.join("\n\t")}") unless keychain_path
|
15
20
|
|
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.6.
|
4
|
+
version: 0.6.3
|
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-08-
|
11
|
+
date: 2016-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: security
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.50.3
|
34
34
|
- - "<"
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: 1.0.0
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
requirements:
|
41
41
|
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.
|
43
|
+
version: 0.50.3
|
44
44
|
- - "<"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: 1.0.0
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.
|
53
|
+
version: 0.16.0
|
54
54
|
- - "<"
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: 1.0.0
|
@@ -60,7 +60,7 @@ dependencies:
|
|
60
60
|
requirements:
|
61
61
|
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 0.
|
63
|
+
version: 0.16.0
|
64
64
|
- - "<"
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: 1.0.0
|
@@ -70,7 +70,7 @@ dependencies:
|
|
70
70
|
requirements:
|
71
71
|
- - ">="
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version: 0.
|
73
|
+
version: 0.31.10
|
74
74
|
- - "<"
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: 1.0.0
|
@@ -80,7 +80,7 @@ dependencies:
|
|
80
80
|
requirements:
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 0.
|
83
|
+
version: 0.31.10
|
84
84
|
- - "<"
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: 1.0.0
|
@@ -90,7 +90,7 @@ dependencies:
|
|
90
90
|
requirements:
|
91
91
|
- - ">="
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version: 1.
|
93
|
+
version: 1.9.0
|
94
94
|
- - "<"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 2.0.0
|
@@ -100,7 +100,7 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
103
|
+
version: 1.9.0
|
104
104
|
- - "<"
|
105
105
|
- !ruby/object:Gem::Version
|
106
106
|
version: 2.0.0
|
@@ -110,7 +110,7 @@ dependencies:
|
|
110
110
|
requirements:
|
111
111
|
- - ">="
|
112
112
|
- !ruby/object:Gem::Version
|
113
|
-
version: 1.
|
113
|
+
version: 1.4.1
|
114
114
|
- - "<"
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: 2.0.0
|
@@ -120,7 +120,7 @@ dependencies:
|
|
120
120
|
requirements:
|
121
121
|
- - ">="
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: 1.
|
123
|
+
version: 1.4.1
|
124
124
|
- - "<"
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: 2.0.0
|
@@ -311,7 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
311
311
|
version: '0'
|
312
312
|
requirements: []
|
313
313
|
rubyforge_project:
|
314
|
-
rubygems_version: 2.
|
314
|
+
rubygems_version: 2.5.1
|
315
315
|
signing_key:
|
316
316
|
specification_version: 4
|
317
317
|
summary: Easily sync your certificates and profiles across your team using git
|