fastlane-plugin-firebase_app_distribution 0.2.0 → 0.2.3
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 +46 -19
- data/lib/fastlane/plugin/firebase_app_distribution/client/firebase_app_distribution_api_client.rb +9 -2
- data/lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_helper.rb +4 -4
- data/lib/fastlane/plugin/firebase_app_distribution/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed04551803fc7a5edd8e0d43b48ff6e84e55565f3219422619e78ef96f2e6654
|
4
|
+
data.tar.gz: bd070b167f9fa4f72e13f3250524af46b75861ee9096e2a73b8e5441c5889fa8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 123bec0fbac40f216c10a4e05aab1e43644286972f2ab436ed91686a1e5404779b3d9f7dbd8ecfe208264f702f51982cfea60d3607e1090795941d2d0b65e23c
|
7
|
+
data.tar.gz: d4f509e5a09b916486f0d10802c2ff53fc1efb803e476f27f71bfade12ee5b6a46b0aa0992099582531c93de423712ccaf6a8b1276f22145701eef4158cbd95b
|
data/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_action.rb
CHANGED
@@ -20,23 +20,14 @@ module Fastlane
|
|
20
20
|
|
21
21
|
def self.run(params)
|
22
22
|
params.values # to validate all inputs before looking for the ipa/apk
|
23
|
+
|
24
|
+
app_id = app_id_from_params(params)
|
25
|
+
platform = lane_platform || platform_from_app_id(app_id)
|
26
|
+
binary_path = binary_path_from_platform(platform, params[:ipa_path], params[:apk_path])
|
27
|
+
|
23
28
|
auth_token = fetch_auth_token(params[:service_credentials_file], params[:firebase_cli_token])
|
24
|
-
binary_path = params[:ipa_path] || params[:apk_path]
|
25
|
-
platform = lane_platform || platform_from_path(binary_path)
|
26
29
|
fad_api_client = Client::FirebaseAppDistributionApiClient.new(auth_token, platform)
|
27
30
|
|
28
|
-
if params[:app] # Set app_id if it is specified as a parameter
|
29
|
-
app_id = params[:app]
|
30
|
-
elsif platform == :ios
|
31
|
-
archive_path = Actions.lane_context[SharedValues::XCODEBUILD_ARCHIVE]
|
32
|
-
if archive_path
|
33
|
-
app_id = get_ios_app_id_from_archive(archive_path)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
if app_id.nil?
|
38
|
-
UI.crash!(ErrorMessage::MISSING_APP_ID)
|
39
|
-
end
|
40
31
|
release_id = fad_api_client.upload(app_id, binary_path, platform.to_s)
|
41
32
|
if release_id.nil?
|
42
33
|
return
|
@@ -66,20 +57,50 @@ module Fastlane
|
|
66
57
|
"Release your beta builds with Firebase App Distribution"
|
67
58
|
end
|
68
59
|
|
60
|
+
def self.app_id_from_params(params)
|
61
|
+
if params[:app]
|
62
|
+
app_id = params[:app]
|
63
|
+
elsif xcode_archive_path
|
64
|
+
plist_path = params[:googleservice_info_plist_path]
|
65
|
+
app_id = get_ios_app_id_from_archive_plist(xcode_archive_path, plist_path)
|
66
|
+
end
|
67
|
+
if app_id.nil?
|
68
|
+
UI.crash!(ErrorMessage::MISSING_APP_ID)
|
69
|
+
end
|
70
|
+
app_id
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.xcode_archive_path
|
74
|
+
# prevents issues on cross-platform build environments where an XCode build happens within
|
75
|
+
# the same lane
|
76
|
+
return nil if lane_platform == :android
|
77
|
+
|
78
|
+
Actions.lane_context[SharedValues::XCODEBUILD_ARCHIVE]
|
79
|
+
end
|
80
|
+
|
69
81
|
def self.lane_platform
|
70
82
|
Actions.lane_context[Actions::SharedValues::PLATFORM_NAME]
|
71
83
|
end
|
72
84
|
|
73
|
-
def self.
|
74
|
-
|
75
|
-
case binary_path.split('.').last
|
76
|
-
when 'ipa'
|
85
|
+
def self.platform_from_app_id(app_id)
|
86
|
+
if app_id.include?(':ios:')
|
77
87
|
:ios
|
78
|
-
|
88
|
+
elsif app_id.include?(':android:')
|
79
89
|
:android
|
80
90
|
end
|
81
91
|
end
|
82
92
|
|
93
|
+
def self.binary_path_from_platform(platform, ipa_path, apk_path)
|
94
|
+
case platform
|
95
|
+
when :ios
|
96
|
+
ipa_path
|
97
|
+
when :android
|
98
|
+
apk_path
|
99
|
+
else
|
100
|
+
ipa_path || apk_path
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
83
104
|
def self.available_options
|
84
105
|
if lane_platform == :ios || lane_platform.nil?
|
85
106
|
ipa_path_default = Dir["*.ipa"].sort_by { |x| File.mtime(x) }.last
|
@@ -100,6 +121,12 @@ module Fastlane
|
|
100
121
|
verify_block: proc do |value|
|
101
122
|
UI.user_error!("firebase_app_distribution: Couldn't find ipa file at path '#{value}'") unless File.exist?(value)
|
102
123
|
end),
|
124
|
+
FastlaneCore::ConfigItem.new(key: :googleservice_info_plist_path,
|
125
|
+
env_name: "GOOGLESERVICE_INFO_PLIST_PATH",
|
126
|
+
description: "Path to your GoogleService-Info.plist file, relative to the root of your Xcode project",
|
127
|
+
default_value: "GoogleService-Info.plist",
|
128
|
+
optional: true,
|
129
|
+
type: String),
|
103
130
|
# Android Specific
|
104
131
|
FastlaneCore::ConfigItem.new(key: :apk_path,
|
105
132
|
env_name: "FIREBASEAPPDISTRO_APK_PATH",
|
data/lib/fastlane/plugin/firebase_app_distribution/client/firebase_app_distribution_api_client.rb
CHANGED
@@ -40,6 +40,7 @@ module Fastlane
|
|
40
40
|
begin
|
41
41
|
connection.post(enable_access_url(app_id, release_id), payload.to_json) do |request|
|
42
42
|
request.headers["Authorization"] = "Bearer " + @auth_token
|
43
|
+
request.headers["Content-Type"] = "application/json"
|
43
44
|
end
|
44
45
|
rescue Faraday::ResourceNotFound
|
45
46
|
UI.user_error!("#{ErrorMessage::INVALID_APP_ID}: #{app_id}")
|
@@ -67,6 +68,7 @@ module Fastlane
|
|
67
68
|
begin
|
68
69
|
connection.post(release_notes_create_url(app_id, release_id), payload.to_json) do |request|
|
69
70
|
request.headers["Authorization"] = "Bearer " + @auth_token
|
71
|
+
request.headers["Content-Type"] = "application/json"
|
70
72
|
end
|
71
73
|
rescue Faraday::ResourceNotFound
|
72
74
|
UI.user_error!("#{ErrorMessage::INVALID_APP_ID}: #{app_id}")
|
@@ -89,7 +91,7 @@ module Fastlane
|
|
89
91
|
if binary_path.nil? || !File.exist?(binary_path)
|
90
92
|
UI.crash!("#{ErrorMessage.binary_not_found(@binary_type)}: #{binary_path}")
|
91
93
|
end
|
92
|
-
binary_hash = Digest::SHA256.hexdigest(
|
94
|
+
binary_hash = Digest::SHA256.hexdigest(read_binary(binary_path))
|
93
95
|
|
94
96
|
begin
|
95
97
|
response = connection.get(v1_apps_url(app_id)) do |request|
|
@@ -114,7 +116,7 @@ module Fastlane
|
|
114
116
|
#
|
115
117
|
# Throws a user_error if an invalid app id is passed in, or if the binary file does not exist
|
116
118
|
def upload_binary(app_id, binary_path, platform)
|
117
|
-
connection.post(binary_upload_url(app_id),
|
119
|
+
connection.post(binary_upload_url(app_id), read_binary(binary_path)) do |request|
|
118
120
|
request.headers["Authorization"] = "Bearer " + @auth_token
|
119
121
|
request.headers["X-APP-DISTRO-API-CLIENT-ID"] = "fastlane"
|
120
122
|
request.headers["X-APP-DISTRO-API-CLIENT-TYPE"] = platform
|
@@ -223,6 +225,11 @@ module Fastlane
|
|
223
225
|
conn.adapter(Faraday.default_adapter)
|
224
226
|
end
|
225
227
|
end
|
228
|
+
|
229
|
+
def read_binary(path)
|
230
|
+
# File must be read in binary mode to work on Windows
|
231
|
+
File.open(path, 'rb').read
|
232
|
+
end
|
226
233
|
end
|
227
234
|
end
|
228
235
|
end
|
data/lib/fastlane/plugin/firebase_app_distribution/helper/firebase_app_distribution_helper.rb
CHANGED
@@ -28,10 +28,10 @@ module Fastlane
|
|
28
28
|
CFPropertyList.native_types(CFPropertyList::List.new(file: path).value)
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
32
|
-
app_path = parse_plist("#{
|
33
|
-
UI.shell_error!("can't extract application path from Info.plist at #{
|
34
|
-
identifier = parse_plist("#{
|
31
|
+
def get_ios_app_id_from_archive_plist(archive_path, plist_path)
|
32
|
+
app_path = parse_plist("#{archive_path}/Info.plist")["ApplicationProperties"]["ApplicationPath"]
|
33
|
+
UI.shell_error!("can't extract application path from Info.plist at #{archive_path}") if app_path.empty?
|
34
|
+
identifier = parse_plist("#{archive_path}/Products/#{app_path}/#{plist_path}")["GOOGLE_APP_ID"]
|
35
35
|
UI.shell_error!("can't extract GOOGLE_APP_ID") if identifier.empty?
|
36
36
|
return identifier
|
37
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Natchev
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2020-09-
|
13
|
+
date: 2020-09-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: pry
|