betabuilder 0.7.3 → 0.7.4.1

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.
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