match 0.11.0 → 0.11.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
  SHA1:
3
- metadata.gz: 4abe678f917b35157991a1fd570fa49b2c9bb949
4
- data.tar.gz: a70c2b38bea8f4031c134fa8c54ed16d89635e56
3
+ metadata.gz: d2a8fdcf766e8137661f1f80021efcbfe0d0b732
4
+ data.tar.gz: 4e7de3efa9546a4b011ab42c4309115233a06998
5
5
  SHA512:
6
- metadata.gz: a4d3d5dc5457e53ddf636e6b14a728c06ce2e8e353a04b5528de13b1d3f37ab0e0aeb9faaed12a7c8d958bb0c6bb2a91404f606f248758506f3800a8d148e5d5
7
- data.tar.gz: 74bfb495c09c40a8ea81fd173493a68dc9664f7fecf700d5bf4cd81511a73626e4329660f96bae2cc23d41d9e120c1b36ec935d39e7febf9cfe949d5d9b6f0f3
6
+ metadata.gz: d1d23e83c8e0a137e33a54417a3354c34e58d8a8dc542b5a506911baec5457d45b965e827e105f7d1746ead73210428ed322217fa069fcc06a3d82cb400682b2
7
+ data.tar.gz: b4eab30e467fe8fc5574f754cf5816b5aeedfe59ef1f433864ea274e6f2b976fa75c4393a38cb99fa826b325e2a240da7dd5f838a900753b2a79f0f73d529caa
data/README.md CHANGED
@@ -256,7 +256,7 @@ gym
256
256
 
257
257
  ##### Registering new devices
258
258
 
259
- 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.
259
+ 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://docs.fastlane.tools/actions#register_devices) action.
260
260
 
261
261
  ```ruby
262
262
  lane :beta do
@@ -28,7 +28,13 @@ module Match
28
28
 
29
29
  # @return [Boolean] returns true if the unsupported enterprise mode should be enabled
30
30
  def self.enterprise?
31
- ENV["MATCH_FORCE_ENTERPRISE"]
31
+ force_enterprise = ENV["MATCH_FORCE_ENTERPRISE"]
32
+
33
+ return false if (force_enterprise.kind_of?(String) || force_enterprise.kind_of?(Numeric)) &&
34
+ (force_enterprise.to_s == "0")
35
+ return false if force_enterprise.kind_of?(String) &&
36
+ (force_enterprise == "" || force_enterprise.casecmp("false") == 0 || force_enterprise.casecmp("no") == 0)
37
+ return !!force_enterprise
32
38
  end
33
39
 
34
40
  # @return [Boolean] returns true if match should interpret the given [certificate|profile] type as an enterprise one
@@ -10,7 +10,8 @@ module Match
10
10
  output_path: output_path,
11
11
  force: true, # we don't need a certificate without its private key, we only care about a new certificate
12
12
  username: params[:username],
13
- team_id: params[:team_id]
13
+ team_id: params[:team_id],
14
+ keychain_path: FastlaneCore::Helper.keychain_path(params[:keychain_name])
14
15
  })
15
16
 
16
17
  Cert.config = arguments
@@ -47,6 +47,7 @@ module Match
47
47
  FastlaneCore::ConfigItem.new(key: :keychain_password,
48
48
  short_option: "-p",
49
49
  env_name: "MATCH_KEYCHAIN_PASSWORD",
50
+ sensitive: true,
50
51
  description: "This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password",
51
52
  optional: true),
52
53
  FastlaneCore::ConfigItem.new(key: :readonly,
@@ -85,6 +85,10 @@ module Match
85
85
  # Import the private key
86
86
  # there seems to be no good way to check if it's already installed - so just install it
87
87
  Utils.import(keys.last, params[:keychain_name], password: params[:keychain_password])
88
+
89
+ # Get and print info of certificate
90
+ info = Utils.get_cert_info(cert_path)
91
+ TablePrinter.print_certificate_info(cert_info: info)
88
92
  end
89
93
 
90
94
  return File.basename(cert_path).gsub(".cer", "") # Certificate ID
@@ -1,5 +1,19 @@
1
1
  module Match
2
2
  class TablePrinter
3
+ # logs public key's name, user, organisation, country, availability dates
4
+ def self.print_certificate_info(cert_info: nil)
5
+ params = {
6
+ rows: cert_info,
7
+ title: "Installed Certificate".green
8
+ }
9
+
10
+ puts ""
11
+ puts Terminal::Table.new(params)
12
+ puts ""
13
+ rescue => ex
14
+ UI.error(ex)
15
+ end
16
+
3
17
  def self.print_summary(app_identifier: nil, type: nil)
4
18
  rows = []
5
19
 
@@ -1,29 +1,7 @@
1
1
  module Match
2
2
  class Utils
3
3
  def self.import(item_path, keychain, password: "")
4
- # Existing code expects that a keychain name will be expanded into a default path to Libary/Keychains
5
- # in the user's home directory. However, this will not allow the user to pass an absolute path
6
- # for the keychain value
7
- #
8
- # So, if the passed value can't be resolved as a file in Library/Keychains, just use it as-is
9
- # as the keychain path.
10
- #
11
- # We need to expand each path because File.exist? won't handle directories including ~ properly
12
- #
13
- # We also try to append `-db` at the end of the file path, as with Sierra the default Keychain name
14
- # has changed for some users: https://github.com/fastlane/fastlane/issues/5649
15
- #
16
- keychain_paths = [
17
- File.join(Dir.home, 'Library', 'Keychains', keychain),
18
- File.join(Dir.home, 'Library', 'Keychains', "#{keychain}-db"),
19
- keychain,
20
- "#{keychain}-db"
21
- ].map { |path| File.expand_path(path) }
22
-
23
- keychain_path = keychain_paths.find { |path| File.exist?(path) }
24
-
25
- UI.user_error!("Could not locate the provided keychain. Tried:\n\t#{keychain_paths.join("\n\t")}") unless keychain_path
26
-
4
+ keychain_path = FastlaneCore::Helper.keychain_path(keychain)
27
5
  FastlaneCore::KeychainImporter.import_file(item_path, keychain_path, keychain_password: password, output: $verbose)
28
6
  end
29
7
 
@@ -45,6 +23,35 @@ module Match
45
23
  (base_environment_variable_name(app_identifier: app_identifier, type: type) + ["profile-name"]).join("_")
46
24
  end
47
25
 
26
+ def self.get_cert_info(cer_certificate_path)
27
+ command = "openssl x509 -inform der -in #{cer_certificate_path.shellescape} -subject -dates -noout"
28
+ command << " &" # start in separate process
29
+ output = Helper.backticks(command, print: $verbose)
30
+
31
+ # openssl output:
32
+ # subject= /UID={User ID}/CN={Certificate Name}/OU={Certificate User}/O={Organisation}/C={Country}\n
33
+ # notBefore={Start datetime}\n
34
+ # notAfter={End datetime}
35
+ cert_info = output.gsub(/\s*subject=\s*/, "").tr("/", "\n")
36
+ out_array = cert_info.split("\n")
37
+ openssl_keys_to_readable_keys = {
38
+ 'UID' => 'User ID',
39
+ 'CN' => 'Common Name',
40
+ 'OU' => 'Organisation Unit',
41
+ 'O' => 'Organisation',
42
+ 'C' => 'Country',
43
+ 'notBefore' => 'Start Datetime',
44
+ 'notAfter' => 'End Datetime'
45
+ }
46
+
47
+ return out_array.map { |x| x.split(/=+/) if x.include? "=" }
48
+ .compact
49
+ .map { |k, v| [openssl_keys_to_readable_keys.fetch(k, k), v] }
50
+ rescue => ex
51
+ UI.error(ex)
52
+ return {}
53
+ end
54
+
48
55
  def self.base_environment_variable_name(app_identifier: nil, type: nil)
49
56
  ["sigh", app_identifier, type]
50
57
  end
@@ -1,4 +1,4 @@
1
1
  module Match
2
- VERSION = "0.11.0"
2
+ VERSION = "0.11.1"
3
3
  DESCRIPTION = "Easily sync your certificates and profiles across your team using git"
4
4
  end
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.11.0
4
+ version: 0.11.1
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-11-10 00:00:00.000000000 Z
11
+ date: 2016-12-05 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.55.0
33
+ version: 0.58.0
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.55.0
43
+ version: 0.58.0
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
46
  version: 1.0.0
@@ -70,7 +70,7 @@ dependencies:
70
70
  requirements:
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
- version: 0.37.0
73
+ version: 0.38.5
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.37.0
83
+ version: 0.38.5
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.11.2
93
+ version: 1.12.1
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.11.2
103
+ version: 1.12.1
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.4.3
113
+ version: 1.4.4
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.4.3
123
+ version: 1.4.4
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.5.1
314
+ rubygems_version: 2.6.6
315
315
  signing_key:
316
316
  specification_version: 4
317
317
  summary: Easily sync your certificates and profiles across your team using git