testflight 0.1.5 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 68d832ec0989a3ae7b1b3775d2c04e9676ea36e3
4
+ data.tar.gz: e76b82525992abdef89dc77c42b3148ccbe94a6a
5
+ SHA512:
6
+ metadata.gz: 33b548b785b57ebc71db62d67ab72ffc8b9d74dbf7f3ee91f7e6b7bac213ad06b29e8c8129b4d99caabc33606201563bb69182f7f8b24679e9eb9d90425583f3
7
+ data.tar.gz: 059043814ffbdb73b35892b3cb37b929748449f00ec1b318ce76dae2e2a4605b1b918aa6d50d7f0e19af13309159c8282eee7d4f0d8c8f224c8af4498788427f
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 Michael Berkovich
1
+ Copyright (c) 2013 Michael Berkovich, mobtouch.com
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -17,4 +17,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
17
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
18
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
19
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc CHANGED
@@ -1,23 +1,45 @@
1
+ \----------------------------------\
2
+ \ \ __
3
+ \ The best way to build and \ | \
4
+ > deploy your iOS apps to: >------| \ ______
5
+ / www.testflightapp.com / --- \_____/**|_|_\____ |
6
+ / / \_______ --------- __>-}
7
+ /----------------------------------/ / \_____|_____/ |
8
+ * |
9
+ {O}
10
+
11
+
12
+
13
+ /*\ /*\ /*\ /*\ /*\ /*\ /*\
14
+ |***| |***| |***| |***| |***| |***| |***|
15
+ \*/ \*/ ____ \*/ \*/ \*/ \*/ \*/
16
+ | | | | | | | | |
17
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
18
+ art by Denis Rabusseau, rabussea@jack.greco-prog.fr
19
+
20
+
1
21
  = Introduction
2
22
 
3
- If you are an iOS developer, like me, you probably have dealt with the tedious
4
- tasks of manually building, packaging, tagging, commiting and deploying your
5
- iOS applications to testflightapp.com. You are probably wondering if there is a better way to do so.
23
+ If you ever developed an iOS app, you most likely had to deal with the tedious tasks of manually building, packaging,
24
+ checking in, tagging, and distributing your iOS application to your testers through testflightapp.com.
25
+
26
+ If you haven't, i would highly recommend you do this, at least once, manually! Then you would truly be able to appreciate this gem.
27
+
6
28
 
7
- Well, you are absolutely right! This gem is going to make your life much easier. Here is what it does:
29
+ This gem is going to make your life much easier, hopefully. Here is what it does:
8
30
 
9
- 1. Reads your XCode project info file to get your app version and build number
10
- 2. Commits all your changes to the git repository
31
+ 1. Reads your Xcode project file to determine your app version and build number
32
+ 2. Optionally, commits all your changes to the git repository (by, first, asking you about what has changed)
11
33
  3. Builds your project (or workspace)
12
34
  4. Packages your application into an IPA file
13
35
  5. Uploads the IPA file to testflightapp.com
14
- 6. Tags your project with the version and build
15
- 7. Increments your app build number and commits it to the repo
36
+ 6. Optinally, tags your project with the version and the build
37
+ 7. Optionally, increments your app build number and commits it to the repo
16
38
  8. Keeps a log of all your deployments to testflightapp.com in a FLIGHTLOG file
17
39
 
18
40
  All that with a simple command:
19
41
 
20
- $ testflight takeoff
42
+ $ testflight takeoff
21
43
 
22
44
 
23
45
 
@@ -25,35 +47,102 @@ $ testflight takeoff
25
47
 
26
48
  gem install testflight
27
49
 
50
+ if you are using rbenv, you might need to run:
51
+
52
+ $ rbenv rehash
53
+
28
54
 
29
55
  = Configuration
56
+
57
+
58
+
59
+ _______
60
+ \=====/
61
+ |||
62
+ #
63
+ |
64
+ ---------------------------
65
+ | www.testflightapp.com |
66
+ ---------------------------
67
+ \ | | /
68
+ \ | | /
69
+ \ | | /
70
+ \ | | /
71
+ ###################
72
+ || ||
73
+ || ||
74
+ || ||
75
+ || ||
76
+ || ||
77
+ || || ___
78
+ || || | \______________
79
+ || #### || ====( oooooooooo O\__
80
+ || # # || (________/=====>______)--
81
+ || # # || OO O
82
+ --------------------------------------------------------------------------------
83
+
84
+
30
85
 
31
86
  To setup your project with the deployment script, run the following command from within your Xcode project folder:
32
87
 
33
88
  $ testflight checkin
34
89
 
35
- This command will ask you a few questions about your project. If you don't like being asked questions and prefer to configure your project manually, just create a .tesflight file in your Xcode project folder and provide the following information:
90
+ This command will ask you a few questions about your project, which will result in creation of .tesflight file in your project folder.
91
+
92
+ If you don't like being asked questions and prefer to configure your project manually, just create a .tesflight file yourself and provide the following information:
36
93
 
37
94
  build:
38
- developer_name: # This must be your company name or your name as it appears in your .cer from Apple
39
- increment_bundle: true # If you want each deployment to increment your build number
95
+ developer_name: "My Company Inc" # Must match your company name as it appears in your .cer from Apple
96
+ increment_bundle: true # Increments your build number
97
+ architecture: armv7
98
+ configuration: Release # In Xcode 5, it must be set to Release
99
+ sdk: iphoneos
40
100
  git:
41
- commit_changes: true # if you are using git and would like to push changes before each build
42
- tag_build: true # will tag each build in git
101
+ commit_changes: true # If you want to commit changes before each build
102
+ tag_build: true # Will tag each build in git
43
103
  testflight:
44
- api_token: # Get it from https://testflightapp.com/account/#api
45
- team_token: # Get it from https://testflightapp.com/dashboard/team/edit/
46
- distribution_lists: ["Internal", "Everyone"] # Configure your distribution lists at https://testflightapp.com
104
+ api_token: "abcdefghijklmnop" # Get it from https://testflightapp.com/account/#api
105
+ team_token: "abcdefghijklmnop" # Get it from https://testflightapp.com/dashboard/team/edit/
106
+ distribution_lists: ["Developers", "Testers", "Everyone"] # Configure your lists at https://testflightapp.com
47
107
 
48
108
 
49
109
  = Execution
50
110
 
51
- Once you have checked in (you only need to do it once per project), you are ready for takeoff. Go to your project folder and simply type:
111
+ Once you have checked in (which is done only once per project), you are ready for takeoff.
112
+
113
+ Go to your project folder and simply type:
52
114
 
53
115
  $ testflight takeoff
54
116
 
55
117
  Have a safe flight!
56
118
 
119
+
120
+ ___.----.____
121
+ __,--(_,-' ,-'
122
+ _,-' ,-'
123
+ _,-' () ,-'
124
+ ,-' () ,-'
125
+ ,-' () ,-'
126
+ ,-' __..--'' ,-'
127
+ ,-'.--'' ,-' ,-'
128
+ |\ __..--'' ,-' ,-':
129
+ | \__..--'' ______ ,-' _,-' :
130
+ __..--'' ,-'\_____/-' _,-' :
131
+ __..--'' ,-' ,-' ,-' _,-'____/ :
132
+ `---...___ ,-' ,-' ,-' _,-' _,-' :
133
+ ``````-,-' ,-' ,-' _,-' _,-' :
134
+ \,-'___,-'--''___,-'-...___ :
135
+ ```---..:
136
+
137
+
138
+
139
+
140
+
141
+
142
+ = Authors
143
+
144
+ Michael Berkovich
145
+
57
146
 
58
147
  = Contribution
59
148
 
@@ -1,8 +1,10 @@
1
1
  build:
2
2
  developer_name: "<%= @company_name %>"
3
3
  increment_bundle: <%= @should_increment_bundle == true %>
4
+ architecture: <%= @architecture %>
5
+ configuration: <%= @configuration %>
4
6
  sdk: <%= @sdk %>
5
- git:
7
+ git:
6
8
  commit_changes: <%= @should_commit_changes == true %>
7
9
  tag_build: <%= @should_tag_build == true %>
8
10
  testflight:
@@ -21,7 +21,6 @@
21
21
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
  #++
23
23
 
24
- require 'appscript'
25
24
  require 'yaml'
26
25
 
27
26
  module Testflight
@@ -31,8 +30,6 @@ module Testflight
31
30
  XCODE_PACKAGER = "/usr/bin/xcrun"
32
31
  TESTFLIGHT_ENDPOINT = "http://testflightapp.com/api/builds.json"
33
32
 
34
- include Appscript
35
-
36
33
  def initialize(opts = {})
37
34
  t0 = Time.now
38
35
 
@@ -48,6 +45,7 @@ module Testflight
48
45
  build_workspace(opts)
49
46
  package_workspace(opts)
50
47
  else
48
+ clean_project(opts)
51
49
  build_project(opts)
52
50
  package_project(opts)
53
51
  end
@@ -65,7 +63,7 @@ module Testflight
65
63
 
66
64
  t1 = Time.now
67
65
 
68
- puts("Build took #{t1-t0} seconds.")
66
+ puts("\n\nBuild took #{t1-t0} seconds.")
69
67
  end
70
68
 
71
69
  ####################################################################################
@@ -82,10 +80,20 @@ module Testflight
82
80
  execute(cmd, opts)
83
81
  end
84
82
 
83
+ def clean_project(opts = {})
84
+ cmd = "#{XCODE_BUILDER} -project '#{Testflight::Config.application_name}.xcodeproj' "
85
+ cmd << "-configuration '#{Testflight::Config.configuration}' "
86
+ cmd << "-alltargets clean "
87
+ execute(cmd, opts)
88
+ end
89
+
85
90
  def build_project(opts = {})
86
- cmd = "#{XCODE_BUILDER} -target '#{Testflight::Config.application_name}' "
87
- cmd << "-sdk 'iphoneos6.0' "
88
- cmd << "-configuration 'AdHoc' "
91
+ cmd = "#{XCODE_BUILDER} -project '#{Testflight::Config.application_name}.xcodeproj' "
92
+ cmd << "-arch #{Testflight::Config.architecture} "
93
+ cmd << "-target '#{Testflight::Config.application_name}' "
94
+ cmd << "-configuration '#{Testflight::Config.configuration}' "
95
+ cmd << "-sdk '#{Testflight::Config.sdk}' "
96
+ cmd << "build VALID_ARCHS='#{Testflight::Config.architecture}' "
89
97
  execute(cmd, opts)
90
98
  end
91
99
 
@@ -104,7 +112,7 @@ module Testflight
104
112
 
105
113
  def package_project(opts = {})
106
114
  cmd = "#{XCODE_PACKAGER} -sdk iphoneos PackageApplication "
107
- cmd << "-v '#{Testflight::Config.build_dir}/AdHoc-iphoneos/#{Testflight::Config.application_name}.app' "
115
+ cmd << "-v '#{Testflight::Config.build_dir}/Release-iphoneos/#{Testflight::Config.application_name}.app' "
108
116
  cmd << "-o '#{Testflight::Config.distribution_file}' "
109
117
  cmd << "--sign '#{Testflight::Config.developer_name}' "
110
118
  cmd << "--embed '#{Testflight::Config.provisioning_dir}/#{Testflight::Config.ad_hoc_provisioning_name}'"
@@ -203,9 +211,8 @@ module Testflight
203
211
  return if opts[:ignore_result]
204
212
 
205
213
  unless result
206
- puts("Build failed.")
207
- exit 1
208
- end
214
+ raise "Build failed"
215
+ end
209
216
  end
210
217
 
211
218
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2012 Michael Berkovich
2
+ # Copyright (c) 2013 Michael Berkovich
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -34,51 +34,73 @@ module Testflight
34
34
  end
35
35
 
36
36
  map 'c' => :checkin
37
- map 't' => :takeoff
38
-
39
- desc 'checkin', 'Initializes project configuration file and prepares you for takeoff'
37
+ desc 'checkin', 'Initializes your project configuration file and prepares it for takeoff'
40
38
  def checkin
41
39
  return unless is_project_folder?
42
40
 
43
- say("\r\nConfiguring #{Testflight::Config.application_name} #{Testflight::Config.type} for deployment to testflightapp.com...")
41
+ say("\n\n")
42
+ say(" \n")
43
+ say(" TEST FLIGHT CHECK-IN \n")
44
+ say(" \n")
45
+ say(" \n")
46
+ say(" \\----------------------------------\\ \n")
47
+ say(" \\ \\ __ \n")
48
+ say(" \\ Please proceed with your \\ | \\ \n")
49
+ say(" > check-in by answering the >------| \\ ______ \n")
50
+ say(" / following questions: / --- \\_____/**|_|_\\____ | \n")
51
+ say(" / / \\_______ --------- __>-} \n")
52
+ say(" /----------------------------------/ / \\_____|_____/ | \n")
53
+ say(" * | \n")
54
+ say(" {O} \n")
55
+ say(" \n")
56
+ say(" \n")
57
+ say(" /*\\ /*\\ /*\\ /*\\ /*\\ /*\\ /*\\ \n")
58
+ say(" |***| |***| |***| |***| |***| |***| |***| \n")
59
+ say(" \\*/ \\*/ ____ \\*/ \\*/ \\*/ \\*/ \\*/ \n")
60
+ say(" | | | | | | | | | \n")
61
+ say("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n")
62
+ say("^^^^^^^^^ art by Denis Rabusseau, rabussea@jack.greco-prog.fr ^^^^^^^^^^^ \n")
63
+ say("\n\n")
64
+
65
+
66
+ say("\nConfiguring #{Testflight::Config.application_name} #{Testflight::Config.type} for deployment to testflightapp.com...")
44
67
  ["Provisioning", "Distributions", "build"].each do |name|
45
68
  create_folder(name)
46
69
  end
47
70
 
48
- say("\r\nPlease answer the following questions to prepare you for takeoff.")
71
+ @company_name = ask("\nWhat is the name of your company, as it appears in your Apple certificate?")
72
+ @should_increment_bundle = yes_no?("Would you like to automatically increment the build number after every deployment?", "Y")
49
73
 
50
- @company_name = ask("What is the name of your company, as it appears in your .cer file from Apple?")
51
- @should_increment_bundle = yes?("Would you like to automatically increment build numbers (bundle value) for every deployment? (y/n)")
52
-
53
- say("\r\nConfiguring Git commands...")
54
- if yes?("Do you use git as your SCM? (y/n)")
55
- @should_commit_changes = yes?("Would you like to commit and push your changes to git as the first step of your deployment? (y/n)")
74
+ if File.exist?("./.git")
75
+ say("\nIt looks like you are using git as your SCM.")
76
+ @should_commit_changes = yes_no?("Would you like to commit and push your changes to git before deployment?", "N")
56
77
  if @should_increment_bundle
57
- @should_tag_build = yes?("Would you like to tag every build in git with the version/build number? (y/n)")
78
+ @should_tag_build = yes_no?("Would you like to tag every build in git with the version/build number of your application?", "Y")
58
79
  end
59
80
  end
60
81
 
61
- say("\r\nConfiguring Build commands...")
62
- say("What iPhone SDK version are you using?")
63
- sdks = [
64
- ["1:", "iphoneos4.3"],
65
- ["2:", "iphoneos5.0"],
66
- ["3:", "iphoneos5.1"],
67
- ["4:", "iphoneos6.0"],
68
- ["5:", "iphoneos6.1"],
69
- ]
70
- print_table(sdks)
71
- num = ask_for_number(5)
72
- @sdk = sdks[num-1].last
73
-
74
- say("\r\nConfiguring Testflight.com commands...")
75
- say("For the next question, please get your API TOKEN from the following URL: https://testflightapp.com/account/#api")
82
+ #say("\r\nConfiguring Build commands...\n")
83
+ #say("What iOS architecture are you using?")
84
+ #architectures = [
85
+ # ["1:", "armv5"],
86
+ # ["2:", "armv6"],
87
+ # ["3:", "armv7"],
88
+ #]
89
+ #print_table(architectures)
90
+ #num = ask_for_number(3)
91
+ #@architecture = architectures[num-1].last
92
+ @architecture = 'armv7'
93
+ @configuration = 'Release'
94
+ @sdk = 'iphoneos'
95
+
96
+ say("\r\nConfiguring testflightapp.com commands...")
97
+ say("Please get your API TOKEN from the following URL: https://testflightapp.com/account/#api")
76
98
  @api_token = ask("Paste your API TOKEN here:")
77
99
 
78
- say("For the next question, please get your TEAM TOKEN from the following URL: https://testflightapp.com/dashboard/team/edit")
100
+ say("Please get your TEAM TOKEN from the following URL: https://testflightapp.com/dashboard/team/edit")
79
101
  @team_token = ask("Paste your TEAM TOKEN here:")
80
102
 
81
- @teams = ask("\r\nPlease enter your distribution lists as you have set them up on testflight (separate team names with a comma):")
103
+ @teams = ask("\r\nPlease enter your distribution lists as they appear on testflightapp.com (separated with comma):")
82
104
  @teams = @teams.split(",").collect{|t| t.strip}
83
105
 
84
106
  template 'templates/testflight.yml.erb', "./#{Testflight::Config.path}"
@@ -87,32 +109,115 @@ module Testflight
87
109
 
88
110
  say("Configuration file '.testflight' has been created. You can edit it manually or run the init command again.")
89
111
  say("\r\nOnly a few steps left, but make sure you do them all.")
90
- say("1). Copy your Ad Hoc Provisioning Profile (.mobileprovision) into the 'Provisioning' folder.")
91
- say("2). Create a new build profile called AdHoc and make sure you set it as the default profile for command line builds.")
112
+ say("1). Copy your Ad Hoc Provisioning Profile (.mobileprovision) into the 'Provisioning' folder that was created earlier.")
113
+ say("2). Make sure your Release configuration uses your Ad-Hoc profile. You can follow these instructions to learn more: http://help.testflightapp.com/customer/portal/articles/1333914-how-to-create-an-ipa-xcode-5-")
92
114
  say("\r\nOnce you are done, you can run: testflight takeoff")
93
115
  end
94
116
 
117
+ map 't' => :takeoff
95
118
  desc 'takeoff', 'Builds and deploys your project based on your configuration.'
96
119
  method_option :cold, :type => :boolean, :aliases => "c", :required => false
97
120
  def takeoff
98
121
  return unless ready_for_takeoff?
99
122
 
100
- say("Preparing #{Testflight::Config.application_name} #{Testflight::Config.type} #{Testflight::Config.project_version} for deployment to testflightapp.com...")
101
123
 
102
- @message = ask("\r\nWhat changes did you make in this build?")
124
+ say("\n\n")
125
+ say(" _______ \n")
126
+ say(" \\=====/ \n")
127
+ say(" ||| \n")
128
+ say(" # \n")
129
+ say(" | \n")
130
+ say(" =========================== \n")
131
+ say(" | www.testflightapp.com | \n")
132
+ say(" =========================== \n")
133
+ say(" \\ | | / \n")
134
+ say(" \\ | | / \n")
135
+ say(" \\ | | / \n")
136
+ say(" \\ | | / \n")
137
+ say(" ################### \n")
138
+ say(" || || \n")
139
+ say(" || || \n")
140
+ say(" || || \n")
141
+ say(" || || \n")
142
+ say(" || || \n")
143
+ say(" || || ___ \n")
144
+ say(" || || | \\______________ \n")
145
+ say(" || #### || ====( oooooooooo O\\__ \n")
146
+ say(" || # # || (________/=====>______)-- \n")
147
+ say(" || # # || OO O \n")
148
+ say("===================================================================================== \n")
149
+ say(" art by Ian Astley, astley@Papin.HRZ.Uni-Marburg.DE \n")
150
+ say("\n\n")
151
+
152
+ say("Preparing #{Testflight::Config.application_name} #{Testflight::Config.type} #{Testflight::Config.project_version} for departure to testflightapp.com...")
153
+
154
+
155
+ @message = ask("\r\nWhat changes did you make in this build (will be used in git commit and notes)?")
103
156
  @teams = ask_with_multiple_options("Which team(s) would you like to distirbute the build to? Provide team number(s, separated by a comma)",
104
157
  Testflight::Config.distribution_lists)
105
158
 
106
- @notify = yes?("\r\nWould you like to notify the team members by email about this build? (y/n)")
159
+ @notify = yes_no?("\r\nWould you like to notify the team members by email about this build?", "N")
107
160
 
108
161
  Testflight::Builder.new(:message => @message, :teams => @teams, :notify => @notify, :cold => options['cold'])
109
162
 
110
- say("Congratulations, the build has been deployed! Have a safe flight!")
163
+ say(" \n")
164
+ say(" \n")
165
+ say(" ___.----.____ \n")
166
+ say(" __,--(_,-' ,-' \n")
167
+ say(" _,-' ,-' \n")
168
+ say(" _,-' () ,-' \n")
169
+ say(" ,-' () ,-' \n")
170
+ say(" ,-' () ,-' \n")
171
+ say(" ,-' __..--'' ,-' \n")
172
+ say(" ,-'.--'' ,-' ,-' \n")
173
+ say(" |\\ __..--'' ,-' ,-': \n")
174
+ say(" | \\__..--'' ______ ,-' _,-' : \n")
175
+ say(" __..--'' ,-'\\_____/-' _,-' : \n")
176
+ say("__..--'' ,-' ,-' ,-' _,-'____/ : \n")
177
+ say("`---...___ ,-' ,-' ,-' _,-' _,-' : \n")
178
+ say(" ``````-,-' ,-' ,-' _,-' _,-' : \n")
179
+ say(" \\,-'___,-'--''___,-'-...___ : \n")
180
+ say(" ```---..: \n")
181
+ say(" \n")
182
+ say(" \n")
183
+ say(" \n")
184
+ say(" \n")
185
+
186
+ say("\r\nCongratulations, your build has been departed! Have a safe flight!")
111
187
  say
188
+ rescue
189
+
190
+ say(" \n")
191
+ say(" \n")
192
+ say(" \n")
193
+ say(" .-------------------. ___ \n")
194
+ say(" ( OUCH !!! ) / /] \n")
195
+ say(" `-------------- --' / / ] \n")
196
+ say(" \\ | _____,.-' /__] \n")
197
+ say(" ) \\| ,-' _> \n")
198
+ say(" ( ` _/ ,.-'` \n")
199
+ say(" ) / | _,.-'`` \n")
200
+ say(" ( /. / | \n")
201
+ say(" ) , /` ./ \n")
202
+ say(" ( \\_/ // _ \n")
203
+ say(" ) / //==(_) \n")
204
+ say(" _,~'# (/. \n")
205
+ say("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#~~#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n")
206
+ say(" \n")
207
+
208
+ say("\r\nBuild failed")
112
209
  end
113
210
 
114
211
  protected
115
-
212
+
213
+ def yes_no?(question, default = "Y")
214
+ answer = ask("#{question} #{default ? "(Y/n)" : "(y/N)"}")
215
+ if default == "Y"
216
+ return (["Y", "y", "yes", "YES", "Yes", ""].include?(answer))
217
+ end
218
+ (["N", "n", "no", "NO", "No", ""].include?(answer))
219
+ end
220
+
116
221
  def is_project_folder?
117
222
  unless Testflight::Config.application_name
118
223
  say("This folder does not contain an xCode project or a workspace.")
@@ -56,6 +56,18 @@ module Testflight
56
56
  build["sdk"]
57
57
  end
58
58
 
59
+ def self.architecture
60
+ build["architecture"]
61
+ end
62
+
63
+ def self.configuration
64
+ build["configuration"]
65
+ end
66
+
67
+ def self.sdk
68
+ build["sdk"]
69
+ end
70
+
59
71
  def self.git
60
72
  config["git"]
61
73
  end
@@ -22,7 +22,7 @@
22
22
  #++
23
23
 
24
24
  module Testflight
25
- VERSION = "0.1.5"
25
+ VERSION = "1.0.1"
26
26
  end
27
27
 
28
28
 
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testflight
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
5
- prerelease:
4
+ version: 1.0.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Michael Berkovich
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-20 00:00:00.000000000 Z
11
+ date: 2013-11-10 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: thor
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: plist
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -63,27 +58,26 @@ files:
63
58
  - README.rdoc
64
59
  homepage: https://github.com/berk/testflight
65
60
  licenses: []
61
+ metadata: {}
66
62
  post_install_message:
67
63
  rdoc_options: []
68
64
  require_paths:
69
65
  - - lib
70
66
  - lib/testflight
71
67
  required_ruby_version: !ruby/object:Gem::Requirement
72
- none: false
73
68
  requirements:
74
- - - ! '>='
69
+ - - '>='
75
70
  - !ruby/object:Gem::Version
76
71
  version: '0'
77
72
  required_rubygems_version: !ruby/object:Gem::Requirement
78
- none: false
79
73
  requirements:
80
- - - ! '>='
74
+ - - '>='
81
75
  - !ruby/object:Gem::Version
82
76
  version: '0'
83
77
  requirements: []
84
78
  rubyforge_project:
85
- rubygems_version: 1.8.23
79
+ rubygems_version: 2.0.3
86
80
  signing_key:
87
- specification_version: 3
81
+ specification_version: 4
88
82
  summary: iOS application deployment automation
89
83
  test_files: []