deploygate 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MDIxOWM0M2U2OThlNmZlYjVmNTMwMmE4MTliNWNhNGRmZjRiN2E1OQ==
4
+ ZGFkNTU4ZTMxMzRiZDY2NjFmMjcwMDc0YWViODBjNzMyYWRiNTg1OQ==
5
5
  data.tar.gz: !binary |-
6
- NGQyZThlNGQ5ZjQyYzA2ZmNlODhiMTk1NzdhZWVkZTZkNzkzMWU3MQ==
6
+ NWQ3OWI4YjVjYTRmMTdiN2NlZGMzM2FhNGNhYThiM2YxMTJlYjE2Mg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NWIyOGU4YjFhMTg4NTU4MjRiYTA1M2Q0ZDQ3ODU2OThmODI0YTI1NTE4MDNk
10
- MDZmY2JiYzQ2ZDFmNzUwYmI5MmNmOWUzMDI3MDZlYzE2MGFkMDlhYmJhNmNm
11
- M2M2NDBmNWViNzczOTg5NjIzNDU5ZDllZmMyODkzOTQ2MTExZjA=
9
+ Yzg4MmY0ZTQ2MTQzMzEzYzlkNmI5OWUyZjkzOWE1NGJmNzQ4MzRkMDZiZGU3
10
+ OGVhZmVkYTM3MjdjMTQ5NTk0N2FhMGY0NzgzYzY0MGUzNmQwM2YxYTllMGE2
11
+ NTM5ZTRjMTAxYzA3MDZjZGYyMzJmMDU0ZGE0MDQ1ZDA1ZjIxZjE=
12
12
  data.tar.gz: !binary |-
13
- ZjA0YTI4MTU4ZGY2OTAxMDM5NGRhZDJlZWVhMzc4MDI1MzdmMzZjYjM4N2Jm
14
- OGIyY2YyNGM2M2JhOThhOTJiMTY0MmI4ZTJhYzVmNDZmMGM2NjFmYzFmYjRm
15
- YzU0NGViZWQ4OTFiNTdjMDMxYTlmYTQ5YmZiNDZlMDRhMWI5MTc=
13
+ NTA4OGNlMmZmM2NkMGJhZmI0ZjMzMGMwNTIxNTcyMjA0YzMzOGIxODY3OGJh
14
+ YzQ2OTFiZjZkY2ZmMjRkYjkzMzg2Mjk5NDVkMjI5ZjE1ZDU1ZjU0ZjM0ZGMz
15
+ MWEyMTc3OTEzNTRlYzJiOWVlN2YzYjlkOWYyZWNlNzA5YWEwZGY=
@@ -40,6 +40,7 @@ en:
40
40
  # It is recommended to use the latest version.
41
41
  # You can update it by running 'gem update %{gem_name}'.
42
42
  #################################################################
43
+ not_internet_connection_error: 'Error: Not internet connection. Please by connecting to the internet'
43
44
  commands:
44
45
  deploy:
45
46
  build:
@@ -145,6 +146,7 @@ en:
145
146
  finish: 'Finish cleaning local Provisionig Profiles'
146
147
  analyze:
147
148
  target_bundle_identifier:
149
+ bundle_identifier_different: 'This xcode project Bundle Identifier has been two registered. "%{plist_id}" and "%{product_id}"'
148
150
  prompt: |
149
151
  Please input your app bundle identifier
150
152
  Example: com.example.ios
data/deploygate.gemspec CHANGED
@@ -33,11 +33,12 @@ POST_INSTALL_MESSAGE
33
33
  spec.add_dependency 'i18n'
34
34
  spec.add_dependency 'launchy'
35
35
  spec.add_dependency 'locale'
36
+ spec.add_dependency 'net-ping'
36
37
 
37
38
  # ios build
38
- spec.add_dependency 'gym', '~> 1.4.0'
39
- spec.add_dependency 'spaceship', '~> 0.19.0'
40
- spec.add_dependency 'sigh', '~> 1.2.2'
39
+ spec.add_dependency 'gym', '~> 1.6.2'
40
+ spec.add_dependency 'spaceship', '~> 0.23.0'
41
+ spec.add_dependency 'sigh', '~> 1.4.1'
41
42
 
42
43
  spec.add_development_dependency "bundler", "~> 1.3"
43
44
  spec.add_development_dependency "rake"
@@ -3,20 +3,37 @@ module DeployGate
3
3
  include Commander::Methods
4
4
  attr_reader :arguments
5
5
 
6
+ class NotInternetConnectionError < DeployGate::NotIssueError
7
+ end
8
+
9
+ PING_URL = 'https://deploygate.com'
10
+
6
11
  LOGIN = 'login'
7
12
  LOGOUT = 'logout'
8
13
  DEPLOY = 'deploy'
9
14
  ADD_DEVICES = 'add-devices'
10
15
  CONFIG = 'config'
11
16
 
12
- def run
17
+ def setup
18
+ # set Ctrl-C trap
13
19
  Signal.trap(:INT){
14
20
  puts ''
15
21
  exit 0
16
22
  }
17
23
 
24
+ # check internet connection
25
+ unless internet_connection?
26
+ STDERR.puts HighLine.color(I18n.t('command_builder.not_internet_connection_error'), HighLine::RED)
27
+ exit
28
+ end
29
+
30
+ # check update
18
31
  GithubIssueRequest::Url.config('deploygate', 'deploygate-cli')
19
32
  check_update()
33
+ end
34
+
35
+ def run
36
+ setup()
20
37
 
21
38
  program :name, I18n.t('command_builder.name')
22
39
  program :version, VERSION
@@ -209,5 +226,10 @@ EOF
209
226
  STDERR.puts HighLine.color(I18n.t('command_builder.show_update_message', gem_name: gem_name, latest_version: latest_version, current_version: current_version), HighLine::YELLOW)
210
227
  STDERR.puts ''
211
228
  end
229
+
230
+ # @return [Boolean]
231
+ def internet_connection?
232
+ Net::Ping::HTTP.new(PING_URL).ping?
233
+ end
212
234
  end
213
235
  end
@@ -54,7 +54,7 @@ module DeployGate
54
54
  revision: data[:revision],
55
55
  web_url: data[:web_url])
56
56
  if((open || data[:revision] == 1) && openable?)
57
- system "open #{data[:web_url]}"
57
+ Launchy.open(data[:web_url])
58
58
  end
59
59
  end
60
60
 
@@ -5,6 +5,11 @@ module DeployGate
5
5
 
6
6
  attr_reader :name, :token
7
7
 
8
+ module ENVKey
9
+ DG_USER_NAME = 'DG_USER_NAME'
10
+ DG_TOKEN = 'DG_TOKEN'
11
+ end
12
+
8
13
  @@login = nil
9
14
 
10
15
  # @return [DeployGate::Session]
@@ -55,11 +60,21 @@ module DeployGate
55
60
 
56
61
  # @return [void]
57
62
  def load_setting
63
+ return if load_env
58
64
  return unless Config::Credential.exist?
59
65
  settings = Config::Credential.read
66
+
60
67
  @name = settings['name']
61
68
  @token = settings['token']
62
69
  end
63
70
 
71
+ # @return [Boolean]
72
+ def load_env
73
+ @name = ENV[ENVKey::DG_USER_NAME]
74
+ @token = ENV[ENVKey::DG_TOKEN]
75
+
76
+ @name.present? && @token.present?
77
+ end
78
+
64
79
  end
65
80
  end
@@ -1,3 +1,3 @@
1
1
  module DeployGate
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -6,6 +6,9 @@ module DeployGate
6
6
  BASE_WORK_DIR_NAME = 'project.xcworkspace'
7
7
  BUILD_CONFIGRATION = 'Release'
8
8
 
9
+ class BundleIdentifierDifferentError < DeployGate::NotIssueError
10
+ end
11
+
9
12
  # @param [Array] workspaces
10
13
  # @return [DeployGate::Xcode::Analyze]
11
14
  def initialize(workspaces)
@@ -29,13 +32,45 @@ module DeployGate
29
32
  def target_bundle_identifier
30
33
  begin
31
34
  product_name = target_product_name
32
- identifier = target_build_configration.build_settings['PRODUCT_BUNDLE_IDENTIFIER']
33
- identifier.gsub!(/\$\(PRODUCT_NAME:.+\)/, product_name)
34
- rescue
35
+ product_bundle_identifier = target_build_configration.build_settings['PRODUCT_BUNDLE_IDENTIFIER']
36
+ product_bundle_identifier = convert_bundle_identifier(product_bundle_identifier)
37
+
38
+ info_plist_file_path = target_build_configration.build_settings['INFOPLIST_FILE']
39
+ root_path = DeployGate::Xcode::Ios.project_root_path(@scheme_workspace)
40
+ plist_bundle_identifier =
41
+ File.open(File.join(root_path, info_plist_file_path)) do |file|
42
+ plist = Plist.parse_xml file.read
43
+ plist['CFBundleIdentifier']
44
+ end
45
+ plist_bundle_identifier = convert_bundle_identifier(plist_bundle_identifier)
46
+
47
+ if product_bundle_identifier != plist_bundle_identifier
48
+ raise BundleIdentifierDifferentError,
49
+ I18n.t('xcode.analyze.target_bundle_identifier.bundle_identifier_different', plist_id: plist_bundle_identifier, product_id: product_bundle_identifier)
50
+ end
51
+
52
+ bundle_identifier = product_bundle_identifier
53
+ bundle_identifier.gsub!(/\$\(PRODUCT_NAME:.+\)/, product_name)
54
+ rescue BundleIdentifierDifferentError => e
55
+ raise e
56
+ rescue => e
35
57
  cli = HighLine.new
36
58
  puts I18n.t('xcode.analyze.target_bundle_identifier.prompt')
37
- identifier = cli.ask(I18n.t('xcode.analyze.target_bundle_identifier.ask')) { |q| q.validate = /^(\w+)\.(\w+).*\w$/ }
59
+ bundle_identifier = cli.ask(I18n.t('xcode.analyze.target_bundle_identifier.ask')) { |q| q.validate = /^(\w+)\.(\w+).*\w$/ }
60
+ end
61
+
62
+ bundle_identifier
63
+ end
64
+
65
+ # @param [String] bundle_identifier
66
+ # @return [String]
67
+ def convert_bundle_identifier(bundle_identifier)
68
+ identifier = bundle_identifier
69
+ if match = bundle_identifier.match(/\$\((.+)\)/)
70
+ custom_id = match[1]
71
+ identifier = target_build_configration.build_settings[custom_id]
38
72
  end
73
+ identifier = convert_bundle_identifier(identifier) if bundle_identifier.match(/\$\((.+)\)/)
39
74
 
40
75
  identifier
41
76
  end
@@ -39,15 +39,16 @@ module DeployGate
39
39
  profiles.reject! {|profile| profile['UUID'] != uuid} unless uuid.nil?
40
40
 
41
41
  profiles.each do |profile|
42
+ next if DateTime.now >= profile['ExpirationDate'] || !installed_certificate?(profile['Path'])
43
+
42
44
  entities = profile['Entitlements']
43
45
  unless entities['get-task-allow']
44
46
  team_id = entities['com.apple.developer.team-identifier']
45
47
  application_id = entities['application-identifier']
46
48
  application_id.slice!(/^#{team_id}\./)
47
49
  application_id = '.' + application_id if application_id == '*'
48
- if bundle_identifier.match(application_id) &&
49
- DateTime.now < profile['ExpirationDate'] &&
50
- installed_certificate?(profile['Path'])
50
+ if match = bundle_identifier.match(application_id)
51
+ next if match[0] != bundle_identifier
51
52
 
52
53
  local_teams.add(team_id, profile['TeamName'], profile['Path'])
53
54
  end
data/lib/deploygate.rb CHANGED
@@ -18,6 +18,7 @@ require "open-uri"
18
18
  require "rexml/document"
19
19
  require "launchy"
20
20
  require "webrick"
21
+ require "net/ping"
21
22
 
22
23
  require "i18n"
23
24
  I18n.load_path = Dir[File.join(File.dirname(__FILE__), '../config/locales/*.yml')]
@@ -1,4 +1,41 @@
1
1
  describe DeployGate::Session do
2
+ describe "use env" do
3
+ let(:name) { 'name' }
4
+ let(:env_name) { 'env_name' }
5
+ let(:token) { 'token' }
6
+ let(:env_token) { 'env_token' }
7
+
8
+ it "not set env" do
9
+ ENV[DeployGate::Session::ENVKey::DG_USER_NAME] = nil
10
+ ENV[DeployGate::Session::ENVKey::DG_TOKEN] = nil
11
+
12
+ DeployGate::Session.save(name, token)
13
+ session = DeployGate::Session.new
14
+ expect(session.name).to eq name
15
+ expect(session.token).to eq token
16
+ end
17
+
18
+ it "set env blank" do
19
+ ENV[DeployGate::Session::ENVKey::DG_USER_NAME] = ''
20
+ ENV[DeployGate::Session::ENVKey::DG_TOKEN] = ''
21
+
22
+ DeployGate::Session.save(name, token)
23
+ session = DeployGate::Session.new
24
+ expect(session.name).to eq name
25
+ expect(session.token).to eq token
26
+ end
27
+
28
+ it "set env" do
29
+ ENV[DeployGate::Session::ENVKey::DG_USER_NAME] = env_name
30
+ ENV[DeployGate::Session::ENVKey::DG_TOKEN] = env_token
31
+
32
+ DeployGate::Session.save(name, token)
33
+ session = DeployGate::Session.new
34
+ expect(session.name).to eq env_name
35
+ expect(session.token).to eq env_token
36
+ end
37
+ end
38
+
2
39
  describe "#login?" do
3
40
  it "call check api" do
4
41
  call_check = false
data/spec/spec_helper.rb CHANGED
@@ -7,8 +7,6 @@ RSpec.configure do |config|
7
7
  config.before :each do
8
8
  # config file mock
9
9
  allow(DeployGate::Config::Credential).to receive(:file_path).and_return(File.join(SPEC_FILE_PATH, 'test_files/.dg/credentials'))
10
- # config dir mock
11
- allow(FileUtils).to receive(:mkdir_p) {}
12
10
  end
13
11
  end
14
12
 
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.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - deploygate
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-15 00:00:00.000000000 Z
11
+ date: 2016-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -192,48 +192,62 @@ dependencies:
192
192
  - - ! '>='
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: net-ping
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ! '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ! '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: gym
197
211
  requirement: !ruby/object:Gem::Requirement
198
212
  requirements:
199
213
  - - ~>
200
214
  - !ruby/object:Gem::Version
201
- version: 1.4.0
215
+ version: 1.6.2
202
216
  type: :runtime
203
217
  prerelease: false
204
218
  version_requirements: !ruby/object:Gem::Requirement
205
219
  requirements:
206
220
  - - ~>
207
221
  - !ruby/object:Gem::Version
208
- version: 1.4.0
222
+ version: 1.6.2
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: spaceship
211
225
  requirement: !ruby/object:Gem::Requirement
212
226
  requirements:
213
227
  - - ~>
214
228
  - !ruby/object:Gem::Version
215
- version: 0.19.0
229
+ version: 0.23.0
216
230
  type: :runtime
217
231
  prerelease: false
218
232
  version_requirements: !ruby/object:Gem::Requirement
219
233
  requirements:
220
234
  - - ~>
221
235
  - !ruby/object:Gem::Version
222
- version: 0.19.0
236
+ version: 0.23.0
223
237
  - !ruby/object:Gem::Dependency
224
238
  name: sigh
225
239
  requirement: !ruby/object:Gem::Requirement
226
240
  requirements:
227
241
  - - ~>
228
242
  - !ruby/object:Gem::Version
229
- version: 1.2.2
243
+ version: 1.4.1
230
244
  type: :runtime
231
245
  prerelease: false
232
246
  version_requirements: !ruby/object:Gem::Requirement
233
247
  requirements:
234
248
  - - ~>
235
249
  - !ruby/object:Gem::Version
236
- version: 1.2.2
250
+ version: 1.4.1
237
251
  - !ruby/object:Gem::Dependency
238
252
  name: bundler
239
253
  requirement: !ruby/object:Gem::Requirement