wox 0.0.6 → 0.0.7
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/CHANGELOG.md +3 -0
- data/README.md +2 -1
- data/lib/wox/build_environment.rb +13 -18
- data/lib/wox/builder.rb +1 -1
- data/lib/wox/helpers/number_helper.rb +19 -0
- data/lib/wox/packager.rb +2 -2
- data/lib/wox/tasks.rb +3 -3
- data/lib/wox/test_flight.rb +26 -17
- data/lib/wox/version.rb +1 -1
- metadata +5 -4
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -56,7 +56,8 @@ Ok so there's a few more things you can do, like creating ipa files and publishi
|
|
56
56
|
testflight :publish, :api_token => 'nphsZ6nVXMl0brDEsevLY0wRfU6iP0NLaQH3nqoh8jG',
|
57
57
|
:team_token => 'Qfom2HnGGJnXrUVnOKAxKAmpNO3wdQ9panhtqcA',
|
58
58
|
:notes => proc { File.read("CHANGELOG") },
|
59
|
-
:
|
59
|
+
:distribution_lists => %w[Internal QA],
|
60
|
+
:notify => true
|
60
61
|
|
61
62
|
end
|
62
63
|
end
|
@@ -12,32 +12,31 @@ module Wox
|
|
12
12
|
attr_reader :info_plist, :build_dir, :default_sdk
|
13
13
|
|
14
14
|
def initialize options
|
15
|
+
@options = options
|
16
|
+
|
15
17
|
options[:info_plist] ||= 'Resources/Info.plist'
|
16
18
|
options[:version] ||= Plist::parse_xml(options[:info_plist])['CFBundleVersion']
|
17
19
|
options[:project_name] ||= xcodebuild_list.first.scan(/project\s\"([^\"]+)/i).flatten.first
|
20
|
+
options[:full_name] ||= "#{self[:project_name]} #{self[:version]}"
|
18
21
|
options[:build_dir] ||= 'build'
|
19
22
|
options[:sdk] ||= 'iphoneos'
|
20
23
|
options[:configuration] ||= 'Release'
|
21
24
|
options[:target] ||= targets.first
|
22
|
-
|
25
|
+
|
26
|
+
if options[:ipa_name]
|
27
|
+
options[:ipa_file] ||= File.join self[:build_dir],
|
28
|
+
[self[:project_name], self[:version], self[:configuration], self[:ipa_name]].join("-") + ".ipa"
|
29
|
+
end
|
23
30
|
end
|
24
31
|
|
25
32
|
def apply options, &block
|
26
33
|
yield BuildEnvironment.new @options.merge(options)
|
27
34
|
end
|
28
35
|
|
29
|
-
def project_name
|
30
|
-
self[:project_name]
|
31
|
-
end
|
32
|
-
|
33
36
|
def version
|
34
37
|
self[:version]
|
35
38
|
end
|
36
|
-
|
37
|
-
def full_name
|
38
|
-
"#{project_name} #{version}"
|
39
|
-
end
|
40
|
-
|
39
|
+
|
41
40
|
def sdks
|
42
41
|
@sdks ||= `xcodebuild -showsdks`.scan(/-sdk (.*?$)/m).flatten
|
43
42
|
end
|
@@ -60,17 +59,13 @@ module Wox
|
|
60
59
|
|
61
60
|
def [](name)
|
62
61
|
fail "You need to specify :#{name} in Rakefile" unless @options[name]
|
63
|
-
@options[name]
|
64
|
-
end
|
65
|
-
|
66
|
-
def configuration_sym
|
67
|
-
self[:configuration].gsub(' ', '_').downcase
|
62
|
+
@options[name].respond_to?(:call) ? @options[name].call : @options[name]
|
68
63
|
end
|
69
64
|
|
70
|
-
def
|
71
|
-
|
65
|
+
def has_entry? name
|
66
|
+
@options[name]
|
72
67
|
end
|
73
|
-
|
68
|
+
|
74
69
|
private
|
75
70
|
|
76
71
|
def xcodebuild_list
|
data/lib/wox/builder.rb
CHANGED
@@ -5,7 +5,7 @@ module Wox
|
|
5
5
|
|
6
6
|
def build
|
7
7
|
configuration = environment[:configuration]
|
8
|
-
puts "Building #{environment
|
8
|
+
puts "Building #{environment[:full_name]} configuration:#{configuration}"
|
9
9
|
|
10
10
|
log_file = File.join environment[:build_dir], "build-#{configuration}.log"
|
11
11
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Wox
|
2
|
+
module NumberHelper
|
3
|
+
def plural count, singular, plural
|
4
|
+
count == 1 ? singular : plural
|
5
|
+
end
|
6
|
+
|
7
|
+
def bytes_to_human_size bytes, precision = 1
|
8
|
+
kb = 1024
|
9
|
+
mb = 1024 * kb
|
10
|
+
gb = 1024 * mb
|
11
|
+
case
|
12
|
+
when bytes < kb; "%d #{plural(bytes, 'byte', 'bytes')}" % bytes
|
13
|
+
when bytes < mb; "%.#{precision}f #{plural((bytes / kb), 'kilobyte', 'kilobytes')}" % (bytes / kb)
|
14
|
+
when bytes < gb; "%.#{precision}f #{plural((bytes / mb), 'megabyte', 'megabytes')}" % (bytes / mb)
|
15
|
+
when bytes >= gb; "%.#{precision}f #{plural((bytes / gb), 'gigabyte', 'gigabytes')}" % (bytes / gb)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/wox/packager.rb
CHANGED
@@ -3,9 +3,9 @@ module Wox
|
|
3
3
|
include Environment
|
4
4
|
|
5
5
|
def package
|
6
|
-
configuration, sdk, ipa_file, build_dir = environment[:configuration], environment[:sdk], environment
|
6
|
+
configuration, sdk, ipa_file, build_dir = environment[:configuration], environment[:sdk], environment[:ipa_file], environment[:build_dir]
|
7
7
|
|
8
|
-
app_file = File.join build_dir, "#{configuration}-#{sdk}", "#{environment
|
8
|
+
app_file = File.join build_dir, "#{configuration}-#{sdk}", "#{environment[:project_name]}.app"
|
9
9
|
fail "Couldn't find #{app_file}" unless File.exists? app_file
|
10
10
|
|
11
11
|
provisioning_profile_file = find_matching_mobile_provision environment[:provisioning_profile]
|
data/lib/wox/tasks.rb
CHANGED
@@ -41,7 +41,7 @@ module Wox
|
|
41
41
|
environment.apply options do |e|
|
42
42
|
t = nil
|
43
43
|
namespace :build do
|
44
|
-
desc "Build #{e
|
44
|
+
desc "Build #{e[:full_name]} with #{e[:configuration]} configuration"
|
45
45
|
t = task(name) { Builder.new(e).build }
|
46
46
|
end
|
47
47
|
tasks = BuildTasks.new(e, t)
|
@@ -57,7 +57,7 @@ module Wox
|
|
57
57
|
environment.apply options.merge({:ipa_name => name}) do |e|
|
58
58
|
t = nil
|
59
59
|
namespace :ipa do
|
60
|
-
desc "Creates #{e
|
60
|
+
desc "Creates #{e[:ipa_file]}"
|
61
61
|
t = task(name => parent_task) { Packager.new(e).package }
|
62
62
|
end
|
63
63
|
|
@@ -73,7 +73,7 @@ module Wox
|
|
73
73
|
def testflight name, options
|
74
74
|
environment.apply options do |e|
|
75
75
|
namespace :testflight do
|
76
|
-
desc "Publishes #{e
|
76
|
+
desc "Publishes #{e[:ipa_file]} to testflight"
|
77
77
|
task(name => parent_task) { TestFlight.new(e).publish }
|
78
78
|
end
|
79
79
|
end
|
data/lib/wox/test_flight.rb
CHANGED
@@ -1,32 +1,41 @@
|
|
1
|
+
require 'wox/helpers/number_helper'
|
2
|
+
|
1
3
|
module Wox
|
2
4
|
class TestFlight < Task
|
3
5
|
include Environment
|
6
|
+
include NumberHelper
|
4
7
|
|
5
|
-
def
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
def lists
|
10
|
-
environment[:notify].respond_to?(:join) ? environment[:notify].join(",") : environment[:notify]
|
8
|
+
def arg_to_string arg
|
9
|
+
arg.respond_to?(:join) ? arg.join(",") : arg
|
11
10
|
end
|
12
|
-
|
13
|
-
def
|
11
|
+
|
12
|
+
def api_args
|
14
13
|
args = {
|
15
|
-
:file => "@#{environment
|
14
|
+
:file => "@#{environment[:ipa_file]}",
|
16
15
|
:api_token => environment[:api_token],
|
17
16
|
:team_token => environment[:team_token],
|
18
|
-
:notes => notes
|
17
|
+
:notes => environment[:notes]
|
19
18
|
}
|
20
|
-
if environment[:notify]
|
21
|
-
args[:notify] = "True"
|
22
|
-
args[:distribution_lists] = lists
|
23
|
-
end
|
24
19
|
|
25
|
-
|
20
|
+
args[:distribution_lists] = environment[:distribution_lists].join(",") if environment.has_entry? :distribution_lists
|
21
|
+
args[:notify] = environment[:notify] if environment.has_entry? :notify
|
22
|
+
args
|
23
|
+
end
|
24
|
+
|
25
|
+
def curl_arg_string
|
26
|
+
api_args.map {|k,v| "-F #{k}='#{v}'"}.join(" ")
|
27
|
+
end
|
28
|
+
|
29
|
+
def publish
|
30
|
+
ipa_file = environment[:ipa_file]
|
31
|
+
|
32
|
+
puts "Publishing to TestFlight"
|
33
|
+
puts "File: #{ipa_file} (#{bytes_to_human_size File.size?(ipa_file)})"
|
34
|
+
puts "Accessible To: #{environment[:distribution_lists].join(", ")}" if environment.has_entry? :distribution_lists
|
35
|
+
puts "After publish will notify team members" if environment.has_entry? :notify
|
26
36
|
|
27
|
-
puts "Uploading ipa to TestFlight"
|
28
37
|
log_file = File.join environment[:build_dir], "testflight.log"
|
29
|
-
run_command "curl --progress-bar #{
|
38
|
+
run_command "curl --progress-bar #{curl_arg_string} http://testflightapp.com/api/builds.json", :results => log_file
|
30
39
|
end
|
31
40
|
|
32
41
|
end
|
data/lib/wox/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 7
|
10
|
+
version: 0.0.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dave Newman
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-17 00:00:00 +10:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -79,6 +79,7 @@ files:
|
|
79
79
|
- lib/wox.rb
|
80
80
|
- lib/wox/build_environment.rb
|
81
81
|
- lib/wox/builder.rb
|
82
|
+
- lib/wox/helpers/number_helper.rb
|
82
83
|
- lib/wox/packager.rb
|
83
84
|
- lib/wox/task.rb
|
84
85
|
- lib/wox/tasks.rb
|