betabuilder 0.7.3 → 0.7.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 0.7.4.1
2
+ * Allow auto-archiving from other Rake namespaces (@victor)
3
+ * Fixed bug with Xcode archive sharing (@victor)
4
+ * Fall back on CFBundleVersion if CFBundleVersionShortString is not set (@subdigital)
5
+ * Added verbose and dry run options to the TestFlight deployment strategy (@subdigital)
6
+ * Defer dynamic release note generation until runtime (@subdigital)
7
+ * Allow architectures to be configured (@subdigital)
8
+ * Fix detection of build directories containing spaces
9
+
10
+ # 0.7.4
11
+ * YANKED
12
+
1
13
  ## 0.7.3
2
14
  * Made the Xcode derived data directory more robust by grepping for the Validate line in the log.
3
15
 
@@ -18,31 +18,42 @@ module BetaBuilder
18
18
  :workspace_path => nil,
19
19
  :scheme => nil,
20
20
  :app_name => nil,
21
+ :arch => nil,
21
22
  :xcode4_archive_mode => false,
22
- :skip_clean => false
23
+ :skip_clean => false,
24
+ :verbose => false,
25
+ :dry_run => false
23
26
  )
24
27
  @namespace = namespace
25
28
  yield @configuration if block_given?
26
29
  define
27
30
  end
28
-
31
+
29
32
  def xcodebuild(*args)
30
33
  # we're using tee as we still want to see our build output on screen
31
34
  system("#{@configuration.xcodebuild_path} #{args.join(" ")} | tee build.output")
32
35
  end
33
-
36
+
34
37
  class Configuration < OpenStruct
38
+ def release_notes_text
39
+ return release_notes.call if release_notes.is_a? Proc
40
+ release_notes
41
+ end
35
42
  def build_arguments
43
+ args = ""
36
44
  if workspace_path
37
45
  raise "A scheme is required if building from a workspace" unless scheme
38
- "-workspace '#{workspace_path}' -scheme '#{scheme}' -configuration '#{configuration}'"
46
+ args << "-workspace '#{workspace_path}' -scheme '#{scheme}' -configuration '#{configuration}'"
39
47
  else
40
48
  args = "-target '#{target}' -configuration '#{configuration}' -sdk iphoneos"
41
49
  args << " -project #{project_file_path}" if project_file_path
42
- args
43
50
  end
51
+
52
+ args << " -arch \"#{arch}\"" unless arch.nil?
53
+
54
+ args
44
55
  end
45
-
56
+
46
57
  def archive_name
47
58
  app_name || target
48
59
  end
@@ -76,7 +87,12 @@ module BetaBuilder
76
87
  output = File.read("build.output")
77
88
 
78
89
  # yes, this is truly horrible, but unless somebody else can find a better way...
79
- reference = output.split("\n").grep(/^Validate(.*)\/Xcode\/DerivedData\/(.*)-(.*)/).first.split(" ").last
90
+ found = output.split("\n").grep(/^Validate(.*)\/Xcode\/DerivedData\/(.*)-(.*)/).first
91
+ if found && found =~ /Validate \"(.*)\"/
92
+ reference = $1
93
+ else
94
+ raise "Cannot parse build_dir from build output."
95
+ end
80
96
  derived_data_directory = reference.split("/Build/Products/").first
81
97
  "#{derived_data_directory}/Build/Products/"
82
98
  end
@@ -121,7 +137,7 @@ module BetaBuilder
121
137
  desc "Package the beta release as an IPA file"
122
138
  task :package => :build do
123
139
  if @configuration.auto_archive
124
- Rake::Task['beta:archive'].invoke
140
+ Rake::Task["#{@namespace}:archive"].invoke
125
141
  end
126
142
 
127
143
  FileUtils.rm_rf('pkg') && FileUtils.mkdir_p('pkg')
@@ -70,15 +70,16 @@ module BetaBuilder
70
70
  private
71
71
 
72
72
  def write_plist_to(path)
73
+ version = metadata["CFBundleShortVersionString"] || metadata["CFBundleVersion"]
73
74
  plist = {
74
75
  "ApplicationProperties" => {
75
- "ApplicationPath" => File.join("Applications", "#{@configuration.app_file_name}.app"),
76
+ "ApplicationPath" => File.join("Applications", @configuration.app_file_name),
76
77
  "CFBundleIdentifier" => metadata["CFBundleIdentifier"],
77
- "CFBundleShortVersionString" => metadata["CFBundleShortVersionString"],
78
+ "CFBundleShortVersionString" => version,
78
79
  "IconPaths" => metadata["CFBundleIconFiles"].map { |file| File.join("Applications", @configuration.app_file_name, file) }
79
80
  },
80
81
  "ArchiveVersion" => 1.0,
81
- "Comment" => @configuration.release_notes,
82
+ "Comment" => @configuration.release_notes_text,
82
83
  "CreationDate" => Time.now,
83
84
  "Name" => @configuration.archive_name,
84
85
  "SchemeName" => @configuration.scheme
@@ -11,21 +11,31 @@ module BetaBuilder
11
11
  def extended_configuration_for_strategy
12
12
  proc do
13
13
  def generate_release_notes(&block)
14
- self.release_notes = yield if block_given?
14
+ self.release_notes = block if block
15
15
  end
16
16
  end
17
17
  end
18
18
 
19
19
  def deploy
20
+ release_notes = get_notes
20
21
  payload = {
21
22
  :api_token => @configuration.api_token,
22
23
  :team_token => @configuration.team_token,
23
24
  :file => File.new(@configuration.ipa_path, 'rb'),
24
- :notes => get_notes,
25
+ :notes => release_notes,
25
26
  :distribution_lists => (@configuration.distribution_lists || []).join(","),
26
27
  :notify => @configuration.notify || false
27
28
  }
28
29
  puts "Uploading build to TestFlight..."
30
+ if @configuration.verbose
31
+ puts "ipa path: #{@configuration.ipa_path}"
32
+ puts "release notes: #{release_notes}"
33
+ end
34
+
35
+ if @configuration.dry_run
36
+ puts '** Dry Run - No action here! **'
37
+ return
38
+ end
29
39
 
30
40
  begin
31
41
  response = RestClient.post(ENDPOINT, payload, :accept => :json)
@@ -43,7 +53,8 @@ module BetaBuilder
43
53
  private
44
54
 
45
55
  def get_notes
46
- @configuration.release_notes || get_notes_using_editor || get_notes_using_prompt
56
+ notes = @configuration.release_notes_text
57
+ notes || get_notes_using_editor || get_notes_using_prompt
47
58
  end
48
59
 
49
60
  def get_notes_using_editor
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: betabuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-05 00:00:00.000000000 +01:00
13
- default_executable:
12
+ date: 2011-11-16 00:00:00.000000000Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: CFPropertyList
17
- requirement: &2168703340 !ruby/object:Gem::Requirement
16
+ requirement: &2153611800 !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ~>
@@ -22,10 +21,10 @@ dependencies:
22
21
  version: 2.0.0
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *2168703340
24
+ version_requirements: *2153611800
26
25
  - !ruby/object:Gem::Dependency
27
26
  name: uuid
28
- requirement: &2168702700 !ruby/object:Gem::Requirement
27
+ requirement: &2153611260 !ruby/object:Gem::Requirement
29
28
  none: false
30
29
  requirements:
31
30
  - - ~>
@@ -33,10 +32,10 @@ dependencies:
33
32
  version: 2.3.1
34
33
  type: :runtime
35
34
  prerelease: false
36
- version_requirements: *2168702700
35
+ version_requirements: *2153611260
37
36
  - !ruby/object:Gem::Dependency
38
37
  name: rest-client
39
- requirement: &2168687560 !ruby/object:Gem::Requirement
38
+ requirement: &2153610720 !ruby/object:Gem::Requirement
40
39
  none: false
41
40
  requirements:
42
41
  - - ~>
@@ -44,10 +43,10 @@ dependencies:
44
43
  version: 1.6.1
45
44
  type: :runtime
46
45
  prerelease: false
47
- version_requirements: *2168687560
46
+ version_requirements: *2153610720
48
47
  - !ruby/object:Gem::Dependency
49
48
  name: json
50
- requirement: &2168685620 !ruby/object:Gem::Requirement
49
+ requirement: &2153610200 !ruby/object:Gem::Requirement
51
50
  none: false
52
51
  requirements:
53
52
  - - ~>
@@ -55,7 +54,7 @@ dependencies:
55
54
  version: 1.4.6
56
55
  type: :runtime
57
56
  prerelease: false
58
- version_requirements: *2168685620
57
+ version_requirements: *2153610200
59
58
  description:
60
59
  email: luke@lukeredpath.co.uk
61
60
  executables: []
@@ -74,7 +73,6 @@ files:
74
73
  - lib/beta_builder/deployment_strategies.rb
75
74
  - lib/beta_builder.rb
76
75
  - lib/betabuilder.rb
77
- has_rdoc: true
78
76
  homepage: http://github.com/lukeredpath/betabuilder
79
77
  licenses: []
80
78
  post_install_message:
@@ -97,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
95
  version: '0'
98
96
  requirements: []
99
97
  rubyforge_project:
100
- rubygems_version: 1.6.2
98
+ rubygems_version: 1.8.11
101
99
  signing_key:
102
100
  specification_version: 3
103
101
  summary: A set of Rake tasks and utilities for managing iOS ad-hoc builds