fastlane 2.29.0.beta.20170426010043 → 2.29.0.beta.20170427010043
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.
- 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
|
- - ">="
|