xcodebuilder 0.0.23 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2c6ac0109bdfd62356296c4cf80a66a62555f82a
4
- data.tar.gz: f4b973544683298402b05a65c9498be031681677
3
+ metadata.gz: 8d8a7a84bb6f92c9d1a93692976b0c6b47bfb0fa
4
+ data.tar.gz: d31c2f7eb8fa8ca3a1b47317d140225065b27a24
5
5
  SHA512:
6
- metadata.gz: c3ac4e931dd0974560c3e24740491d1892dff981a9f0bd65b99f0a39240b95dbbda73cadab76ed949ee413977a8374d6809d54fae9934c7dd49b1ff53342a2bd
7
- data.tar.gz: 93bf33ca8c0cd7551568578c5c356990e58a8983c6a95c6ba3ac7b441a60443646f92b7a2ff0bd39436f35fb0a8987d3b4d95734629c95c23a9c734ef1884495
6
+ metadata.gz: 5efdae1ae7eda5d1d4460731a1fd0771bc48c23205723ca3542efba0204426864b6270ce6911e01cf9d2f465ae80bcd5e7d6c80537a6e59a51a629b1b00d178e
7
+ data.tar.gz: 297a0bb2b2e1fe5a5578f81c6f3388da46ecbaac8fa0cba52506874b087ff43df6ab80b2861c94939973adb90b20bbb316a31605a701d33bf109baef1f31ff28
data/lib/xcode_builder.rb CHANGED
@@ -13,28 +13,20 @@ module XcodeBuilder
13
13
  @configuration = Configuration.new(
14
14
  :configuration => "Release",
15
15
  :build_dir => "build",
16
- :xcodebuild_extra_args => nil,
17
- :xcrun_extra_args => nil,
18
16
  :project_file_path => nil,
19
17
  :workspace_file_path => nil,
20
- :sdk => "iphoneos",
21
18
  :scheme => nil,
22
19
  :app_name => nil,
23
- :app_extension => "app",
24
20
  :signing_identity => nil,
25
21
  :package_destination_path => "./pkg",
26
- :zip_artifacts => false,
27
- :skip_dsym => false,
28
- :arch => nil,
29
- :skip_clean => ENV.fetch('SKIPCLEAN', false),
30
- :verbose => ENV.fetch('VERBOSE', false),
22
+ :skip_clean => false,
23
+ :verbose => false,
31
24
  :info_plist => nil,
32
25
  :scm => nil,
33
- :tag_vcs => false,
34
- :increment_plist_version => false,
35
26
  :pod_repo => nil,
36
27
  :podspec_file => nil,
37
- :upload_dsym => false
28
+ :xcodebuild_extra_args => nil,
29
+ :xcrun_extra_args => nil,
38
30
  )
39
31
  @namespace = namespace
40
32
  yield @configuration if block_given?
@@ -47,7 +39,7 @@ module XcodeBuilder
47
39
  def xcodebuild(*args)
48
40
  # we're using tee as we still want to see our build output on screen
49
41
  cmd = []
50
- cmd << "/usr/bin/xcodebuild"
42
+ cmd << "xcrun xcodebuild"
51
43
  cmd.concat args
52
44
  puts "Running: #{cmd.join(" ")}" if @configuration.verbose
53
45
  cmd << "| xcpretty && exit ${PIPESTATUS[0]}"
@@ -68,6 +60,9 @@ module XcodeBuilder
68
60
  def build
69
61
  clean unless @configuration.skip_clean
70
62
 
63
+ # update the long version number with the date
64
+ @configuration.timestamp_plist
65
+
71
66
  print "Building Project..."
72
67
  success = xcodebuild @configuration.build_arguments, "build"
73
68
  raise "** BUILD FAILED **" unless success
@@ -77,34 +72,13 @@ module XcodeBuilder
77
72
  # desc "Package the release as a distributable archive"
78
73
  def package
79
74
  build
80
- # there is no need for IPA or dSYM unless we have a device/macosx build,
81
- # so do that part only on iphoneos/macosx SDKs
82
- #
83
- if(@configuration.sdk.eql? "iphoneos") then
84
- package_ios_app
85
- package_dsym
86
- package_artifact unless !@configuration.zip_artifacts
87
- elsif (@configuration.sdk.eql? "macosx") then
88
- package_macos_app
89
- package_dsym
90
- package_artifact unless !@configuration.zip_artifacts
91
- else
92
- package_simulator_app
93
- end
94
- end
95
-
96
- # desc "Builds an IPA from the built .app"
97
- def package_ios_app
75
+
98
76
  print "Packaging and Signing..."
99
77
  if (@configuration.signing_identity != nil) then
100
78
  puts ""
101
79
  print "Signing identity: #{@configuration.signing_identity}"
102
80
  end
103
- if (@configuration.provisioning_profile != nil) then
104
- puts ""
105
- print "Provisioning profile: #{@configuration.provisioning_profile}"
106
- end
107
- raise "** PACKAGE FAILED ** No Signing Identity Found" unless @configuration.signing_identity
81
+
108
82
  # trash and create the dist IPA path if needed
109
83
  FileUtils.rm_rf @configuration.package_destination_path unless !File.exists? @configuration.package_destination_path
110
84
  FileUtils.mkdir_p @configuration.package_destination_path
@@ -112,107 +86,41 @@ module XcodeBuilder
112
86
  # Construct the IPA and Sign it
113
87
  cmd = []
114
88
  cmd << "/usr/bin/xcrun"
115
- cmd << "-sdk #{@configuration.sdk}"
89
+ cmd << "-sdk iphoneos"
116
90
  cmd << "PackageApplication"
117
91
  cmd << "'#{@configuration.built_app_path}'"
118
92
  cmd << "-o '#{@configuration.ipa_path}'"
119
93
  cmd << "--sign '#{@configuration.signing_identity}'" unless @configuration.signing_identity == nil
120
- cmd << "--embed '#{File.expand_path(@configuration.provisioning_profile)}'" unless @configuration.provisioning_profile == nil
94
+
121
95
  if @configuration.xcrun_extra_args then
122
96
  cmd.concat @configuration.xcrun_extra_args if @configuration.xcrun_extra_args.is_a? Array
123
97
  cmd << @configuration.xcrun_extra_args if @configuration.xcrun_extra_args.is_a? String
124
98
  end
125
- puts "Running #{cmd.join(" ")}" if @configuration.verbose
126
- cmd << "2>&1 /dev/null"
127
- cmd = cmd.join(" ")
128
- system(cmd)
129
-
130
- # zip the dSYM over to the dist folder
131
- puts "Done"
132
- end
133
-
134
- def package_macos_app
135
- # clean the pkg folder: create it if it doesn't exist yet
136
- FileUtils.mkdir_p "\"#{@configuration.package_destination_path}\"" unless File.exists? "\"#{@configuration.package_destination_path}\""
137
- # and remove an existing app_bundle_path if it exists
138
- FileUtils.rm_rf "\"#{@configuration.app_bundle_path}\"" unless !File.exists? "\"#{@configuration.app_bundle_path}\""
139
-
140
- # now we can properly copy the app bundle path over.
141
- FileUtils.cp_r "\"#{@configuration.built_app_path}\"", "\"#{@configuration.package_destination_path}\""
142
- end
143
-
144
- def package_simulator_app
145
- # clean the pkg folder: create it if it doesn't exist yet
146
- FileUtils.mkdir_p "\"#{@configuration.package_destination_path}\"" unless File.exists? "\"#{@configuration.package_destination_path}\""
147
- # and remove an existing app_bundle_path if it exists
148
- FileUtils.rm_rf "\"#{@configuration.app_bundle_path}\"" unless !File.exists? "\"#{@configuration.app_bundle_path}\""
149
-
150
- # now we can properly copy the app bundle path over.
151
- FileUtils.cp_r "\"#{@configuration.built_app_path}\"", "\"#{@configuration.package_destination_path}\""
152
- end
153
-
154
- # desc "Zips the dSYM to the package folder"
155
- def package_dsym
156
- return if @configuration.skip_dsym
157
- print "Packaging dSYM..."
158
-
159
- # copy the dSYM to the pkg destination
160
- FileUtils.cp_r @configuration.built_dsym_path, @configuration.package_destination_path
161
99
 
162
- # the version is pulled from a path relative location, so fetch BEFORE
163
- # we Dir.chdir
164
- dsym_name = @configuration.dsym_name
165
- dsym_target_path = @configuration.dsym_path
166
-
167
- # move to pkg destination and zip the dSYM
168
- current_dir = Dir.pwd
169
- Dir.chdir @configuration.package_destination_path
170
-
171
- cmd = []
172
- cmd << "zip"
173
- cmd << "-r"
174
- cmd << "\"#{dsym_target_path}\""
175
- cmd << "\"#{@configuration.app_name}.#{@configuration.app_extension}.dSYM\""
176
-
177
100
  puts "Running #{cmd.join(" ")}" if @configuration.verbose
178
101
  cmd << "2>&1 /dev/null"
179
102
  cmd = cmd.join(" ")
180
103
  system(cmd)
181
-
182
- FileUtils.rm_rf "#{@configuration.app_name}.#{@configuration.app_extension}.dSYM" unless !File.exists? "#{@configuration.app_name}.#{@configuration.app_extension}.dSYM"
183
-
184
- # back to working directory
185
- Dir.chdir current_dir
104
+
105
+ puts ""
186
106
  puts "Done."
187
107
  end
188
108
 
189
- # desc "Packages the final artifact (IPA + dSYM)"
190
- def package_artifact
191
- # keep track of current working dir
192
- current_dir = Dir.pwd
193
- Dir.chdir @configuration.package_destination_path
194
-
195
- # zip final package
196
- cmd = []
197
- cmd << "zip"
198
- cmd << "-r"
199
- cmd << "\"#{@configuration.zipped_package_name}\""
200
- cmd << "\"#{@configuration.dsym_name}\"" unless @configuration.skip_dsym
201
- cmd << "\"#{@configuration.ipa_name}\"" unless !@configuration.sdk.eql? "iphoneos"
202
- cmd << "\"#{@configuration.app_name}.#{@configuration.app_extension}\"" unless !@configuration.sdk.eql? "macosx"
203
- cmd << "2>&1 /dev/null"
204
-
205
- system cmd.join " "
206
-
207
- # delete all the artifacts but the .app. which will be needed by the automation builds
208
- FileUtils.rm_rf @configuration.dsym_name unless !File.exists? @configuration.dsym_name
209
- FileUtils.rm_rf @configuration.ipa_name unless !File.exists? @configuration.ipa_name
109
+ def deploy
110
+ package
111
+ @configuration.deployment_strategy.deploy
112
+ end
210
113
 
211
- # back to working directory
212
- Dir.chdir current_dir
114
+ def release
115
+ # deploy or package depending on configuration
116
+ if @configuration.deployment_strategy then
117
+ deploy
118
+ else
119
+ package
120
+ end
213
121
 
214
- puts "Done"
215
- puts "ZIP package: #{@configuration.zipped_package_name}"
122
+ puts ""
123
+ puts "App successfully released"
216
124
  end
217
125
 
218
126
  # desc "For CocoaPod libraries: dry run, tags SCM, pushes to cocoapod and increments build number"
@@ -258,30 +166,5 @@ module XcodeBuilder
258
166
  raise "** Pod push failed **" if !result
259
167
  puts "Done."
260
168
  end
261
-
262
- def deploy
263
- package
264
- @configuration.deployment_strategy.deploy
265
- end
266
-
267
- def release
268
- # deploy or package depending on configuration
269
- if @configuration.deployment_strategy then
270
- deploy
271
- else
272
- package
273
- end
274
-
275
- # tag first, then prepare for next release and
276
- # commit the updated plist
277
- if @configuration.tag_vcs then
278
- @configuration.release_strategy.tag_current_version
279
- end
280
-
281
- if @configuration.release_strategy != nil then
282
- @configuration.release_strategy.prepare_for_next_release
283
- end
284
- puts "App successfully released"
285
- end
286
169
  end
287
170
  end
@@ -1,4 +1,5 @@
1
1
  require 'pathname'
2
+ require 'Date'
2
3
  require File.dirname(__FILE__) + '/deployment_strategies'
3
4
  require File.dirname(__FILE__) + '/release_strategies'
4
5
 
@@ -20,10 +21,10 @@ module XcodeBuilder
20
21
  args << "-project '#{project_file_path}'" if project_file_path
21
22
  end
22
23
 
23
- args << "-sdk #{sdk}"
24
+ args << "-sdk iphoneos"
24
25
 
25
26
  args << "-configuration '#{configuration}'"
26
- args << "BUILD_DIR=#{File.expand_path build_dir}" unless build_dir == :derived
27
+ args << "BUILD_DIR=#{File.expand_path build_dir}"
27
28
 
28
29
  if xcodebuild_extra_args
29
30
  args.concat xcodebuild_extra_args if xcodebuild_extra_args.is_a? Array
@@ -35,7 +36,7 @@ module XcodeBuilder
35
36
 
36
37
  def app_file_name
37
38
  raise ArgumentError, "app_name or target must be set in the BetaBuilder configuration block" if app_name.nil?
38
- "#{app_name}.#{app_extension}"
39
+ "#{app_name}.app"
39
40
  end
40
41
 
41
42
  def info_plist_path
@@ -46,19 +47,6 @@ module XcodeBuilder
46
47
  end
47
48
  end
48
49
 
49
- def final_bundle_id
50
- final_plist_path = "#{app_bundle_path}/Info.plist"
51
- # no plist is found, return a nil version
52
- if (final_plist_path == nil) || (!File.exists? final_plist_path) then
53
- return nil
54
- end
55
-
56
- # read the plist and extract data
57
- plist = CFPropertyList::List.new(:file => final_plist_path)
58
- data = CFPropertyList.native_types(plist.value)
59
- data["CFBundleIdentifier"]
60
- end
61
-
62
50
  def build_number
63
51
  # we have a podspec file, so try to get the version out of that
64
52
  if (podspec_file != nil) && (File.exists? podspec_file) then
@@ -74,7 +62,7 @@ module XcodeBuilder
74
62
  # read the plist and extract data
75
63
  plist = CFPropertyList::List.new(:file => info_plist_path)
76
64
  data = CFPropertyList.native_types(plist.value)
77
- data["CFBundleVersion"]
65
+ data["CFBundleShortVersionString"]
78
66
  end
79
67
 
80
68
  def build_number_from_podspec
@@ -128,11 +116,7 @@ module XcodeBuilder
128
116
  true
129
117
  end
130
118
 
131
- def increment_plist_number
132
- if !increment_plist_version then
133
- return false
134
- end
135
-
119
+ def timestamp_plist
136
120
  if info_plist == nil then
137
121
  return false
138
122
  end
@@ -142,13 +126,20 @@ module XcodeBuilder
142
126
  data = CFPropertyList.native_types(plist.value)
143
127
 
144
128
  # re inject new version number into the data
145
- data["CFBundleVersion"] = next_build_number
129
+ data["CFBundleVersion"] = DateTime.now.strftime("%Y-%m-%d %k:%M")
146
130
 
147
131
  # recreate the plist and save it
148
132
  plist.value = CFPropertyList.guess(data)
149
133
  plist.save(info_plist_path, CFPropertyList::List::FORMAT_XML)
150
134
  end
151
135
 
136
+
137
+
138
+ def ipa_name
139
+ prefix = app_name == nil ? target : app_name
140
+ "#{prefix}#{built_app_long_version_suffix}.ipa"
141
+ end
142
+
152
143
  def built_app_long_version_suffix
153
144
  if build_number == nil then
154
145
  ""
@@ -156,50 +147,17 @@ module XcodeBuilder
156
147
  "-#{build_number}"
157
148
  end
158
149
  end
159
-
160
- def ipa_name
161
- prefix = app_name == nil ? target : app_name
162
- "#{prefix}#{built_app_long_version_suffix}.ipa"
163
- end
164
150
 
165
151
  def built_app_path
166
- sdk_extension = if sdk.eql? "macosx" then "" else "-#{sdk}" end
167
- if build_dir == :derived
168
- File.join("#{derived_build_dir}", "#{configuration}#{sdk_extension}", "#{app_file_name}")
169
- else
170
- File.join("#{build_dir}", "#{configuration}#{sdk_extension}", "#{app_file_name}")
171
- end
172
- end
173
-
174
- def built_dsym_path
175
- "#{built_app_path}.dSYM"
176
- end
177
-
178
- def derived_build_dir
179
- workspace_name = Pathname.new(workspace_file_path).basename.to_s.split(".")[0]
180
- for dir in Dir[File.join(File.expand_path("~/Library/Developer/Xcode/DerivedData"), "#{workspace_name}-*")]
181
- return "#{dir}/Build/Products" if File.read( File.join(dir, "info.plist") ).match workspace_file_path
182
- end
183
- end
184
-
185
- def zipped_package_name
186
- "#{app_name}#{built_app_long_version_suffix}.zip"
152
+ File.join("#{build_dir}", "#{configuration}-iphoneos", "#{app_file_name}")
187
153
  end
188
154
 
189
155
  def ipa_path
190
156
  File.join(File.expand_path(package_destination_path), ipa_name)
191
157
  end
192
158
 
193
- def dsym_name
194
- "#{app_name}#{built_app_long_version_suffix}.dSYM.zip"
195
- end
196
-
197
- def dsym_path
198
- File.join(File.expand_path(package_destination_path), dsym_name)
199
- end
200
-
201
159
  def app_bundle_path
202
- "#{package_destination_path}/#{app_name}.#{app_extension}"
160
+ "#{package_destination_path}/#{app_name}.app"
203
161
  end
204
162
 
205
163
  def deploy_using(strategy_name, &block)
@@ -29,11 +29,9 @@ module XcodeBuilder
29
29
  private
30
30
 
31
31
  def self.strategies
32
- {:scp => SCP, :testflight => TestFlight, :web => Web}
32
+ {:testflight => TestFlight}
33
33
  end
34
34
  end
35
35
  end
36
36
 
37
- require File.dirname(__FILE__) + '/deployment_strategies/scp'
38
37
  require File.dirname(__FILE__) + '/deployment_strategies/testflight'
39
- require File.dirname(__FILE__) + '/deployment_strategies/web'
@@ -30,20 +30,6 @@ module XcodeBuilder
30
30
  :replace => @configuration.replace || false
31
31
  }
32
32
 
33
- if @configuration.upload_dsym then
34
- payload[:dsym] = File.new(@configuration.dsym_path, 'rb')
35
- end
36
-
37
- if @configuration.verbose
38
- puts "ipa path: #{@configuration.ipa_path}"
39
- puts "release notes: #{release_notes}"
40
- end
41
-
42
- if @configuration.dry_run
43
- puts '** Dry Run - No action here! **'
44
- return
45
- end
46
-
47
33
  print "Uploading build to TestFlight..."
48
34
 
49
35
  statusCode = 0
@@ -76,22 +76,7 @@ module XcodeBuilder
76
76
  puts "Done"
77
77
  end
78
78
 
79
- def prepare_for_next_release
80
- build_number = @configuration.build_number
81
- next_build_number = @configuration.next_build_number
82
-
83
- raise "build number cannot be empty on release" unless (build_number != nil) && (!build_number.empty?)
84
-
85
- # increment the build number
86
- @configuration.increment_plist_number
87
-
88
- print "Committing #{@configuration.info_plist} with version #{next_build_number}"
89
79
 
90
- stage_files [@configuration.info_plist]
91
- commit_and_push_with_message "[Xcodebuilder] Releasing build #{build_number}"
92
-
93
- puts "Done"
94
- end
95
80
 
96
81
  def stage_files files
97
82
  cmd = []
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcodebuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.23
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olivier Larivain
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-07 00:00:00.000000000 Z
11
+ date: 2014-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: CFPropertyList
@@ -109,9 +109,7 @@ files:
109
109
  - README.md
110
110
  - lib/xcode_builder/build_output_parser.rb
111
111
  - lib/xcode_builder/configuration.rb
112
- - lib/xcode_builder/deployment_strategies/scp.rb
113
112
  - lib/xcode_builder/deployment_strategies/testflight.rb
114
- - lib/xcode_builder/deployment_strategies/web.rb
115
113
  - lib/xcode_builder/deployment_strategies.rb
116
114
  - lib/xcode_builder/release_strategies/git.rb
117
115
  - lib/xcode_builder/release_strategies.rb
@@ -1,104 +0,0 @@
1
- module XcodeBuilder
2
- module DeploymentStrategies
3
- class SCP < Strategy
4
- def extended_configuration_for_strategy
5
- proc do
6
- def deployment_url
7
- File.join(deploy_to, ipa_name)
8
- end
9
-
10
- def manifest_url
11
- File.join(deploy_to, "manifest.plist")
12
- end
13
-
14
- def remote_installation_path
15
- File.join(remote_directory)
16
- end
17
- end
18
- end
19
-
20
- def prepare
21
- plist = CFPropertyList::List.new(:file => "#{@configuration.built_app_path}/Info.plist")
22
- plist_data = CFPropertyList.native_types(plist.value)
23
- File.open("pkg/dist/manifest.plist", "w") do |io|
24
- io << %{<?xml version="1.0" encoding="UTF-8"?>
25
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
26
- <plist version="1.0">
27
- <dict>
28
- <key>items</key>
29
- <array>
30
- <dict>
31
- <key>assets</key>
32
- <array>
33
- <dict>
34
- <key>kind</key>
35
- <string>software-package</string>
36
- <key>url</key>
37
- <string>#{@configuration.deployment_url}</string>
38
- </dict>
39
- </array>
40
- <key>metadata</key>
41
- <dict>
42
- <key>bundle-identifier</key>
43
- <string>#{plist_data['CFBundleIdentifier']}</string>
44
- <key>bundle-version</key>
45
- <string>#{plist_data['CFBundleVersion']}</string>
46
- <key>kind</key>
47
- <string>software</string>
48
- <key>title</key>
49
- <string>#{plist_data['CFBundleDisplayName']}</string>
50
- </dict>
51
- </dict>
52
- </array>
53
- </dict>
54
- </plist>
55
- }
56
- end
57
- File.open("pkg/dist/index.html", "w") do |io|
58
- io << %{<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
59
- <html xmlns="http://www.w3.org/1999/xhtml">
60
- <head>
61
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
62
- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
63
- <title>Beta Download</title>
64
- <style type="text/css">
65
- body {background:#fff;margin:0;padding:0;font-family:arial,helvetica,sans-serif;text-align:center;padding:10px;color:#333;font-size:16px;}
66
- #container {width:300px;margin:0 auto;}
67
- h1 {margin:0;padding:0;font-size:14px;}
68
- p {font-size:13px;}
69
- .link {background:#ecf5ff;border-top:1px solid #fff;border:1px solid #dfebf8;margin-top:.5em;padding:.3em;}
70
- .link a {text-decoration:none;font-size:15px;display:block;color:#069;}
71
- </style>
72
- </head>
73
- <body>
74
- <div id="container">
75
- <div class="link"><a href="itms-services://?action=download-manifest&url=#{@configuration.manifest_url}">Tap Here to Install<br />#{@configuration.target} #{plist_data['CFBundleVersion']}<br />On Your Device</a></div>
76
- <p><strong>Link didn't work?</strong><br />
77
- Make sure you're visiting this page on your device, not your computer.</p>
78
- </div>
79
- </body>
80
- </html>
81
- }
82
- end
83
- end
84
-
85
- def deploy
86
- cmd = []
87
-
88
- cmd.push "scp"
89
-
90
- if @configuration.remote_port
91
- cmd.push "-P #{@configuration.remote_port}"
92
- end
93
-
94
- cmd.push "pkg/dist/*"
95
- cmd.push "#{@configuration.remote_host}:#{@configuration.remote_installation_path}"
96
-
97
- cmd = cmd.join(" ")
98
-
99
- puts "* Running `#{cmd}`"
100
- system(cmd)
101
- end
102
- end
103
- end
104
- end
@@ -1,34 +0,0 @@
1
- require 'rest_client'
2
- require 'json'
3
- require 'fileutils'
4
-
5
- module XcodeBuilder
6
- module DeploymentStrategies
7
- class Web < Strategy
8
-
9
- def prepare
10
- puts "Nothing to prepare!" if @configuration.verbose
11
- end
12
-
13
- def deploy
14
- puts "Deploying to the web server : '#{@configuration.server_url}'"
15
-
16
- payload = {
17
- :ipa_file => File.new(@configuration.ipa_path, 'rb'),
18
- }
19
- statusCode = 0
20
- begin
21
- response = RestClient::Request.new(:method => :post, :url => "#{@configuration.server_url}", :user => "#{@configuration.server_user}", :password => "#{@configuration.server_password}", :payload => payload).execute
22
- statusCode = response.code
23
- rescue => e
24
- puts "Web upload failed with exception:\n#{e}Response\n#{e.response}"
25
- end
26
- if (statusCode == 200) || (statusCode == 201)
27
- puts "Web upload completed"
28
- else
29
- puts "Web upload failed"
30
- end
31
- end
32
- end
33
- end
34
- end