fastlane-plugin-firebase_app_distribution 0.2.0.pre.2 → 0.2.0.pre.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7387fdbb5db28a63ea91ef6e4feb290f4cdb71b93e8c7132595098f94f1ffc16
4
- data.tar.gz: d24c551ec1c81f90ca38307aa75f7c3884982fdc58de2911f54b5971056a4a99
3
+ metadata.gz: c591cb4a3b841f9fc26c94f3ff32b78b321ed904cc176e05a053e330543cd535
4
+ data.tar.gz: 0114a22cc34eec1970b5b280746b46b9d858407bbb5c1c7b3f3d54842e75b4d5
5
5
  SHA512:
6
- metadata.gz: fe83dbc6eaca609c5471732598f004775ff2139d9d24487bb5021d821a909dfce61f955166c3ed1e115186909c7b455a0578237923845a5015d5ac776c57fe5c
7
- data.tar.gz: 440ac81fb3b05743c511d22f2096c099a636cfc6df06a8d4a8703f9dff8d727c4841f6218e4503cec22d765d2379dc5bbca4ae76bc2b98dcb79007d2b45533ce
6
+ metadata.gz: 493da92f746defa50af47f9b2d920b65fa5fcbfbb085f0be74979fe7f26f684b78697be17c5e32eeac7fe1d0d78667ece5ef7198138358f6831870c382a5d753
7
+ data.tar.gz: 7afb5987aa4fd08032d4fa684b9c291d3c4dc762d2978b37bbe4e921ae5730a9a547819a49b61ee2d120617d961b13891b03f17f1ad48deb004eb125b658ad65
@@ -13,7 +13,6 @@ require_relative '../helper/firebase_app_distribution_auth_client'
13
13
  module Fastlane
14
14
  module Actions
15
15
  class FirebaseAppDistributionAction < Action
16
- DEFAULT_FIREBASE_CLI_PATH = `which firebase`
17
16
  FIREBASECMD_ACTION = "appdistribution:distribute".freeze
18
17
 
19
18
  extend Auth::FirebaseAppDistributionAuthClient
@@ -108,20 +107,8 @@ module Fastlane
108
107
  FastlaneCore::ConfigItem.new(key: :firebase_cli_path,
109
108
  env_name: "FIREBASEAPPDISTRO_FIREBASE_CLI_PATH",
110
109
  description: "The absolute path of the firebase cli command",
111
- default_value: DEFAULT_FIREBASE_CLI_PATH,
112
- default_value_dynamic: true,
113
- optional: false,
114
- type: String,
115
- verify_block: proc do |value|
116
- value.chomp!
117
- if value.to_s == "" || !File.exist?(value)
118
- UI.user_error!("firebase_cli_path: missing path to firebase cli tool. Please install firebase in $PATH or specify path")
119
- end
120
-
121
- unless is_firebasecmd_supported?(value)
122
- UI.user_error!("firebase_cli_path: `#{value}` does not support the `#{FIREBASECMD_ACTION}` command. Please download (https://appdistro.page.link/firebase-cli-download) or specify the path to the correct version of firebse")
123
- end
124
- end),
110
+ optional: true,
111
+ type: String),
125
112
  FastlaneCore::ConfigItem.new(key: :groups,
126
113
  env_name: "FIREBASEAPPDISTRO_GROUPS",
127
114
  description: "The groups used for distribution, separated by commas",
@@ -16,20 +16,20 @@ module Fastlane
16
16
  authorizer = Google::Auth::UserAuthorizer.new(client_id, SCOPE, nil)
17
17
  url = authorizer.get_authorization_url(base_url: OOB_URI)
18
18
 
19
- UI.message("Please open the following address in your browser:")
19
+ UI.message("Open the following address in your browser and sign in with your Google account:")
20
20
  UI.message(url)
21
21
  UI.message("")
22
22
  code = UI.input("Enter the resulting code here: ")
23
23
  credentials = authorizer.get_credentials_from_code(code: code, base_url: OOB_URI)
24
-
25
- UI.message("Refresh Token: #{credentials.refresh_token}")
26
24
  UI.message("")
27
- UI.message("Set the refresh token as a FIREBASE_TOKEN environment variable")
25
+
26
+ UI.success("Set the refresh token as the FIREBASE_TOKEN environment variable")
27
+ UI.success("Refresh Token: #{credentials.refresh_token}")
28
28
  rescue Signet::AuthorizationError
29
- UI.error("The code you entered was invalid. Ensure that you have copied the code correctly.")
29
+ UI.error("The code you entered is invalid. Copy and paste the code and try again.")
30
30
  rescue => error
31
31
  UI.error(error.to_s)
32
- UI.crash!("An error has occured please login again.")
32
+ UI.crash!("An error has occured, please login again.")
33
33
  end
34
34
 
35
35
  #####################################################
@@ -11,7 +11,10 @@ module Fastlane
11
11
 
12
12
  def initialize(auth_token, platform)
13
13
  @auth_token = auth_token
14
- if platform == :ios || platform.nil?
14
+
15
+ if platform.nil?
16
+ @binary_type = "IPA/APK"
17
+ elsif platform == :ios
15
18
  @binary_type = "IPA"
16
19
  else
17
20
  @binary_type = "APK"
@@ -70,26 +73,34 @@ module Fastlane
70
73
  # rescue Faraday::ClientError
71
74
  # UI.user_error!("#{ErrorMessage::INVALID_RELEASE_ID}: #{release_id}")
72
75
  end
73
- UI.success("Release notes have been posted.")
76
+ UI.success("Posted release notes.")
74
77
  end
75
78
 
79
+ # Returns the url encoded upload token used for get_upload_status calls:
80
+ # projects/<project-number>/apps/<app-id>/releases/-/binaries/<binary-hash>
81
+ #
82
+ # args
83
+ # app_id - Firebase App ID
84
+ # binary_path - Absolute path to your app's apk/ipa file
85
+ #
86
+ # Throws a user_error if an invalid app id is passed in, the binary file does
87
+ # not exist, or invalid auth credentials are used (e.g. wrong project permissions)
76
88
  def get_upload_token(app_id, binary_path)
77
- begin
78
- binary_hash = Digest::SHA256.hexdigest(File.open(binary_path).read)
79
- rescue Errno::ENOENT
89
+ if binary_path.nil? || !File.exist?(binary_path)
80
90
  UI.crash!("#{ErrorMessage.binary_not_found(@binary_type)}: #{binary_path}")
81
91
  end
92
+ binary_hash = Digest::SHA256.hexdigest(File.open(binary_path).read)
82
93
 
83
94
  begin
84
95
  response = connection.get(v1_apps_url(app_id)) do |request|
85
96
  request.headers["Authorization"] = "Bearer " + @auth_token
86
97
  end
87
98
  rescue Faraday::ResourceNotFound
88
- UI.crash!("#{ErrorMessage::INVALID_APP_ID}: #{app_id}")
99
+ UI.user_error!("#{ErrorMessage::INVALID_APP_ID}: #{app_id}")
89
100
  end
90
101
  contact_email = response.body[:contactEmail]
91
102
  if contact_email.nil? || contact_email.strip.empty?
92
- UI.crash!(ErrorMessage::GET_APP_NO_CONTACT_EMAIL_ERROR)
103
+ UI.user_error!(ErrorMessage::GET_APP_NO_CONTACT_EMAIL_ERROR)
93
104
  end
94
105
  return upload_token_format(response.body[:appId], response.body[:projectNumber], binary_hash)
95
106
  end
@@ -132,7 +143,7 @@ module Fastlane
132
143
  MAX_POLLING_RETRIES.times do
133
144
  upload_status_response = get_upload_status(app_id, upload_token)
134
145
  if upload_status_response.success? || upload_status_response.already_uploaded?
135
- UI.success("Uploaded #{@binary_type} Successfully!")
146
+ UI.success("Uploaded #{@binary_type} successfully!")
136
147
  break
137
148
  elsif upload_status_response.in_progress?
138
149
  sleep(POLLING_INTERVAL_SECONDS)
@@ -1,20 +1,20 @@
1
1
  module ErrorMessage
2
2
  MISSING_CREDENTIALS = "Missing authentication credentials. Check that your Firebase refresh token is set or that your service account file path is correct and try again."
3
- MISSING_APP_ID = "Missing app id. Please check that it was passed in and try again"
3
+ MISSING_APP_ID = "Missing app id. Please check that the app parameter is set and try again"
4
4
  SERVICE_CREDENTIALS_NOT_FOUND = "Service credentials file does not exist. Please check the service credentials path and try again"
5
5
  PARSE_SERVICE_CREDENTIALS_ERROR = "Failed to extract service account information from the service credentials file"
6
6
  UPLOAD_RELEASE_NOTES_ERROR = "App Distribution halted because it had a problem uploading release notes"
7
7
  UPLOAD_TESTERS_ERROR = "App Distribution halted because it had a problem adding testers/groups"
8
8
  GET_RELEASE_TIMEOUT = "App Distribution failed to fetch release information"
9
- REFRESH_TOKEN_ERROR = "Could not generate credentials from the refresh token specified."
9
+ REFRESH_TOKEN_ERROR = "App Distribution could not generate credentials from the refresh token specified."
10
10
  GET_APP_ERROR = "App Distribution failed to fetch app information"
11
11
  APP_NOT_ONBOARDED_ERROR = "App Distribution not onboarded"
12
12
  GET_APP_NO_CONTACT_EMAIL_ERROR = "App Distribution could not find a contact email associated with this app. Contact Email"
13
13
  INVALID_APP_ID = "App Distribution could not find your app. Make sure to onboard your app by pressing the \"Get started\" button on the App Distribution page in the Firebase console: https://console.firebase.google.com/project/_/appdistribution. App ID"
14
14
  INVALID_PATH = "Could not read content from"
15
- INVALID_TESTERS = "Could not enable access for testers. Ensure that the groups exist and the tester emails are formatted correctly"
15
+ INVALID_TESTERS = "Could not enable access for testers. Check that the groups exist and the tester emails are formatted correctly"
16
16
  INVALID_RELEASE_ID = "App distribution failed to fetch release with id"
17
- SERVICE_CREDENTIALS_ERROR = "Could not generate credentials from the service credentials file specified. Service Account Path"
17
+ SERVICE_CREDENTIALS_ERROR = "App Distribution could not generate credentials from the service credentials file specified. Service Account Path"
18
18
 
19
19
  def self.binary_not_found(binary_type)
20
20
  "Could not find the #{binary_type}. Make sure you set the #{binary_type} path parameter to point to your #{binary_type}"
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module FirebaseAppDistribution
3
- VERSION = "0.2.0.pre.2"
3
+ VERSION = "0.2.0.pre.3"
4
4
  end
5
5
  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.0.pre.2
4
+ version: 0.2.0.pre.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-08-06 00:00:00.000000000 Z
13
+ date: 2020-08-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: pry
@@ -177,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
177
  - !ruby/object:Gem::Version
178
178
  version: 1.3.1
179
179
  requirements: []
180
- rubygems_version: 3.1.4
180
+ rubygems_version: 3.1.2
181
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