xcodebuilder 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
data/lib/xcode_builder.rb CHANGED
@@ -175,6 +175,7 @@ module XcodeBuilder
175
175
 
176
176
  # back to working directory
177
177
  Dir.chdir current_dir
178
+ puts "Done."
178
179
  end
179
180
 
180
181
  # desc "Packages the final artifact (IPA + dSYM)"
@@ -196,7 +197,6 @@ module XcodeBuilder
196
197
  system cmd.join " "
197
198
 
198
199
  # delete all the artifacts but the .app. which will be needed by the automation builds
199
- puts "the paaaaath #{@configuration.dsym_name}"
200
200
  FileUtils.rm_rf @configuration.dsym_name unless !File.exists? @configuration.dsym_name
201
201
  FileUtils.rm_rf @configuration.ipa_name unless !File.exists? @configuration.ipa_name
202
202
 
@@ -216,16 +216,18 @@ module XcodeBuilder
216
216
  pod_dry_run
217
217
 
218
218
  # tag source as needed
219
- @configuration.release_strategy.tag_current_version
219
+ if @configuration.release_strategy != nil then
220
+ @configuration.release_strategy.tag_current_version
221
+ end
220
222
 
221
223
  # and push pod pod
222
224
  push_pod
223
225
 
224
- # increment version numbers
225
- if increment_pod_and_plist_number then
226
- # and push appropriately
226
+ # ask release strategy to bump the release number
227
+ if @configuration.release_strategy != nil then
227
228
  @configuration.release_strategy.prepare_for_next_pod_release
228
229
  end
230
+ puts "Pod successfully released"
229
231
  end
230
232
 
231
233
  # runs a pod dry run before tagging
@@ -251,26 +253,6 @@ module XcodeBuilder
251
253
  puts "Done."
252
254
  end
253
255
 
254
- def increment_pod_and_plist_number
255
- old_build_number = @configuration.build_number
256
- if !prepare_for_next_release then
257
- return false
258
- end
259
-
260
- # bump the spec version and save it
261
- spec_content = File.open(@configuration.podspec_file, "r").read
262
- old_version = "version = '#{old_build_number}'"
263
- new_version = "version = '#{@configuration.build_number}'"
264
-
265
- spec_content = spec_content.sub old_version, new_version
266
-
267
- File.open(@configuration.podspec_file, "w") {|f|
268
- f.write spec_content
269
- }
270
-
271
- true
272
- end
273
-
274
256
  def deploy
275
257
  package
276
258
  @configuration.deployment_strategy.deploy
@@ -290,35 +272,10 @@ module XcodeBuilder
290
272
  @configuration.release_strategy.tag_current_version
291
273
  end
292
274
 
293
- if prepare_for_next_release then
275
+ if @configuration.release_strategy != nil then
294
276
  @configuration.release_strategy.prepare_for_next_release
295
277
  end
296
- end
297
-
298
- def prepare_for_next_release
299
- if !@configuration.increment_plist_version then
300
- return false
301
- end
302
-
303
- next_build_number = @configuration.next_build_number
304
- if next_build_number == nil then
305
- return false
306
- end
307
-
308
- print "Updating #{@configuration.info_plist} to version #{next_build_number}"
309
-
310
- # read the plist and extract data
311
- plist = CFPropertyList::List.new(:file => @configuration.info_plist_path)
312
- data = CFPropertyList.native_types(plist.value)
313
-
314
- # re inject new version number into the data
315
- data["CFBundleVersion"] = next_build_number
316
-
317
- # recreate the plist and save it
318
- plist.value = CFPropertyList.guess(data)
319
- plist.save(@configuration.info_plist_path, CFPropertyList::List::FORMAT_XML)
320
- puts "Done"
321
- return true
278
+ puts "App successfully released"
322
279
  end
323
280
  end
324
281
  end
@@ -60,6 +60,12 @@ module XcodeBuilder
60
60
  end
61
61
 
62
62
  def build_number
63
+ # we have a podspec file, so try to get the version out of that
64
+ if (podspec_file != nil) && (File.exists? podspec_file) then
65
+ # get hte version out of the pod file
66
+ return build_number_from_podspec
67
+ end
68
+
63
69
  # no plist is found, return a nil version
64
70
  if (info_plist_path == nil) || (!File.exists? info_plist_path) then
65
71
  return nil
@@ -71,6 +77,18 @@ module XcodeBuilder
71
77
  data["CFBundleVersion"]
72
78
  end
73
79
 
80
+ def build_number_from_podspec
81
+ file = File.open(podspec_file, "r")
82
+ begin
83
+ version_line = file.gets
84
+ end while version_line.eql? "\n"
85
+
86
+ if match = version_line.match(/\s*version\s*=\s*["'](.*)["']\s*/i)
87
+ version = match.captures
88
+ end
89
+ return version[0]
90
+ end
91
+
74
92
  def next_build_number
75
93
  # if we don't have a current version, we don't have a next version :)
76
94
  if build_number == nil then
@@ -84,6 +102,54 @@ module XcodeBuilder
84
102
  version_components.join "."
85
103
  end
86
104
 
105
+ def increment_pod_number
106
+ if !increment_plist_version then
107
+ return false
108
+ end
109
+
110
+ if podspec_file == nil then
111
+ return false
112
+ end
113
+
114
+ # keep the old build number around
115
+ old_build_number = build_number
116
+
117
+ # bump the spec version and save it
118
+ spec_content = File.open(podspec_file, "r").read
119
+ old_version = "version = '#{old_build_number}'"
120
+ new_version = "version = '#{next_build_number}'"
121
+
122
+ spec_content = spec_content.sub old_version, new_version
123
+
124
+ File.open(podspec_file, "w") {|f|
125
+ f.write spec_content
126
+ }
127
+
128
+ true
129
+ end
130
+
131
+ def increment_plist_number
132
+ if !increment_plist_version then
133
+ puts "increment is false"
134
+ return false
135
+ end
136
+
137
+ if info_plist == nil then
138
+ return false
139
+ end
140
+
141
+ # read the plist and extract data
142
+ plist = CFPropertyList::List.new(:file => info_plist_path)
143
+ data = CFPropertyList.native_types(plist.value)
144
+
145
+ # re inject new version number into the data
146
+ data["CFBundleVersion"] = next_build_number
147
+
148
+ # recreate the plist and save it
149
+ plist.value = CFPropertyList.guess(data)
150
+ plist.save(info_plist_path, CFPropertyList::List::FORMAT_XML)
151
+ end
152
+
87
153
  def built_app_long_version_suffix
88
154
  if build_number == nil then
89
155
  ""
@@ -54,21 +54,31 @@ module XcodeBuilder
54
54
 
55
55
  def prepare_for_next_pod_release
56
56
  build_number = @configuration.build_number
57
+ next_build_number = @configuration.next_build_number
58
+
57
59
  raise "build number cannot be empty on release" unless (build_number != nil) && (!build_number.empty?)
58
60
 
61
+ # increment the build number
62
+ @configuration.increment_pod_number
63
+
64
+ # commit
59
65
  print "Committing #{@configuration.info_plist} and #{@configuration.podspec_file} with version #{build_number}"
60
-
61
66
  stage_files [@configuration.info_plist, @configuration.podspec_file]
62
- commit_and_push_with_message "Preparing for next pod release..."
67
+ commit_and_push_with_message "Preparing for next pod release #{next_build_number}..."
63
68
 
64
69
  puts "Done"
65
70
  end
66
71
 
67
72
  def prepare_for_next_release
68
73
  build_number = @configuration.build_number
74
+ next_build_number = @configuration.next_build_number
75
+
69
76
  raise "build number cannot be empty on release" unless (build_number != nil) && (!build_number.empty?)
70
77
 
71
- print "Committing #{@configuration.info_plist} with version #{build_number}"
78
+ # increment the build number
79
+ @configuration.increment_plist_number
80
+
81
+ print "Committing #{@configuration.info_plist} with version #{next_build_number}"
72
82
 
73
83
  stage_files [@configuration.info_plist]
74
84
  commit_and_push_with_message "[Xcodebuilder] Releasing build #{build_number}"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcodebuilder
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 14
10
- version: 0.0.14
9
+ - 15
10
+ version: 0.0.15
11
11
  platform: ruby
12
12
  authors:
13
13
  - Olivier Larivain