deploygate 0.8.0 → 0.8.4

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: a067b187ce090f469740902b25df05047db95908131057a995481c4a023b11bd
4
+ data.tar.gz: 8d67c1abb0a90436120bdfd45e0831b9002a7b2089c46a3d42cd3ac7d985143c
5
5
  SHA512:
6
- metadata.gz: 74c6ec9d1a2fc12a27f722a336e5e2438481644d2c4eec1740001c07ede7c1733739a51bebf0bec034a3a7e2aca88ecd2e2665c28fcca277a363af0e646086ba
7
- data.tar.gz: ebbd48822b79e23fd0098377fa09254f5cd46a3244f08c817a942db381cc2080434f0e77c403caae9875ce1f59c0b27b7631cd5dbed7ac28d4720840e1420121
6
+ metadata.gz: 7a10f3ec84688ac65572f3ffb77a70f231436ae8222a6d2c7534a6e5cfa126eca71b4c8f2319ca8f7583c4257ae90896605b093af69dbcdc353e70f667307303
7
+ data.tar.gz: e5abc3793a771f2c1ac96cbaa875a80ab47e665993c7f4a77790f45c983ab557fe4d94345e34d03c9b2ad2ecbfada109bc6e2cacc50881c983da038c54740745
data/.travis.yml CHANGED
@@ -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'
@@ -1,5 +1,8 @@
1
1
  ---
2
2
  en:
3
+ errors:
4
+ check_update_failure: 'Checking update failed'
5
+ account_not_found_error: 'Your account was not found. Please create it from https://deploygate.com'
3
6
  command_builder:
4
7
  name: 'dg'
5
8
  description: 'Control DeployGate from your terminal.'
@@ -93,7 +96,7 @@ en:
93
96
  $ dg login
94
97
  print_login_user: 'User name: %{name}'
95
98
  login:
96
- start_login_or_create_account:
99
+ start_login:
97
100
  welcome: 'Welcome to DeployGate!'
98
101
  email: 'Email: '
99
102
  check_account: 'Checking for your account...'
@@ -103,28 +106,6 @@ en:
103
106
  Could not log in to DeployGate.
104
107
  Please try again.
105
108
  success: 'Hello %{name}!'
106
- create_account:
107
- prompt: "Looks new to DeployGate. Let's set up your account, just choose your user name and password."
108
- creating: 'Creating your account... '
109
- error: |
110
- Could not create your account.
111
- Please try again.
112
- success: 'done! Your account has been set up successfully.'
113
- input_new_account_name:
114
- input_user_name: 'Username: '
115
- checking: 'Checking for availability... '
116
- already_used_user_name: 'Sorry, %{user_name} was already taken. Please try again.'
117
- success: 'Good, %{user_name} is available.'
118
- input_new_account_password:
119
- input_password: 'Password: '
120
- input_same_password: 'Type the same password: '
121
- error: "Passwords didn't match. Please type again."
122
- check_terms:
123
- terms_url: 'Terms of Service: https://deploygate.com/terms'
124
- privacy_url: 'Privacy Policy: https://deploygate.com/terms/privacy'
125
- note: "DeployGate properly manages your account information under GDPR, Japan's Personal Information Protection Act and our Privacy Policy."
126
- text: 'I agree to the Terms of Service and Privacy Policy (y/n) '
127
- error: 'You must agree to the Terms of Service and Privacy Policy.'
128
109
  logout:
129
110
  success: |
130
111
  Logout success!
@@ -142,16 +123,16 @@ en:
142
123
  choice: '%{team_name} %{team_id}'
143
124
  check_local_certificates:
144
125
  not_local_install_certificate:
145
- error_message: 'Error: No applicable iPhone Distribution certificate found on your Mac.'
126
+ error_message: 'Error: No applicable iPhone Distribution or Apple Distribution certificate found on your Mac.'
146
127
  note: |
147
- No "iPhone Distribution" certificate and/or corresponding private key installed locally.
128
+ No "iPhone Distribution" or "Apple Distribution" certificate and/or corresponding private key installed locally.
148
129
  To sign your application code, make sure you have installed them and available in your Keychain.
149
130
 
150
131
  See also: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html
151
132
  conflict_certificate:
152
133
  error_message: 'Error: Too many certificates found.'
153
134
  note: |
154
- You have more than one "iPhone Distribution" certificate installed on your Mac.
135
+ You have more than one "iPhone Distribution" or "Apple Distribution" certificate installed on your Mac.
155
136
  Please remove other unnecessary certificates from your Keychain.
156
137
  clean_provisioning_profiles:
157
138
  start: 'Cleaning local Provisioning Profiles...'
@@ -171,5 +152,5 @@ en:
171
152
  Note: Your password will be stored to your Keychain and never be sent to DeployGate.
172
153
  email: 'Email: '
173
154
  provisioning_profile:
174
- not_installed_certificate_error: 'No iPhone Distribution Certificate associated with private key was found in local Keychain'
155
+ not_installed_certificate_error: 'No iPhone Distribution or Apple Distribution Certificate associated with private key was found in local Keychain'
175
156
  not_exist_uuid_provisioning_profile_error: 'No provisioning profile found for the specified UUID (%{uuid})'
@@ -45,7 +45,11 @@ module DeployGate
45
45
  private
46
46
 
47
47
  def client
48
- HTTPClient.new(:agent_name => "dg/#{DeployGate::VERSION}")
48
+ timeout = 60 * 5 # 5 minutes
49
+ HTTPClient.new(agent_name: "dg/#{DeployGate::VERSION}").tap do |c|
50
+ c.receive_timeout = timeout
51
+ c.send_timeout = timeout
52
+ end
49
53
  end
50
54
 
51
55
  def headers
@@ -6,30 +6,6 @@ module DeployGate
6
6
  ENDPOINT = '/users'
7
7
 
8
8
  class << self
9
- # @param [String] name
10
- # @param [String] email
11
- # @param [String] password
12
- # @param [String] locale
13
- # @return [Hash]
14
- def create(name, email, password, locale = 'en')
15
- res = Base.new().post(ENDPOINT, {:name => name, :email => email, :password => password, :locale => locale})
16
-
17
- user_create_results = {
18
- :error => res['error'],
19
- :message => res['because']
20
- }
21
-
22
- results = res['results']
23
- unless results.nil?
24
- user_create_results.merge!({
25
- :name => results['user']['name'],
26
- :token => results['api_token']
27
- })
28
- end
29
-
30
- user_create_results
31
- end
32
-
33
9
  # @param [String] name
34
10
  # @param [String] email
35
11
  # @return [Boolean]
@@ -203,6 +203,8 @@ EOF
203
203
  else
204
204
  request_gem_update_checker
205
205
  end
206
+ rescue => e
207
+ STDERR.puts I18n.t('errors.check_update_failure')
206
208
  end
207
209
 
208
210
  # @return [void]
@@ -11,7 +11,7 @@ module DeployGate
11
11
 
12
12
  session = DeployGate::Session.new
13
13
  unless session.login?
14
- Login.start_login_or_create_account()
14
+ Login.start_login()
15
15
  session = DeployGate::Session.new()
16
16
  end
17
17
 
@@ -13,7 +13,7 @@ module DeployGate
13
13
  def upload(args, options)
14
14
  session = DeployGate::Session.new()
15
15
  unless session.login?
16
- Login.start_login_or_create_account()
16
+ Login.start_login()
17
17
  session = DeployGate::Session.new()
18
18
  end
19
19
 
@@ -6,7 +6,7 @@ module DeployGate
6
6
  # @param [Array] args
7
7
  # @param [Commander::Command::Options] options
8
8
  def run(args, options)
9
- Login.start_login_or_create_account() unless DeployGate::Session.new.login?
9
+ Login.start_login() unless DeployGate::Session.new.login?
10
10
 
11
11
  # push or build(android/ios)
12
12
  args.push(Dir.pwd) if args.empty?
@@ -1,6 +1,8 @@
1
1
  module DeployGate
2
2
  module Commands
3
3
  class Login
4
+ class AccountNotFoundError < DeployGate::RavenIgnoreException; end
5
+
4
6
  class << self
5
7
 
6
8
  # @return [void]
@@ -8,31 +10,32 @@ module DeployGate
8
10
  welcome()
9
11
 
10
12
  if options.terminal
11
- start_login_or_create_account()
13
+ start_login()
12
14
  else
13
15
  DeployGate::BrowserLogin.new().start()
14
16
  end
15
17
  end
16
18
 
17
19
  def welcome
18
- puts I18n.t('commands.login.start_login_or_create_account.welcome')
20
+ puts I18n.t('commands.login.start_login.welcome')
19
21
  print_deploygate_aa()
20
22
  end
21
23
 
22
24
  # @return [void]
23
- def start_login_or_create_account
25
+ # @raise [AccountNotFoundError] emailに一致するUserが存在しないとき
26
+ def start_login
24
27
  puts ''
25
- email = ask(I18n.t('commands.login.start_login_or_create_account.email'))
28
+ email = ask(I18n.t('commands.login.start_login.email'))
26
29
 
27
30
  puts ''
28
- puts I18n.t('commands.login.start_login_or_create_account.check_account')
31
+ puts I18n.t('commands.login.start_login.check_account')
29
32
  if DeployGate::User.registered?('', email)
30
33
  puts ''
31
- password = input_password(I18n.t('commands.login.start_login_or_create_account.input_password'))
34
+ password = input_password(I18n.t('commands.login.start_login.input_password'))
32
35
  puts ''
33
36
  start(email, password)
34
37
  else
35
- create_account(email)
38
+ raise AccountNotFoundError, HighLine.color(I18n.t('errors.account_not_found_error'))
36
39
  end
37
40
  end
38
41
 
@@ -56,69 +59,6 @@ module DeployGate
56
59
  puts HighLine.color(I18n.t('commands.login.start.success', name: session.name), HighLine::GREEN)
57
60
  end
58
61
 
59
- # @param [String] email
60
- # @return [void]
61
- def create_account(email)
62
- puts I18n.t('commands.login.create_account.prompt')
63
- puts ''
64
-
65
- name = input_new_account_name()
66
- puts ''
67
-
68
- password = input_new_account_password()
69
- puts ''
70
-
71
- unless check_terms
72
- puts HighLine.color(I18n.t('commands.login.check_terms.error'), HighLine::RED)
73
- exit 1
74
- end
75
-
76
- print I18n.t('commands.login.create_account.creating')
77
- if DeployGate::User.create(name, email, password).nil?
78
- puts HighLine.color(I18n.t('commands.login.create_account.error'), HighLine::RED)
79
- raise 'User create error'
80
- else
81
- puts HighLine.color(I18n.t('commands.login.create_account.success'), HighLine::GREEN)
82
- start(email, password)
83
- end
84
- end
85
-
86
- # @return [String]
87
- def input_new_account_name
88
- user_name = ask(I18n.t('commands.login.input_new_account_name.input_user_name'))
89
- print I18n.t('commands.login.input_new_account_name.checking')
90
-
91
- if DeployGate::User.registered?(user_name, '')
92
- puts HighLine.color(I18n.t('commands.login.input_new_account_name.already_used_user_name', user_name: user_name), HighLine::RED)
93
- return input_new_account_name()
94
- else
95
- puts HighLine.color(I18n.t('commands.login.input_new_account_name.success', user_name: user_name), HighLine::GREEN)
96
- return user_name
97
- end
98
- end
99
-
100
- # @return [String]
101
- def input_new_account_password
102
- password = input_password(I18n.t('commands.login.input_new_account_password.input_password'))
103
- secound_password = input_password(I18n.t('commands.login.input_new_account_password.input_same_password'))
104
-
105
- if password == secound_password
106
- return password
107
- else
108
- puts HighLine.color(I18n.t('commands.login.input_new_account_password.error'), HighLine::RED)
109
- return input_new_account_password()
110
- end
111
- end
112
-
113
- # @return [boolean]
114
- def check_terms
115
- puts I18n.t('commands.login.check_terms.terms_url')
116
- puts I18n.t('commands.login.check_terms.privacy_url')
117
- puts I18n.t('commands.login.check_terms.note')
118
- puts ''
119
- HighLine.agree(I18n.t('commands.login.check_terms.text')) {|q| q.default = "n"}
120
- end
121
-
122
62
  # @return [String]
123
63
  def input_password(message)
124
64
  ask(message) { |q| q.echo = "*" }
@@ -8,17 +8,6 @@ module DeployGate
8
8
  @name = name
9
9
  end
10
10
 
11
- # @param [String] name
12
- # @param [String] email
13
- # @param [String] password
14
- # @return [DeployGate::User]
15
- def self.create(name, email, password)
16
- locale = Locale.current.language
17
- results = DeployGate::API::V1::User.create(name, email, password, locale)
18
- return if results[:error]
19
- DeployGate::User.new(results[:name])
20
- end
21
-
22
11
  # @param [String] name
23
12
  # @param [String] email
24
13
  # @return [Boolean]
@@ -1,3 +1,3 @@
1
1
  module DeployGate
2
- VERSION = '0.8.0'
2
+ VERSION = '0.8.4'
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 ""
@@ -28,10 +28,16 @@ module DeployGate
28
28
 
29
29
  values = {
30
30
  export_method: export_method,
31
- project: ios_analyze.xcodeproj,
32
31
  configuration: build_configuration || DeployGate::Xcode::Analyze::DEFAULT_BUILD_CONFIGURATION,
33
32
  scheme: target_scheme
34
33
  }
34
+
35
+ if ios_analyze.build_workspace
36
+ values[:workspace] = ios_analyze.build_workspace
37
+ else
38
+ values[:project] = ios_analyze.xcodeproj
39
+ end
40
+
35
41
  values[:codesigning_identity] = codesigning_identity if codesigning_identity
36
42
  if allow_provisioning_updates
37
43
  values[:xcargs] = '-allowProvisioningUpdates'
@@ -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)
data/lib/deploygate.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "resolv-replace"
1
2
  require "commander"
2
3
  require "json"
3
4
  require "httpclient"
@@ -1,31 +1,4 @@
1
1
  describe DeployGate::API::V1::User do
2
- describe "#create" do
3
- it "success" do
4
- name = 'test'
5
- email = 'email'
6
- password = 'password'
7
- token = 'token'
8
- response = {
9
- :error => false,
10
- :because => '',
11
- :results => {
12
- :user => {:name => name},
13
- :api_token => token
14
- }
15
- }
16
- stub_request(:post, "#{API_ENDPOINT}/users").
17
- to_return(:body => response.to_json)
18
-
19
- results = DeployGate::API::V1::User.create(name, email, password)
20
- expect(results).to eq({
21
- :error => response[:error],
22
- :message => response[:because],
23
- :name => name,
24
- :token => token
25
- })
26
- end
27
- end
28
-
29
2
  describe "#registered?" do
30
3
  it "registered" do
31
4
  name = 'test'
@@ -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.4
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: 2022-01-07 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