fastlane-plugin-firebase_app_distribution 0.2.0.pre.3 → 0.2.0.pre.4
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/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_action.rb +18 -19
- data/lib/fastlane/plugin/firebase_app_distribution/client/firebase_app_distribution_api_client.rb +30 -15
- data/lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_auth_client.rb +1 -1
- data/lib/fastlane/plugin/firebase_app_distribution/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b38b7e0efb3d03f71b9e4476b15304f9ffcddb75cd936acad55f16886222e458
|
4
|
+
data.tar.gz: '00228e7a41e3d55c4f0271ebbd5bd0aff4a699ec192b8e5e246a7dd271b9b5f3'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64478454789d88e5abdb0b8084e53b6e0d4320315073e59a3a5d789f2a7dde8adb34d79ca102148292977d763148645ad7b15ea2d8caeb21369a8932b9fd4f1e
|
7
|
+
data.tar.gz: ec77eb9cd77d44ebd4a3f3c6c89a5b3c37f3fc96a2c7bf8fa4ed227cbbca14b5c979583a75d555f2eba25912989d76672e9792eb0fe48cd18b63c56c7fc4b555
|
data/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_action.rb
CHANGED
@@ -21,8 +21,9 @@ module Fastlane
|
|
21
21
|
def self.run(params)
|
22
22
|
params.values # to validate all inputs before looking for the ipa/apk
|
23
23
|
auth_token = fetch_auth_token(params[:service_credentials_file], params[:firebase_cli_token])
|
24
|
-
fad_api_client = Client::FirebaseAppDistributionApiClient.new(auth_token, platform)
|
25
24
|
binary_path = params[:ipa_path] || params[:apk_path]
|
25
|
+
platform = lane_platform || platform_from_path(binary_path)
|
26
|
+
fad_api_client = Client::FirebaseAppDistributionApiClient.new(auth_token, platform)
|
26
27
|
|
27
28
|
if params[:app] # Set app_id if it is specified as a parameter
|
28
29
|
app_id = params[:app]
|
@@ -49,7 +50,7 @@ module Fastlane
|
|
49
50
|
emails = string_to_array(testers)
|
50
51
|
group_ids = string_to_array(groups)
|
51
52
|
fad_api_client.enable_access(app_id, release_id, emails, group_ids)
|
52
|
-
UI.success("App Distribution upload finished successfully")
|
53
|
+
UI.success("🎉 App Distribution upload finished successfully.")
|
53
54
|
end
|
54
55
|
|
55
56
|
def self.description
|
@@ -65,16 +66,26 @@ module Fastlane
|
|
65
66
|
"Release your beta builds with Firebase App Distribution"
|
66
67
|
end
|
67
68
|
|
68
|
-
def self.
|
69
|
-
|
69
|
+
def self.lane_platform
|
70
|
+
Actions.lane_context[Actions::SharedValues::PLATFORM_NAME]
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.platform_from_path(binary_path)
|
74
|
+
return nil unless binary_path
|
75
|
+
case binary_path.split('.').last
|
76
|
+
when 'ipa'
|
77
|
+
:ios
|
78
|
+
when 'apk'
|
79
|
+
:android
|
80
|
+
end
|
70
81
|
end
|
71
82
|
|
72
83
|
def self.available_options
|
73
|
-
if
|
84
|
+
if lane_platform == :ios || lane_platform.nil?
|
74
85
|
ipa_path_default = Dir["*.ipa"].sort_by { |x| File.mtime(x) }.last
|
75
86
|
end
|
76
87
|
|
77
|
-
if
|
88
|
+
if lane_platform == :android
|
78
89
|
apk_path_default = Dir["*.apk"].last || Dir[File.join("app", "build", "outputs", "apk", "app-release.apk")].last
|
79
90
|
end
|
80
91
|
|
@@ -105,9 +116,9 @@ module Fastlane
|
|
105
116
|
optional: true,
|
106
117
|
type: String),
|
107
118
|
FastlaneCore::ConfigItem.new(key: :firebase_cli_path,
|
119
|
+
deprecated: "This plugin no longer uses the Firebase CLI",
|
108
120
|
env_name: "FIREBASEAPPDISTRO_FIREBASE_CLI_PATH",
|
109
121
|
description: "The absolute path of the firebase cli command",
|
110
|
-
optional: true,
|
111
122
|
type: String),
|
112
123
|
FastlaneCore::ConfigItem.new(key: :groups,
|
113
124
|
env_name: "FIREBASEAPPDISTRO_GROUPS",
|
@@ -175,18 +186,6 @@ module Fastlane
|
|
175
186
|
CODE
|
176
187
|
]
|
177
188
|
end
|
178
|
-
|
179
|
-
## TODO: figure out if we can surpress color output.
|
180
|
-
def self.is_firebasecmd_supported?(cmd)
|
181
|
-
outerr, status = Open3.capture2e(cmd, "--non-interactive", FIREBASECMD_ACTION, "--help")
|
182
|
-
return false unless status.success?
|
183
|
-
|
184
|
-
if outerr =~ /is not a Firebase command/
|
185
|
-
return false
|
186
|
-
end
|
187
|
-
|
188
|
-
true
|
189
|
-
end
|
190
189
|
end
|
191
190
|
end
|
192
191
|
end
|
data/lib/fastlane/plugin/firebase_app_distribution/client/firebase_app_distribution_api_client.rb
CHANGED
@@ -33,7 +33,7 @@ module Fastlane
|
|
33
33
|
# Throws a user_error if app_id, emails, or group_ids are invalid
|
34
34
|
def enable_access(app_id, release_id, emails, group_ids)
|
35
35
|
if (emails.nil? || emails.empty?) && (group_ids.nil? || group_ids.empty?)
|
36
|
-
UI.
|
36
|
+
UI.success("✅ No testers passed in. Skipping this step.")
|
37
37
|
return
|
38
38
|
end
|
39
39
|
payload = { emails: emails, groupIds: group_ids }
|
@@ -46,7 +46,7 @@ module Fastlane
|
|
46
46
|
rescue Faraday::ClientError
|
47
47
|
UI.user_error!("#{ErrorMessage::INVALID_TESTERS} \nEmails: #{emails} \nGroups: #{group_ids}")
|
48
48
|
end
|
49
|
-
UI.success("Added testers/groups
|
49
|
+
UI.success("✅ Added testers/groups.")
|
50
50
|
end
|
51
51
|
|
52
52
|
# Posts notes for the specified app release. Skips this
|
@@ -61,7 +61,7 @@ module Fastlane
|
|
61
61
|
def post_notes(app_id, release_id, release_notes)
|
62
62
|
payload = { releaseNotes: { releaseNotes: release_notes } }
|
63
63
|
if release_notes.nil? || release_notes.empty?
|
64
|
-
UI.
|
64
|
+
UI.success("✅ No release notes passed in. Skipping this step.")
|
65
65
|
return
|
66
66
|
end
|
67
67
|
begin
|
@@ -73,7 +73,7 @@ module Fastlane
|
|
73
73
|
# rescue Faraday::ClientError
|
74
74
|
# UI.user_error!("#{ErrorMessage::INVALID_RELEASE_ID}: #{release_id}")
|
75
75
|
end
|
76
|
-
UI.success("Posted release notes.")
|
76
|
+
UI.success("✅ Posted release notes.")
|
77
77
|
end
|
78
78
|
|
79
79
|
# Returns the url encoded upload token used for get_upload_status calls:
|
@@ -105,6 +105,14 @@ module Fastlane
|
|
105
105
|
return upload_token_format(response.body[:appId], response.body[:projectNumber], binary_hash)
|
106
106
|
end
|
107
107
|
|
108
|
+
# Uploads the app binary to the Firebase API
|
109
|
+
#
|
110
|
+
# args
|
111
|
+
# app_id - Firebase App ID
|
112
|
+
# binary_path - Absolute path to your app's apk/ipa file
|
113
|
+
# platform - 'android' or 'ios'
|
114
|
+
#
|
115
|
+
# Throws a user_error if an invalid app id is passed in, or if the binary file does not exist
|
108
116
|
def upload_binary(app_id, binary_path, platform)
|
109
117
|
connection.post(binary_upload_url(app_id), File.open(binary_path).read) do |request|
|
110
118
|
request.headers["Authorization"] = "Bearer " + @auth_token
|
@@ -113,9 +121,9 @@ module Fastlane
|
|
113
121
|
request.headers["X-APP-DISTRO-API-CLIENT-VERSION"] = Fastlane::FirebaseAppDistribution::VERSION
|
114
122
|
end
|
115
123
|
rescue Faraday::ResourceNotFound
|
116
|
-
UI.
|
117
|
-
rescue Errno::ENOENT
|
118
|
-
UI.
|
124
|
+
UI.user_error!("#{ErrorMessage::INVALID_APP_ID}: #{app_id}")
|
125
|
+
rescue Errno::ENOENT # Raised when binary_path file does not exist
|
126
|
+
UI.user_error!("#{ErrorMessage.binary_not_found(@binary_type)}: #{binary_path}")
|
119
127
|
end
|
120
128
|
|
121
129
|
# Uploads the binary file if it has not already been uploaded
|
@@ -133,17 +141,16 @@ module Fastlane
|
|
133
141
|
upload_token = get_upload_token(app_id, binary_path)
|
134
142
|
upload_status_response = get_upload_status(app_id, upload_token)
|
135
143
|
if upload_status_response.success? || upload_status_response.already_uploaded?
|
136
|
-
UI.success("This #{@binary_type} has been uploaded before. Skipping upload step.")
|
144
|
+
UI.success("✅ This #{@binary_type} has been uploaded before. Skipping upload step.")
|
137
145
|
else
|
138
|
-
UI.message("This #{@binary_type} has not been uploaded before")
|
139
|
-
UI.message("Uploading the #{@binary_type}.")
|
140
146
|
unless upload_status_response.in_progress?
|
147
|
+
UI.message("⌛ Uploading the #{@binary_type}.")
|
141
148
|
upload_binary(app_id, binary_path, platform)
|
142
149
|
end
|
143
150
|
MAX_POLLING_RETRIES.times do
|
144
151
|
upload_status_response = get_upload_status(app_id, upload_token)
|
145
152
|
if upload_status_response.success? || upload_status_response.already_uploaded?
|
146
|
-
UI.success("Uploaded #{@binary_type}
|
153
|
+
UI.success("✅ Uploaded the #{@binary_type}.")
|
147
154
|
break
|
148
155
|
elsif upload_status_response.in_progress?
|
149
156
|
sleep(POLLING_INTERVAL_SECONDS)
|
@@ -163,14 +170,22 @@ module Fastlane
|
|
163
170
|
upload_status_response.release_id
|
164
171
|
end
|
165
172
|
|
166
|
-
#
|
167
|
-
|
173
|
+
# Fetches the status of an uploaded binary
|
174
|
+
#
|
175
|
+
# args
|
176
|
+
# app_id - Firebase App ID
|
177
|
+
# upload_token - URL encoded upload token
|
178
|
+
#
|
179
|
+
# Returns the release ID on a successful release, otherwise returns nil.
|
180
|
+
#
|
181
|
+
# Throws a user_error if an invalid app_id is passed in
|
182
|
+
def get_upload_status(app_id, upload_token)
|
168
183
|
begin
|
169
|
-
response = connection.get(upload_status_url(app_id,
|
184
|
+
response = connection.get(upload_status_url(app_id, upload_token)) do |request|
|
170
185
|
request.headers["Authorization"] = "Bearer " + @auth_token
|
171
186
|
end
|
172
187
|
rescue Faraday::ResourceNotFound
|
173
|
-
UI.
|
188
|
+
UI.user_error!("#{ErrorMessage::INVALID_APP_ID}: #{app_id}")
|
174
189
|
end
|
175
190
|
return UploadStatusResponse.new(response.body)
|
176
191
|
end
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-firebase_app_distribution
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.0.pre.
|
4
|
+
version: 0.2.0.pre.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Natchev
|
8
8
|
- Manny Jimenez
|
9
9
|
- Alonso Salas Infante
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2020-
|
13
|
+
date: 2020-09-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: pry
|
@@ -138,7 +138,7 @@ dependencies:
|
|
138
138
|
- - ">="
|
139
139
|
- !ruby/object:Gem::Version
|
140
140
|
version: 2.127.1
|
141
|
-
description:
|
141
|
+
description:
|
142
142
|
email:
|
143
143
|
- snatchev@google.com
|
144
144
|
- mannyjimenez@google.com
|
@@ -162,7 +162,7 @@ homepage: https://github.com/fastlane/fastlane-plugin-firebase_app_distribution
|
|
162
162
|
licenses:
|
163
163
|
- MIT
|
164
164
|
metadata: {}
|
165
|
-
post_install_message:
|
165
|
+
post_install_message:
|
166
166
|
rdoc_options: []
|
167
167
|
require_paths:
|
168
168
|
- lib
|
@@ -178,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
178
|
version: 1.3.1
|
179
179
|
requirements: []
|
180
180
|
rubygems_version: 3.1.2
|
181
|
-
signing_key:
|
181
|
+
signing_key:
|
182
182
|
specification_version: 4
|
183
183
|
summary: Release your beta builds to Firebase App Distribution. https://firebase.google.com/docs/app-distribution
|
184
184
|
test_files: []
|