fastlane 2.29.0.beta.20170426010043 → 2.29.0.beta.20170427010043
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/pilot/lib/pilot/tester_manager.rb +69 -58
- data/spaceship/lib/spaceship/test_flight/group.rb +13 -2
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 938e4b0dc6e8d5661b43c1531faf76e43f329083
|
4
|
+
data.tar.gz: 54895c188864c896e72c6d069b3616ee7d463707
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 216e8a1d0cb1b25c7277b8ccff5b92760eb3aefa32806df6058cc7a66fbc76f670389cb6df8f9a7d33b42bb19f6437269132929f181875b915c6f95d7d22566d
|
7
|
+
data.tar.gz: e4b3a5b1aa6517630e4bdc484ad675d3efa2a04832b82a1d8bd55eac71a5cca0f54c786df10790ec2bc9ce86ebc1541ecee796b53a161194745e49244e203538
|
@@ -7,39 +7,23 @@ module Pilot
|
|
7
7
|
def add_tester(options)
|
8
8
|
start(options)
|
9
9
|
|
10
|
+
app = find_app(app_filter: config[:apple_id] || config[:app_identifier])
|
11
|
+
UI.user_error!("You must provide either a Apple ID for the app (with the `:apple_id` option) or app identifier (with the `:app_identifier` option)") unless app
|
12
|
+
|
13
|
+
tester = find_or_create_tester(email: config[:email], first_name: config[:first_name], last_name: config[:last_name])
|
14
|
+
|
10
15
|
begin
|
11
|
-
|
12
|
-
if tester
|
13
|
-
UI.success("
|
16
|
+
groups = add_tester_to_groups!(tester: tester, app: app, groups: config[:groups])
|
17
|
+
if tester.kind_of?(Spaceship::Tunes::Tester::Internal)
|
18
|
+
UI.success("Successfully added tester to app #{app.name}")
|
14
19
|
else
|
15
|
-
|
16
|
-
|
17
|
-
UI.user_error!("#{internal_tester.email} is an internal tester; pilot does not support internal testers") unless internal_tester.nil?
|
18
|
-
|
19
|
-
tester = Spaceship::Tunes::Tester::External.create!(email: config[:email],
|
20
|
-
first_name: config[:first_name],
|
21
|
-
last_name: config[:last_name])
|
22
|
-
UI.success("Successfully added tester: #{tester.email} to your account")
|
20
|
+
group_names = groups.map(&:name).join(", ")
|
21
|
+
UI.success("Successfully added tester to app #{app.name} in group(s) #{group_names}")
|
23
22
|
end
|
24
23
|
rescue => ex
|
25
|
-
UI.error("Could not
|
24
|
+
UI.error("Could not add #{tester.email} to app: #{app.name}")
|
26
25
|
raise ex
|
27
26
|
end
|
28
|
-
|
29
|
-
app_filter = (config[:apple_id] || config[:app_identifier])
|
30
|
-
if app_filter
|
31
|
-
begin
|
32
|
-
app = Spaceship::Application.find(app_filter)
|
33
|
-
UI.user_error!("Couldn't find app with '#{app_filter}'") unless app
|
34
|
-
|
35
|
-
groups = add_tester_to_groups!(tester: tester, app: app, groups: config[:groups])
|
36
|
-
group_names = groups.map(&:name).join(", ")
|
37
|
-
UI.success("Successfully added tester to app #{app_filter} in group(s) #{group_names}")
|
38
|
-
rescue => ex
|
39
|
-
UI.error("Could not add #{tester.email} to app: #{app.name}")
|
40
|
-
raise ex
|
41
|
-
end
|
42
|
-
end
|
43
27
|
end
|
44
28
|
|
45
29
|
def find_tester(options)
|
@@ -58,38 +42,30 @@ module Pilot
|
|
58
42
|
start(options)
|
59
43
|
|
60
44
|
tester = Spaceship::Tunes::Tester::External.find(config[:email])
|
45
|
+
tester ||= Spaceship::Tunes::Tester::Internal.find(config[:email])
|
46
|
+
UI.user_error!("Tester not found: #{config[:email]}") if tester.nil?
|
61
47
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
else
|
76
|
-
groups = remove_tester_from_groups!(tester: tester, app: app, groups: config[:groups])
|
77
|
-
group_names = groups.map(&:name).join(", ")
|
78
|
-
UI.success("Successfully removed tester #{tester.email} from app #{app_filter} in group(s) #{group_names}")
|
79
|
-
end
|
80
|
-
rescue => ex
|
81
|
-
UI.error("Could not remove #{tester.email} from app: #{ex}")
|
82
|
-
raise ex
|
83
|
-
end
|
48
|
+
app = find_app(app_filter: config[:apple_id] || config[:app_identifier])
|
49
|
+
unless app
|
50
|
+
tester.delete!
|
51
|
+
UI.success("Successfully removed tester #{tester.email}")
|
52
|
+
end
|
53
|
+
|
54
|
+
begin
|
55
|
+
# If no groups are passed to options, remove the tester from the app-level,
|
56
|
+
# otherwise remove the tester from the groups specified.
|
57
|
+
if config[:groups].nil? && tester.kind_of?(Spaceship::Tunes::Tester::External)
|
58
|
+
test_flight_tester = Spaceship::TestFlight::Tester.find(app_id: app.apple_id, email: tester.email)
|
59
|
+
test_flight_tester.remove_from_app!(app_id: app.apple_id)
|
60
|
+
UI.success("Successfully removed tester, #{test_flight_tester.email}, from app: #{app.name}")
|
84
61
|
else
|
85
|
-
tester
|
86
|
-
|
62
|
+
groups = remove_tester_from_groups!(tester: tester, app: app, groups: config[:groups])
|
63
|
+
group_names = groups.map(&:name).join(", ")
|
64
|
+
UI.success("Successfully removed tester #{tester.email} from app #{app.name} in group(s) #{group_names}")
|
87
65
|
end
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
UI.user_error!("Tester not found: #{config[:email]}")
|
66
|
+
rescue => ex
|
67
|
+
UI.error("Could not remove #{tester.email} from app: #{ex}")
|
68
|
+
raise ex
|
93
69
|
end
|
94
70
|
end
|
95
71
|
|
@@ -106,6 +82,33 @@ module Pilot
|
|
106
82
|
|
107
83
|
private
|
108
84
|
|
85
|
+
def find_app(app_filter: nil)
|
86
|
+
if app_filter
|
87
|
+
app = Spaceship::Application.find(app_filter)
|
88
|
+
UI.user_error!("Could not find an app by #{app_filter}") unless app
|
89
|
+
return app
|
90
|
+
end
|
91
|
+
nil
|
92
|
+
end
|
93
|
+
|
94
|
+
def find_or_create_tester(email: nil, first_name: nil, last_name: nil)
|
95
|
+
tester = Spaceship::Tunes::Tester::Internal.find(config[:email])
|
96
|
+
tester ||= Spaceship::Tunes::Tester::External.find(config[:email])
|
97
|
+
|
98
|
+
if tester
|
99
|
+
UI.success("Existing tester #{tester.email}")
|
100
|
+
else
|
101
|
+
tester = Spaceship::Tunes::Tester::External.create!(email: config[:email],
|
102
|
+
first_name: config[:first_name],
|
103
|
+
last_name: config[:last_name])
|
104
|
+
UI.success("Successfully added tester: #{tester.email} to your account")
|
105
|
+
end
|
106
|
+
return tester
|
107
|
+
rescue => ex
|
108
|
+
UI.error("Could not create tester #{config[:email]}")
|
109
|
+
raise ex
|
110
|
+
end
|
111
|
+
|
109
112
|
def perform_for_groups_in_app(app: nil, groups: nil, &block)
|
110
113
|
if groups.nil?
|
111
114
|
default_external_group = app.default_external_group
|
@@ -125,11 +128,19 @@ module Pilot
|
|
125
128
|
end
|
126
129
|
|
127
130
|
def add_tester_to_groups!(tester: nil, app: nil, groups: nil)
|
128
|
-
|
131
|
+
if tester.kind_of?(Spaceship::Tunes::Tester::Internal)
|
132
|
+
Spaceship::TestFlight::Group.internal_group(app_id: app.apple_id).add_tester!(tester)
|
133
|
+
else
|
134
|
+
perform_for_groups_in_app(app: app, groups: groups) { |group| group.add_tester!(tester) }
|
135
|
+
end
|
129
136
|
end
|
130
137
|
|
131
138
|
def remove_tester_from_groups!(tester: nil, app: nil, groups: nil)
|
132
|
-
|
139
|
+
if tester.kind_of?(Spaceship::Tunes::Tester::Internal)
|
140
|
+
Spaceship::TestFlight::Group.internal_group(app_id: app.apple_id).remove_tester!(tester)
|
141
|
+
else
|
142
|
+
perform_for_groups_in_app(app: app, groups: groups) { |group| group.remove_tester!(tester) }
|
143
|
+
end
|
133
144
|
end
|
134
145
|
|
135
146
|
def list_testers_by_app(app_filter)
|
@@ -3,12 +3,14 @@ module Spaceship::TestFlight
|
|
3
3
|
attr_accessor :id
|
4
4
|
attr_accessor :name
|
5
5
|
attr_accessor :is_default_external_group
|
6
|
+
attr_accessor :is_internal_group
|
6
7
|
|
7
8
|
attr_accessor :app_id
|
8
9
|
|
9
10
|
attr_mapping({
|
10
11
|
'id' => :id,
|
11
12
|
'name' => :name,
|
13
|
+
'isInternalGroup' => :is_internal_group,
|
12
14
|
'isDefaultExternalGroup' => :is_default_external_group
|
13
15
|
})
|
14
16
|
|
@@ -36,6 +38,11 @@ module Spaceship::TestFlight
|
|
36
38
|
groups.select(&block)
|
37
39
|
end
|
38
40
|
|
41
|
+
def self.internal_group(app_id: nil)
|
42
|
+
groups = self.all(app_id: app_id)
|
43
|
+
groups.find(&:internal_group?)
|
44
|
+
end
|
45
|
+
|
39
46
|
# First we need to add the tester to the app
|
40
47
|
# It's ok if the tester already exists, we just have to do this... don't ask
|
41
48
|
# This will enable testing for the tester for a given app, as just creating the tester on an account-level
|
@@ -43,9 +50,9 @@ module Spaceship::TestFlight
|
|
43
50
|
# This is a bug we reported to the iTunes Connect team, as it also happens on the iTunes Connect UI on 18. April 2017
|
44
51
|
def add_tester!(tester)
|
45
52
|
# This post request makes the account-level tester available to the app
|
46
|
-
client.post_tester(app_id: self.app_id, tester: tester)
|
53
|
+
tester_data = client.post_tester(app_id: self.app_id, tester: tester)
|
47
54
|
# This put request adds the tester to the group
|
48
|
-
client.put_tester_to_group(group_id: self.id, tester_id:
|
55
|
+
client.put_tester_to_group(group_id: self.id, tester_id: tester_data['id'], app_id: self.app_id)
|
49
56
|
end
|
50
57
|
|
51
58
|
def remove_tester!(tester)
|
@@ -55,5 +62,9 @@ module Spaceship::TestFlight
|
|
55
62
|
def default_external_group?
|
56
63
|
is_default_external_group
|
57
64
|
end
|
65
|
+
|
66
|
+
def internal_group?
|
67
|
+
is_internal_group
|
68
|
+
end
|
58
69
|
end
|
59
70
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.29.0.beta.
|
4
|
+
version: 2.29.0.beta.20170427010043
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
@@ -15,7 +15,7 @@ authors:
|
|
15
15
|
autorequire:
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
|
-
date: 2017-04-
|
18
|
+
date: 2017-04-27 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: slack-notifier
|
@@ -1342,23 +1342,23 @@ metadata:
|
|
1342
1342
|
post_install_message:
|
1343
1343
|
rdoc_options: []
|
1344
1344
|
require_paths:
|
1345
|
-
- supply/lib
|
1346
|
-
- pilot/lib
|
1347
|
-
- match/lib
|
1348
|
-
- fastlane/lib
|
1349
|
-
- credentials_manager/lib
|
1350
|
-
- cert/lib
|
1351
|
-
- spaceship/lib
|
1352
1345
|
- snapshot/lib
|
1346
|
+
- gym/lib
|
1347
|
+
- scan/lib
|
1348
|
+
- spaceship/lib
|
1349
|
+
- credentials_manager/lib
|
1350
|
+
- fastlane/lib
|
1353
1351
|
- pem/lib
|
1352
|
+
- sigh/lib
|
1354
1353
|
- fastlane_core/lib
|
1355
|
-
-
|
1354
|
+
- match/lib
|
1355
|
+
- pilot/lib
|
1356
|
+
- produce/lib
|
1356
1357
|
- deliver/lib
|
1357
1358
|
- frameit/lib
|
1358
|
-
-
|
1359
|
-
- scan/lib
|
1360
|
-
- sigh/lib
|
1359
|
+
- cert/lib
|
1361
1360
|
- screengrab/lib
|
1361
|
+
- supply/lib
|
1362
1362
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1363
1363
|
requirements:
|
1364
1364
|
- - ">="
|