deploygate 0.8.0 → 0.8.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
  SHA256:
3
- metadata.gz: 240a15ab59a4c7bbf4a9eaddea45753f1e0c43b043d7dd13da404567034e8b97
4
- data.tar.gz: f4e49f23e2e26a96c26d44e6cc499260494f6540b13e4cebd9a108b0e93e1e79
3
+ metadata.gz: 8cd91c1e3ea9e8f1bb159e257e3bc6f3eeb557b89c654caabb8aea817d1470e7
4
+ data.tar.gz: afc969266c279b32687df44fa78265ca843bb210b9e457195296abdc0c489d0e
5
5
  SHA512:
6
- metadata.gz: 74c6ec9d1a2fc12a27f722a336e5e2438481644d2c4eec1740001c07ede7c1733739a51bebf0bec034a3a7e2aca88ecd2e2665c28fcca277a363af0e646086ba
7
- data.tar.gz: ebbd48822b79e23fd0098377fa09254f5cd46a3244f08c817a942db381cc2080434f0e77c403caae9875ce1f59c0b27b7631cd5dbed7ac28d4720840e1420121
6
+ metadata.gz: bf82535795d7295dfdc325ca359b950ce599453e6927a02c02430a5a95d45fdeddd3ac4d67ab0626b1fc9f8e71e4bfbfdd1050b2b99bc75f301aed0a6f029859
7
+ data.tar.gz: c0e6d977d35e49acd25e4ee4cec35c6925535e4968964f172a0bff1bc7974b27fc834690a3d9dbd7ed0b6748ee8a95d75d64a9e2189c43369e9efc7625695645
@@ -20,5 +20,6 @@ deploy:
20
20
  on:
21
21
  tags: true
22
22
  repo: DeployGate/deploygate-cli
23
+ rvm: 2.4
23
24
  after_deploy:
24
25
  - 'curl -X POST --data-urlencode "payload={\"text\": \"Released a deploygate gem in <https://rubygems.org/gems/deploygate/|RubyGems>\"}" $SLACK_URL'
@@ -142,16 +142,16 @@ en:
142
142
  choice: '%{team_name} %{team_id}'
143
143
  check_local_certificates:
144
144
  not_local_install_certificate:
145
- error_message: 'Error: No applicable iPhone Distribution certificate found on your Mac.'
145
+ error_message: 'Error: No applicable iPhone Distribution or Apple Distribution certificate found on your Mac.'
146
146
  note: |
147
- No "iPhone Distribution" certificate and/or corresponding private key installed locally.
147
+ No "iPhone Distribution" or "Apple Distribution" certificate and/or corresponding private key installed locally.
148
148
  To sign your application code, make sure you have installed them and available in your Keychain.
149
149
 
150
150
  See also: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html
151
151
  conflict_certificate:
152
152
  error_message: 'Error: Too many certificates found.'
153
153
  note: |
154
- You have more than one "iPhone Distribution" certificate installed on your Mac.
154
+ You have more than one "iPhone Distribution" or "Apple Distribution" certificate installed on your Mac.
155
155
  Please remove other unnecessary certificates from your Keychain.
156
156
  clean_provisioning_profiles:
157
157
  start: 'Cleaning local Provisioning Profiles...'
@@ -171,5 +171,5 @@ en:
171
171
  Note: Your password will be stored to your Keychain and never be sent to DeployGate.
172
172
  email: 'Email: '
173
173
  provisioning_profile:
174
- not_installed_certificate_error: 'No iPhone Distribution Certificate associated with private key was found in local Keychain'
174
+ not_installed_certificate_error: 'No iPhone Distribution or Apple Distribution Certificate associated with private key was found in local Keychain'
175
175
  not_exist_uuid_provisioning_profile_error: 'No provisioning profile found for the specified UUID (%{uuid})'
@@ -1,3 +1,3 @@
1
1
  module DeployGate
2
- VERSION = '0.8.0'
2
+ VERSION = '0.8.1'
3
3
  end
@@ -53,7 +53,7 @@ module DeployGate
53
53
  identity
54
54
  end
55
55
 
56
- # Support Xcode7 more
56
+ # TODO: Need to support UDID additions for watchOS and App Extension
57
57
  # @return [String]
58
58
  def target_bundle_identifier
59
59
  bundle_identifier = nil
@@ -96,7 +96,17 @@ module DeployGate
96
96
 
97
97
  Xcodeproj::Project.open(@xcodeproj).targets.each do |target|
98
98
  target.build_configuration_list.build_configurations.each do |build_configuration|
99
- next if build_configuration.name != specified_configuration
99
+ # Used the following code as an example
100
+ # https://github.com/fastlane/fastlane/blob/2.148.1/gym/lib/gym/code_signing_mapping.rb#L138
101
+ current = build_configuration.build_settings
102
+ next if gym.test_target?(current)
103
+ sdk_root = build_configuration.resolve_build_setting("SDKROOT", target)
104
+ next unless gym.same_platform?(sdk_root)
105
+ next unless specified_configuration == build_configuration.name
106
+
107
+ # If SKIP_INSTALL is true, it is an app extension or watch app
108
+ next if current["SKIP_INSTALL"]
109
+
100
110
  block.call(build_configuration, target)
101
111
  end
102
112
  end
@@ -80,7 +80,7 @@ module DeployGate
80
80
  certificates = installed_certificates()
81
81
  ids = []
82
82
  certificates.each do |current|
83
- next unless current.match(/iPhone Distribution:/)
83
+ next unless current.match(/iPhone Distribution:/) || current.match(/Apple Distribution:/)
84
84
  begin
85
85
  (ids << current.match(/.*\) (.*) \".*/)[1])
86
86
  rescue
@@ -92,12 +92,12 @@ module DeployGate
92
92
  end
93
93
 
94
94
  # @return [Array]
95
- def installed_distribution_conflicting_certificates
95
+ def installed_distribution_conflicting_certificates_by(distribution_name)
96
96
  certificates = installed_certificates()
97
97
  names = []
98
98
  certificates.each do |current|
99
99
  begin
100
- names << current.match(/(iPhone Distribution:.*)/)[1]
100
+ names << current.match(/(#{distribution_name}:.*)/)[1]
101
101
  rescue
102
102
  end
103
103
  end
@@ -106,7 +106,7 @@ module DeployGate
106
106
  conflicting_certificates = []
107
107
  certificates.each do |current|
108
108
  begin
109
- name = current.match(/(iPhone Distribution:.*)/)[1]
109
+ name = current.match(/(#{distribution_name}:.*)/)[1]
110
110
  next unless conflicting_names.include?(name)
111
111
  conflicting_certificates << current
112
112
  rescue
@@ -255,12 +255,16 @@ module DeployGate
255
255
  exit
256
256
  end
257
257
 
258
- conflicting_certificates = installed_distribution_conflicting_certificates
259
- if conflicting_certificates.count > 0
258
+ iphone_conflicting_certificates = installed_distribution_conflicting_certificates_by('iPhone Distribution')
259
+ apple_conflicting_certificates = installed_distribution_conflicting_certificates_by('Apple Distribution')
260
+ if iphone_conflicting_certificates.count > 0 || apple_conflicting_certificates.count > 0
260
261
  puts HighLine.color(I18n.t('xcode.export.check_local_certificates.conflict_certificate.error_message'), HighLine::RED)
261
262
  puts ''
262
263
  puts I18n.t('xcode.export.check_local_certificates.conflict_certificate.note')
263
- conflicting_certificates.each do |certificate|
264
+ iphone_conflicting_certificates.each do |certificate|
265
+ puts certificate
266
+ end
267
+ apple_conflicting_certificates.each do |certificate|
264
268
  puts certificate
265
269
  end
266
270
  puts ""
@@ -35,16 +35,22 @@ module DeployGate
35
35
 
36
36
  # @return [Array]
37
37
  def all_create
38
- if @member_center.adhoc?
39
- prod_certs = @member_center.launcher.certificate.production.all
40
- else
41
- prod_certs = @member_center.launcher.certificate.all.reject{|cert| cert.class != Spaceship::Portal::Certificate::InHouse}
42
- end
38
+ prod_certs = if @member_center.adhoc?
39
+ @member_center.launcher.certificate.all.select{|cert|
40
+ cert.class == Spaceship::Portal::Certificate::Production ||
41
+ cert.class == Spaceship::Portal::Certificate::AppleDistribution
42
+ }
43
+ else
44
+ @member_center.launcher.certificate.all.select{|cert|
45
+ cert.class == Spaceship::Portal::Certificate::InHouse
46
+ }
47
+ end
43
48
 
44
49
  # check local install certificate
45
50
  FileUtils.mkdir_p(CERTIFICATE_OUTPUT_PATH)
46
51
  distribution_cert_ids = []
47
52
  prod_certs.each do |cert|
53
+ next if cert.expires < Time.now
48
54
  path = File.join(CERTIFICATE_OUTPUT_PATH, "#{cert.id}.cer")
49
55
  raw_data = cert.download_raw
50
56
  File.write(path, raw_data)
@@ -61,6 +61,7 @@ describe DeployGate::Xcode::Export do
61
61
  before do
62
62
  @distribution_certificate_id = 'distribution_certificate_id'
63
63
  @distribution_certificate = " 1) #{@distribution_certificate_id} \"iPhone Distribution: DeployGate Inc.\""
64
+ @apple_distribution_certificate = " 1) #{@distribution_certificate_id} \"Apple Distribution: DeployGate Inc.\""
64
65
  @not_distribution_certificate = " 1) xxxxxxxxxxxxxx \"iPhone Developer: DeployGate Inc.\""
65
66
  end
66
67
  it "not installed distribution certificate" do
@@ -74,23 +75,44 @@ describe DeployGate::Xcode::Export do
74
75
  ids = DeployGate::Xcode::Export.installed_distribution_certificate_ids
75
76
  expect(ids).to eql([@distribution_certificate_id])
76
77
  end
78
+
79
+ it "installed apple distribution certificate" do
80
+ allow(DeployGate::Xcode::Export).to receive(:installed_certificates).and_return([@apple_distribution_certificate, @not_distribution_certificate])
81
+
82
+ ids = DeployGate::Xcode::Export.installed_distribution_certificate_ids
83
+ expect(ids).to eql([@distribution_certificate_id])
84
+ end
77
85
  end
78
86
 
79
- describe "#installed_distribution_conflicting_certificates" do
87
+ describe "#installed_distribution_conflicting_certificates_by" do
80
88
  before do
81
89
  @distribution_certificate = " 1) xxxxxxxxxx \"iPhone Distribution: DeployGate Inc.\""
82
90
  @distribution_certificate2 = " 2) yyyyyyyyyyyy \"iPhone Distribution: DeployGate Inc.\""
83
91
  @distribution_certificate3 = " 2) yyyyyyyyyyyy \"iPhone Distribution: DeployGate Inc2.\""
92
+
93
+ @apple_distribution_certificate = " 1) xxxxxxxxxxx \"Apple Distribution: DeployGate Inc.\""
94
+ @apple_distribution_certificate2 = " 2) yyyyyyyyyyyy \"Apple Distribution: DeployGate Inc.\""
95
+ @apple_distribution_certificate3 = " 2) yyyyyyyyyyyy \"Apple Distribution: DeployGate Inc2.\""
84
96
  end
85
97
 
86
98
  it "conflicting" do
87
99
  allow(DeployGate::Xcode::Export).to receive(:installed_certificates).and_return([@distribution_certificate, @distribution_certificate2])
88
- expect(DeployGate::Xcode::Export.installed_distribution_conflicting_certificates.count).to eql 2
100
+ expect(DeployGate::Xcode::Export.installed_distribution_conflicting_certificates_by('iPhone Distribution').count).to eql 2
101
+ end
102
+
103
+ it "conflicting by apple" do
104
+ allow(DeployGate::Xcode::Export).to receive(:installed_certificates).and_return([@apple_distribution_certificate, @apple_distribution_certificate2])
105
+ expect(DeployGate::Xcode::Export.installed_distribution_conflicting_certificates_by('Apple Distribution').count).to eql 2
89
106
  end
90
107
 
91
108
  it "not conflicting" do
92
109
  allow(DeployGate::Xcode::Export).to receive(:installed_certificates).and_return([@distribution_certificate, @distribution_certificate3])
93
- expect(DeployGate::Xcode::Export.installed_distribution_conflicting_certificates.count).to eql 0
110
+ expect(DeployGate::Xcode::Export.installed_distribution_conflicting_certificates_by('iPhone Distribution').count).to eql 0
111
+ end
112
+
113
+ it "not conflicting by apple" do
114
+ allow(DeployGate::Xcode::Export).to receive(:installed_certificates).and_return([@apple_distribution_certificate, @apple_distribution_certificate3])
115
+ expect(DeployGate::Xcode::Export.installed_distribution_conflicting_certificates_by('Apple Distribution').count).to eql 0
94
116
  end
95
117
  end
96
118
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deploygate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - deploygate
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-21 00:00:00.000000000 Z
11
+ date: 2020-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -424,8 +424,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
424
424
  - !ruby/object:Gem::Version
425
425
  version: '0'
426
426
  requirements: []
427
- rubyforge_project:
428
- rubygems_version: 2.7.7
427
+ rubygems_version: 3.0.8
429
428
  signing_key:
430
429
  specification_version: 4
431
430
  summary: A command-line interface for DeployGate