pilot 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pilot.rb +0 -1
- data/lib/pilot/build_manager.rb +17 -5
- data/lib/pilot/commands_generator.rb +21 -16
- data/lib/pilot/options.rb +1 -1
- data/lib/pilot/tester_manager.rb +2 -2
- data/lib/pilot/version.rb +1 -1
- metadata +6 -8
- data/lib/assets/XMLTemplate.xml.erb +0 -12
- data/lib/pilot/package_builder.rb +0 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 083e9daa6e5b462f70042fd311183e9b59b7527b
|
4
|
+
data.tar.gz: 11162757ee19762349eb4a8be814739a80042dcb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c4410c9652ac3870d0da149a9cf3399eed15cb8a8520b9592bb2a0ba6aa43d84c62fa5c7238a730d28197800e66729c994b14c5518be7ae08a7d301a9109811
|
7
|
+
data.tar.gz: 7fc21966e90776ca7e5570c742a20c03fb49f7bbe9bea6629c3a392d8c7bcb16db3c7102a63f84a7c8228b93db9fdc03321d06fb2639629af6995b662cce523c
|
data/lib/pilot.rb
CHANGED
data/lib/pilot/build_manager.rb
CHANGED
@@ -7,9 +7,11 @@ module Pilot
|
|
7
7
|
|
8
8
|
Helper.log.info "Ready to upload new build to TestFlight (App: #{app.apple_id})...".green
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
plist = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(config[:ipa]) || {}
|
11
|
+
package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(app_id: app.apple_id,
|
12
|
+
ipa_path: config[:ipa],
|
13
|
+
package_path: "/tmp",
|
14
|
+
platform: plist["DTPlatformName"])
|
13
15
|
|
14
16
|
transporter = FastlaneCore::ItunesTransporter.new(options[:username])
|
15
17
|
result = transporter.upload(app.apple_id, package_path)
|
@@ -105,9 +107,19 @@ module Pilot
|
|
105
107
|
# First, set the changelog (if necessary)
|
106
108
|
uploaded_build.update_build_information!(whats_new: options[:changelog])
|
107
109
|
|
108
|
-
# Submit for
|
110
|
+
# Submit for review before external testflight is available
|
111
|
+
if options[:distribute_external]
|
112
|
+
uploaded_build.client.submit_testflight_build_for_review!(
|
113
|
+
app_id: uploaded_build.build_train.application.apple_id,
|
114
|
+
train: uploaded_build.build_train.version_string,
|
115
|
+
build_number: uploaded_build.build_version,
|
116
|
+
platform: uploaded_build.platform
|
117
|
+
)
|
118
|
+
end
|
119
|
+
|
120
|
+
# Submit for beta testing
|
109
121
|
type = options[:distribute_external] ? 'external' : 'internal'
|
110
|
-
uploaded_build.build_train.update_testing_status!(true, type)
|
122
|
+
uploaded_build.build_train.update_testing_status!(true, type, uploaded_build)
|
111
123
|
return true
|
112
124
|
end
|
113
125
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
# rubocop:disable Metrics/MethodLength
|
2
|
-
# rubocop:disable Metrics/AbcSize
|
3
2
|
require "commander"
|
4
3
|
require "pilot/options"
|
5
4
|
require "fastlane_core"
|
@@ -25,9 +24,21 @@ module Pilot
|
|
25
24
|
o
|
26
25
|
end
|
27
26
|
|
28
|
-
def
|
29
|
-
|
30
|
-
config
|
27
|
+
def handle_multiple(action, args, options)
|
28
|
+
mgr = Pilot::TesterManager.new
|
29
|
+
config = FastlaneCore::Configuration.create(Pilot::Options.available_options, convert_options(options))
|
30
|
+
args.push(ask("Email address of the tester: ".yellow)) if args.empty?
|
31
|
+
failures = []
|
32
|
+
args.each do |address|
|
33
|
+
config[:email] = address
|
34
|
+
begin
|
35
|
+
mgr.public_send(action, config)
|
36
|
+
rescue => ex
|
37
|
+
failures.push(address)
|
38
|
+
Helper.log.info "[#{address}]: #{ex}".red
|
39
|
+
end
|
40
|
+
end
|
41
|
+
raise "Some operations failed: #{failures}".red unless failures.empty?
|
31
42
|
end
|
32
43
|
|
33
44
|
def run
|
@@ -60,11 +71,9 @@ module Pilot
|
|
60
71
|
|
61
72
|
command :add do |c|
|
62
73
|
c.syntax = "pilot add"
|
63
|
-
c.description = "Adds
|
74
|
+
c.description = "Adds new external tester(s) to a specific app (if given). This will also add an existing tester to an app."
|
64
75
|
c.action do |args, options|
|
65
|
-
|
66
|
-
handle_email(config, args)
|
67
|
-
Pilot::TesterManager.new.add_tester(config)
|
76
|
+
handle_multiple('add_tester', args, options)
|
68
77
|
end
|
69
78
|
end
|
70
79
|
|
@@ -79,21 +88,17 @@ module Pilot
|
|
79
88
|
|
80
89
|
command :find do |c|
|
81
90
|
c.syntax = "pilot find"
|
82
|
-
c.description = "Find
|
91
|
+
c.description = "Find tester(s) (internal or external) by their email address"
|
83
92
|
c.action do |args, options|
|
84
|
-
|
85
|
-
handle_email(config, args)
|
86
|
-
Pilot::TesterManager.new.find_tester(config)
|
93
|
+
handle_multiple('find_tester', args, options)
|
87
94
|
end
|
88
95
|
end
|
89
96
|
|
90
97
|
command :remove do |c|
|
91
98
|
c.syntax = "pilot remove"
|
92
|
-
c.description = "Remove
|
99
|
+
c.description = "Remove external tester(s) by their email address"
|
93
100
|
c.action do |args, options|
|
94
|
-
|
95
|
-
handle_email(config, args)
|
96
|
-
Pilot::TesterManager.new.remove_tester(config)
|
101
|
+
handle_multiple('remove_tester', args, options)
|
97
102
|
end
|
98
103
|
end
|
99
104
|
|
data/lib/pilot/options.rb
CHANGED
@@ -80,7 +80,7 @@ module Pilot
|
|
80
80
|
env_name: "PILOT_WAIT_PROCESSING_INTERVAL",
|
81
81
|
description: "Interval in seconds to wait for iTunes Connect processing",
|
82
82
|
default_value: 30,
|
83
|
-
|
83
|
+
type: Integer,
|
84
84
|
verify_block: proc do |value|
|
85
85
|
raise "Please enter a valid positive number of seconds" unless value.to_i > 0
|
86
86
|
end),
|
data/lib/pilot/tester_manager.rb
CHANGED
@@ -87,12 +87,12 @@ module Pilot
|
|
87
87
|
def list(all_testers, title)
|
88
88
|
rows = []
|
89
89
|
all_testers.each do |tester|
|
90
|
-
rows << [tester.first_name, tester.last_name, tester.email, tester.devices.count]
|
90
|
+
rows << [tester.first_name, tester.last_name, tester.email, tester.devices.count, tester.full_version, tester.pretty_install_date]
|
91
91
|
end
|
92
92
|
|
93
93
|
puts Terminal::Table.new(
|
94
94
|
title: title.green,
|
95
|
-
headings: ["First", "Last", "Email", "Devices"],
|
95
|
+
headings: ["First", "Last", "Email", "Devices", "Latest Version", "Latest Install Date"],
|
96
96
|
rows: rows
|
97
97
|
)
|
98
98
|
end
|
data/lib/pilot/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pilot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fastlane_core
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.36.5
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 1.0.0
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.36.5
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 1.0.0
|
@@ -36,7 +36,7 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 0.
|
39
|
+
version: 0.20.0
|
40
40
|
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: 1.0.0
|
@@ -46,7 +46,7 @@ dependencies:
|
|
46
46
|
requirements:
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 0.
|
49
|
+
version: 0.20.0
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: 1.0.0
|
@@ -215,13 +215,11 @@ files:
|
|
215
215
|
- LICENSE
|
216
216
|
- README.md
|
217
217
|
- bin/pilot
|
218
|
-
- lib/assets/XMLTemplate.xml.erb
|
219
218
|
- lib/pilot.rb
|
220
219
|
- lib/pilot/build_manager.rb
|
221
220
|
- lib/pilot/commands_generator.rb
|
222
221
|
- lib/pilot/manager.rb
|
223
222
|
- lib/pilot/options.rb
|
224
|
-
- lib/pilot/package_builder.rb
|
225
223
|
- lib/pilot/tester_exporter.rb
|
226
224
|
- lib/pilot/tester_importer.rb
|
227
225
|
- lib/pilot/tester_manager.rb
|
@@ -1,12 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<package xmlns="http://apple.com/itunes/importer" version="software4.7">
|
3
|
-
<software_assets apple_id="<%= @data[:apple_id] %>">
|
4
|
-
<asset type="bundle">
|
5
|
-
<data_file>
|
6
|
-
<size><%= @data[:file_size] %></size>
|
7
|
-
<file_name><%= @data[:ipa_path] %></file_name>
|
8
|
-
<checksum type="md5"><%= @data[:md5] %></checksum>
|
9
|
-
</data_file>
|
10
|
-
</asset>
|
11
|
-
</software_assets>
|
12
|
-
</package>
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require "digest/md5"
|
2
|
-
|
3
|
-
module Pilot
|
4
|
-
class PackageBuilder
|
5
|
-
METADATA_FILE_NAME = "metadata.xml"
|
6
|
-
|
7
|
-
attr_accessor :package_path
|
8
|
-
|
9
|
-
def generate(apple_id: nil, ipa_path: nil, package_path: nil)
|
10
|
-
self.package_path = File.join(package_path, "#{apple_id}.itmsp")
|
11
|
-
FileUtils.rm_rf self.package_path if File.directory?(self.package_path)
|
12
|
-
FileUtils.mkdir_p self.package_path
|
13
|
-
|
14
|
-
lib_path = Helper.gem_path("pilot")
|
15
|
-
|
16
|
-
ipa_path = copy_ipa(ipa_path)
|
17
|
-
@data = {
|
18
|
-
apple_id: apple_id,
|
19
|
-
file_size: File.size(ipa_path),
|
20
|
-
ipa_path: File.basename(ipa_path), # this is only the base name as the ipa is inside the package
|
21
|
-
md5: Digest::MD5.hexdigest(File.read(ipa_path))
|
22
|
-
}
|
23
|
-
|
24
|
-
xml_path = File.join(lib_path, "lib/assets/XMLTemplate.xml.erb")
|
25
|
-
xml = ERB.new(File.read(xml_path)).result(binding) # http://www.rrn.dk/rubys-erb-templating-system
|
26
|
-
|
27
|
-
File.write(File.join(self.package_path, METADATA_FILE_NAME), xml)
|
28
|
-
Helper.log.info "Wrote XML data to '#{self.package_path}'".green if $verbose
|
29
|
-
|
30
|
-
return package_path
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def copy_ipa(ipa_path)
|
36
|
-
ipa_file_name = Digest::MD5.hexdigest(ipa_path)
|
37
|
-
resulting_path = File.join(self.package_path, "#{ipa_file_name}.ipa")
|
38
|
-
FileUtils.cp(ipa_path, resulting_path)
|
39
|
-
|
40
|
-
return resulting_path
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|