fastlane-plugin-amazon_app_submission 0.2.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +70 -1
- data/lib/fastlane/plugin/amazon_app_submission/actions/amazon_app_submission_action.rb +72 -20
- data/lib/fastlane/plugin/amazon_app_submission/helper/amazon_app_submission_helper.rb +123 -41
- data/lib/fastlane/plugin/amazon_app_submission/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0e6f5db2e79b36447f13ff25a3e8f8573cbdd273578ed7ede2f645f4a534b33
|
4
|
+
data.tar.gz: c76ce77ad9e439cf5d68a8b672c8e714488f5606f2cd27ff2958ba551a2d4e2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3996ee47b85cb300b2d5ea07216960aa7fce672ff0dab042216018d83895b127f50b04bff9dcac283a2766a3ae3b17bd4ce475b21ba23a687d88f30313c06211
|
7
|
+
data.tar.gz: a9ebb48964cade0bfa36a415a888629ee51710575b99baf731bffffaab9e580ddf5f0ea6107c34803c1283473f6a1e6ceff15f940aabc90215df3f5201998bbf
|
data/README.md
CHANGED
@@ -1 +1,70 @@
|
|
1
|
-
# amazon-app-
|
1
|
+
# fastlane-plugin-amazon-app-submission
|
2
|
+
|
3
|
+
## Getting Started
|
4
|
+
|
5
|
+
This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To get started with `amazon_app_submission`, add it to your project by running:
|
6
|
+
|
7
|
+
```bash
|
8
|
+
fastlane add_plugin amazon_app_submission
|
9
|
+
```
|
10
|
+
|
11
|
+
## About amazon_app_submission
|
12
|
+
|
13
|
+
* Project link on rubygems [fastlane-plugin-amazon_app_submission](https://rubygems.org/gems/fastlane-plugin-amazon_app_submission)
|
14
|
+
* Upload the apk to the Amazon Appstore using the [App Submission API](https://developer.amazon.com/docs/app-submission-api/overview.html).
|
15
|
+
* App Submission API Reference is [App Submission RESTFUL API](https://developer.amazon.com/docs/app-submission-api/appsub-api-ref.html).
|
16
|
+
|
17
|
+
## Usage
|
18
|
+
|
19
|
+
Following the [guide](https://developer.amazon.com/docs/app-submission-api/auth.html), you will need to generate `client_id` and `client_secret` to access the console in advance.
|
20
|
+
|
21
|
+
For `app_id` you can get it from Amazon app dashboard
|
22
|
+
Please set the apk path to `apk_path` field
|
23
|
+
|
24
|
+
Call `amazon_app_submission` in your Fastfile.
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
amazon_app_submission(
|
28
|
+
client_id: "<CLIENT_ID>",
|
29
|
+
client_secret: "<CLIENT_SECRET>",
|
30
|
+
app_id: "<APP_ID>",
|
31
|
+
# Optional
|
32
|
+
apk_path: "<APK_PATH>",
|
33
|
+
upload_apk: true,
|
34
|
+
changelogs_path: "<CHANGELOG_PATH>",
|
35
|
+
upload_changelogs: false,
|
36
|
+
submit_for_review: false
|
37
|
+
)
|
38
|
+
```
|
39
|
+
|
40
|
+
| param | default value | optional | description
|
41
|
+
|:----------|:-----------:|:-----------:|:-----------:|
|
42
|
+
client_id | - | false | getting client id from Amazon developer console dashboard
|
43
|
+
client_secret | - | false | getting client secret from Amazon developer console dashboard
|
44
|
+
app_id | - | false | getting app id from Amazon developer console dashboard
|
45
|
+
apk_path | - | true | link where you storing the release apk
|
46
|
+
upload_apk | true | true | set this to false to not upload an apk. can be used to only upload changelogs
|
47
|
+
changelogs_path | "" | true | setting the folder path where you have the change logs with different file for each language, if language file not found it will use default.txt
|
48
|
+
upload_changelogs | false | true | updating the change logs for the upcoming version
|
49
|
+
submit_for_review | false | true | submit the uploaded APK to the store
|
50
|
+
|
51
|
+
* changelogs folder files name should be:
|
52
|
+
|
53
|
+
| Language | File name
|
54
|
+
|:----------|:-----------:|
|
55
|
+
English-US | en-US.txt
|
56
|
+
English-British | en-GB.txt
|
57
|
+
English-Australia | en-AU.txt
|
58
|
+
English-India | en-IN.txt
|
59
|
+
Italian |it-IT.txt
|
60
|
+
French | fr-FR.txt
|
61
|
+
Spanish | es-ES.txt
|
62
|
+
Spanish-Mexican | es-MX.txt
|
63
|
+
Other | default.txt
|
64
|
+
|
65
|
+
## Testing
|
66
|
+
|
67
|
+
For testing the plugin locally you have to get `client_id`, `client_secret`, `app_id` and `apk_path` in fastlane/Fastfile
|
68
|
+
please check Usage step to see how you can get them.
|
69
|
+
|
70
|
+
Then call `bundle exec fastlane test` in your terminal
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'fastlane/action'
|
2
2
|
require_relative '../helper/amazon_app_submission_helper'
|
3
3
|
|
4
4
|
module Fastlane
|
@@ -11,35 +11,58 @@ module Fastlane
|
|
11
11
|
|
12
12
|
if token.nil?
|
13
13
|
UI.message("Cannot retrieve token, please check your client ID and client secret")
|
14
|
-
|
15
|
-
UI.message("the token is #{token}")
|
16
|
-
end
|
14
|
+
end
|
17
15
|
|
16
|
+
UI.message("Getting current edit")
|
18
17
|
current_edit_id, edit_eTag = Helper::AmazonAppSubmissionHelper.open_edit(token, params[:app_id])
|
19
|
-
|
18
|
+
|
20
19
|
if current_edit_id.nil?
|
20
|
+
UI.message("Current edit not found, creating a new edit")
|
21
21
|
Helper::AmazonAppSubmissionHelper.create_new_edit(token, params[:app_id])
|
22
22
|
current_edit_id, edit_eTag = Helper::AmazonAppSubmissionHelper.open_edit(token, params[:app_id])
|
23
23
|
end
|
24
|
-
|
25
|
-
current_apk_id = Helper::AmazonAppSubmissionHelper.get_current_apk_id(token, params[:app_id], current_edit_id)
|
26
24
|
|
27
|
-
|
25
|
+
if current_edit_id.nil?
|
26
|
+
UI.error("Creating new edit failed!")
|
27
|
+
return
|
28
|
+
end
|
29
|
+
|
30
|
+
if params[:upload_apk]
|
31
|
+
UI.message("Get current apk id")
|
32
|
+
current_apk_id = Helper::AmazonAppSubmissionHelper.get_current_apk_id(token, params[:app_id], current_edit_id)
|
28
33
|
|
29
|
-
|
30
|
-
|
31
|
-
if replace_apk_response_code === 200
|
32
|
-
Helper::AmazonAppSubmissionHelper.commit_edit(token, params[:app_id], current_edit_id, edit_eTag)
|
33
|
-
end
|
34
|
+
UI.message("Get current apk ETag")
|
35
|
+
current_apk_eTag = Helper::AmazonAppSubmissionHelper.get_current_apk_etag(token, params[:app_id], current_edit_id, current_apk_id)
|
34
36
|
|
37
|
+
UI.message("Replacing the apk with apk from #{params[:apk_path]}")
|
38
|
+
replace_apk_response_code, replace_apk_response = Helper::AmazonAppSubmissionHelper.replaceExistingApk(token, params[:app_id], current_edit_id, current_apk_id, current_apk_eTag, params[:apk_path])
|
39
|
+
end
|
40
|
+
|
41
|
+
if params[:upload_changelogs]
|
42
|
+
UI.message("Updating the changelogs")
|
43
|
+
Helper::AmazonAppSubmissionHelper.update_listings( token, params[:app_id],current_edit_id, params[:changelogs_path], params[:changelogs_path])
|
44
|
+
end
|
45
|
+
|
46
|
+
if params[:upload_apk]
|
47
|
+
if replace_apk_response_code == '200'
|
48
|
+
if params[:submit_for_review]
|
49
|
+
UI.message("Submitting to Amazon app store")
|
50
|
+
Helper::AmazonAppSubmissionHelper.commit_edit(token, params[:app_id], current_edit_id, edit_eTag)
|
51
|
+
end
|
52
|
+
else
|
53
|
+
UI.message("Amazon app submission failed at replacing the apk error code #{replace_apk_response_code} and error respones #{replace_apk_response}")
|
54
|
+
return
|
55
|
+
end
|
56
|
+
end
|
57
|
+
UI.message("Amazon app submission finished successfully!")
|
35
58
|
end
|
36
59
|
|
37
60
|
def self.description
|
38
|
-
"
|
61
|
+
"Fastlane plugin for Amazon App Submissions"
|
39
62
|
end
|
40
63
|
|
41
64
|
def self.authors
|
42
|
-
["mohammedhemaid"]
|
65
|
+
["mohammedhemaid", "saschagraeff"]
|
43
66
|
end
|
44
67
|
|
45
68
|
def self.return_value
|
@@ -48,7 +71,7 @@ module Fastlane
|
|
48
71
|
|
49
72
|
def self.details
|
50
73
|
# Optional:
|
51
|
-
"
|
74
|
+
"Fastlane plugin for Amazon App Submissions"
|
52
75
|
end
|
53
76
|
|
54
77
|
def self.available_options
|
@@ -58,7 +81,7 @@ module Fastlane
|
|
58
81
|
description: "Amazon App Submission Client ID",
|
59
82
|
optional: false,
|
60
83
|
type: String),
|
61
|
-
|
84
|
+
|
62
85
|
FastlaneCore::ConfigItem.new(key: :client_secret,
|
63
86
|
env_name: "AMAZON_APP_SUBMISSION_CLIENT_SECRET",
|
64
87
|
description: "Amazon App Submission Client Secret",
|
@@ -71,12 +94,41 @@ module Fastlane
|
|
71
94
|
optional: false,
|
72
95
|
type: String),
|
73
96
|
|
97
|
+
FastlaneCore::ConfigItem.new(key: :upload_apk,
|
98
|
+
env_name: "AMAZON_APP_SUBMISSION_UPLOAD_APK",
|
99
|
+
description: "Amazon App Submission upload apk file",
|
100
|
+
default_value: true,
|
101
|
+
optional: true,
|
102
|
+
type: Boolean),
|
103
|
+
|
74
104
|
FastlaneCore::ConfigItem.new(key: :apk_path,
|
75
105
|
env_name: "AMAZON_APP_SUBMISSION_APK_PATH",
|
76
106
|
description: "Amazon App Submission APK Path",
|
77
|
-
|
78
|
-
|
79
|
-
|
107
|
+
default_value: "",
|
108
|
+
optional: true,
|
109
|
+
type: String),
|
110
|
+
|
111
|
+
FastlaneCore::ConfigItem.new(key: :changelogs_path,
|
112
|
+
env_name: "AMAZON_APP_SUBMISSION_CHANGELOGS_PATH",
|
113
|
+
description: "Amazon App Submission changelogs path",
|
114
|
+
default_value: "",
|
115
|
+
optional: true,
|
116
|
+
type: String),
|
117
|
+
|
118
|
+
FastlaneCore::ConfigItem.new(key: :upload_changelogs,
|
119
|
+
env_name: "AMAZON_APP_SUBMISSION_SKIP_UPLOAD_CHANGELOGS",
|
120
|
+
description: "Amazon App Submission upload changelogs",
|
121
|
+
default_value: false,
|
122
|
+
optional: true,
|
123
|
+
type: Boolean),
|
124
|
+
|
125
|
+
FastlaneCore::ConfigItem.new(key: :submit_for_review,
|
126
|
+
env_name: "AMAZON_APP_SUBMISSION_SUBMIT_FOR_REVIEW",
|
127
|
+
description: "Amazon App Submission submit for review",
|
128
|
+
default_value: false,
|
129
|
+
optional: true,
|
130
|
+
type: Boolean)
|
131
|
+
|
80
132
|
# FastlaneCore::ConfigItem.new(key: :your_option,
|
81
133
|
# env_name: "AMAZON_APP_SUBMISSION_YOUR_OPTION",
|
82
134
|
# description: "A description of your option",
|
@@ -13,10 +13,6 @@ module Fastlane
|
|
13
13
|
|
14
14
|
def self.get_token(client_id, client_secret)
|
15
15
|
UI.important("Fetching app access token")
|
16
|
-
|
17
|
-
UI.important("client_id #{client_id}")
|
18
|
-
UI.important("client_secret #{client_secret}")
|
19
|
-
|
20
16
|
uri = URI('https://api.amazon.com/auth/o2/token')
|
21
17
|
http = Net::HTTP.new(uri.host, uri.port)
|
22
18
|
http.use_ssl = true
|
@@ -26,14 +22,17 @@ module Fastlane
|
|
26
22
|
|
27
23
|
res = http.request(req)
|
28
24
|
result_json = JSON.parse(res.body)
|
29
|
-
|
30
25
|
auth_token = "Bearer #{result_json['access_token']}"
|
31
26
|
|
27
|
+
if result_json['error'] == 'invalid_scope'
|
28
|
+
UI.message("It seems that the provided security profile is not attached to the App Submission API")
|
29
|
+
end
|
30
|
+
|
32
31
|
return auth_token
|
33
32
|
end
|
34
33
|
|
35
34
|
def self.create_new_edit(token, app_id)
|
36
|
-
|
35
|
+
|
37
36
|
create_edit_path = "/v1/applications/#{app_id}/edits"
|
38
37
|
create_edit_url = BASE_URL + create_edit_path
|
39
38
|
|
@@ -48,12 +47,12 @@ module Fastlane
|
|
48
47
|
|
49
48
|
res = http.request(req)
|
50
49
|
current_edit = JSON.parse(res.body)
|
51
|
-
|
50
|
+
|
52
51
|
return current_edit['id']
|
53
52
|
end
|
54
|
-
|
53
|
+
|
55
54
|
def self.open_edit(token, app_id)
|
56
|
-
|
55
|
+
|
57
56
|
get_edit_path = "/v1/applications/#{app_id}/edits"
|
58
57
|
get_edit_url = BASE_URL + get_edit_path
|
59
58
|
|
@@ -69,17 +68,15 @@ module Fastlane
|
|
69
68
|
res = http.request(req)
|
70
69
|
current_edit = JSON.parse(res.body)
|
71
70
|
|
72
|
-
UI.message("eTag #{res.header['ETag']}")
|
73
|
-
|
74
71
|
return current_edit['id'], res.header['ETag']
|
75
72
|
end
|
76
73
|
|
77
|
-
def self.
|
74
|
+
def self.get_current_apk_id(token, app_id, edit_id)
|
78
75
|
|
79
|
-
|
80
|
-
|
76
|
+
get_apks_path = "/v1/applications/#{app_id}/edits/#{edit_id}/apks"
|
77
|
+
get_apks_url = BASE_URL + get_apks_path
|
81
78
|
|
82
|
-
uri = URI(
|
79
|
+
uri = URI(get_apks_url)
|
83
80
|
http = Net::HTTP.new(uri.host, uri.port)
|
84
81
|
http.use_ssl = true
|
85
82
|
req = Net::HTTP::Get.new(
|
@@ -89,15 +86,20 @@ module Fastlane
|
|
89
86
|
)
|
90
87
|
|
91
88
|
res = http.request(req)
|
92
|
-
|
89
|
+
if !res.body.nil?
|
90
|
+
apks = JSON.parse(res.body)
|
91
|
+
firstAPK = apks.kind_of?(Array) ? apks[0] : apks
|
92
|
+
apk_id = firstAPK['id']
|
93
|
+
return apk_id
|
94
|
+
end
|
93
95
|
end
|
94
96
|
|
95
|
-
def self.
|
97
|
+
def self.get_current_apk_etag(token, app_id, edit_id, apk_id)
|
96
98
|
|
97
|
-
|
98
|
-
|
99
|
+
get_apks_etag = "/v1/applications/#{app_id}/edits/#{edit_id}/apks/#{apk_id}"
|
100
|
+
get_apks_etag_url = BASE_URL + get_apks_etag
|
99
101
|
|
100
|
-
uri = URI(
|
102
|
+
uri = URI(get_apks_etag_url)
|
101
103
|
http = Net::HTTP.new(uri.host, uri.port)
|
102
104
|
http.use_ssl = true
|
103
105
|
req = Net::HTTP::Get.new(
|
@@ -107,43 +109,47 @@ module Fastlane
|
|
107
109
|
)
|
108
110
|
|
109
111
|
res = http.request(req)
|
110
|
-
|
111
|
-
apks = JSON.parse(res.body)
|
112
|
-
firstAPK = apks[0]
|
113
|
-
apk_id = firstAPK['id']
|
114
|
-
return apk_id
|
115
|
-
end
|
112
|
+
return res.header['ETag']
|
116
113
|
end
|
117
114
|
|
118
|
-
def self.replaceExistingApk(token, app_id, edit_id, apk_id, eTag, apk_path)
|
115
|
+
def self.replaceExistingApk(token, app_id, edit_id, apk_id, eTag, apk_path, should_retry = true)
|
119
116
|
|
120
117
|
replace_apk_path = "/v1/applications/#{app_id}/edits/#{edit_id}/apks/#{apk_id}/replace"
|
121
118
|
local_apk = File.open(apk_path, "r").read
|
122
|
-
|
119
|
+
|
120
|
+
apk_uri = URI.parse(apk_path)
|
121
|
+
apk_name = apk_uri.path.split('/').last
|
122
|
+
|
123
123
|
replace_apk_url = BASE_URL + replace_apk_path
|
124
124
|
uri = URI(replace_apk_url)
|
125
125
|
http = Net::HTTP.new(uri.host, uri.port)
|
126
126
|
http.use_ssl = true
|
127
|
-
http.write_timeout =
|
127
|
+
http.write_timeout = 1000
|
128
128
|
req = Net::HTTP::Put.new(
|
129
129
|
uri.path,
|
130
130
|
'Authorization' => token,
|
131
131
|
'Content-Type' => 'application/vnd.android.package-archive',
|
132
|
+
'fileName' => apk_name,
|
132
133
|
'If-Match' => eTag
|
133
134
|
)
|
134
135
|
|
135
136
|
req.body = local_apk
|
136
137
|
res = http.request(req)
|
137
|
-
|
138
|
+
replace_apk_response = JSON.parse(res.body)
|
139
|
+
# Retry again if replace failed
|
140
|
+
if res.code == '412' && should_retry
|
141
|
+
UI.message("replacing the apk failed, retrying uploading it again...")
|
142
|
+
replaceExistingApk(token, app_id, edit_id, apk_id, eTag, apk_path, false)
|
143
|
+
return
|
144
|
+
end
|
145
|
+
return res.code, replace_apk_response
|
138
146
|
end
|
139
147
|
|
140
148
|
def self.delete_apk(token, app_id, edit_id, apk_id, eTag)
|
141
149
|
|
142
|
-
delete_apk_path = "/v1/applications/#{app_id}/edits/#{edit_id}/apks/#{apk_id}"
|
150
|
+
delete_apk_path = "/v1/applications/#{app_id}/edits/#{edit_id}/apks/#{apk_id}"
|
143
151
|
delete_apk_url = BASE_URL + delete_apk_path
|
144
152
|
|
145
|
-
UI.message("delete_apk_url #{delete_apk_url}")
|
146
|
-
|
147
153
|
uri = URI(delete_apk_url)
|
148
154
|
http = Net::HTTP.new(uri.host, uri.port)
|
149
155
|
http.use_ssl = true
|
@@ -160,15 +166,15 @@ module Fastlane
|
|
160
166
|
|
161
167
|
def self.uploadNewApk(token, app_id, edit_id, apk_path)
|
162
168
|
|
163
|
-
add_apk_path = "/v1/applications/#{app_id}/edits/#{edit_id}/apks/upload"
|
169
|
+
add_apk_path = "/v1/applications/#{app_id}/edits/#{edit_id}/apks/upload"
|
164
170
|
add_apk_url = BASE_URL + add_apk_path
|
165
171
|
local_apk = File.open(apk_path, 'r').read
|
166
172
|
|
167
173
|
uri = URI(add_apk_url)
|
168
174
|
http = Net::HTTP.new(uri.host, uri.port)
|
169
175
|
http.use_ssl = true
|
170
|
-
http.write_timeout =
|
171
|
-
http.read_timeout =
|
176
|
+
http.write_timeout = 1000
|
177
|
+
http.read_timeout = 1000
|
172
178
|
req = Net::HTTP::Post.new(
|
173
179
|
uri.path,
|
174
180
|
'Authorization' => token,
|
@@ -180,9 +186,89 @@ module Fastlane
|
|
180
186
|
result_json = JSON.parse(res.body)
|
181
187
|
end
|
182
188
|
|
189
|
+
def self.update_listings(token, app_id, edit_id, changelogs_path, upload_changelogs)
|
190
|
+
|
191
|
+
listings_path = "/v1/applications/#{app_id}/edits/#{edit_id}/listings"
|
192
|
+
listings_url = BASE_URL + listings_path
|
193
|
+
|
194
|
+
uri = URI(listings_url)
|
195
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
196
|
+
http.use_ssl = true
|
197
|
+
req = Net::HTTP::Get.new(
|
198
|
+
uri.path,
|
199
|
+
'Authorization' => token,
|
200
|
+
'Content-Type' => 'application/json'
|
201
|
+
)
|
202
|
+
|
203
|
+
res = http.request(req)
|
204
|
+
listings_response = JSON.parse(res.body)
|
205
|
+
|
206
|
+
# Iterating over the languages for getting the ETag.
|
207
|
+
listings_response['listings'].each do |lang, listing|
|
208
|
+
lang_path = "/v1/applications/#{app_id}/edits/#{edit_id}/listings/#{lang}"
|
209
|
+
lang_url = BASE_URL + lang_path
|
210
|
+
|
211
|
+
uri = URI(lang_url)
|
212
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
213
|
+
http.use_ssl = true
|
214
|
+
req = Net::HTTP::Get.new(
|
215
|
+
uri.path,
|
216
|
+
'Authorization' => token,
|
217
|
+
'Content-Type' => 'application/json'
|
218
|
+
)
|
219
|
+
etag_response = http.request(req)
|
220
|
+
etag = etag_response.header['Etag']
|
221
|
+
|
222
|
+
recent_changes = find_changelog(
|
223
|
+
changelogs_path,
|
224
|
+
lang,
|
225
|
+
upload_changelogs,
|
226
|
+
)
|
227
|
+
|
228
|
+
listing[:recentChanges] = recent_changes
|
229
|
+
|
230
|
+
update_listings_path = "/v1/applications/#{app_id}/edits/#{edit_id}/listings/#{lang}"
|
231
|
+
update_listings_url = BASE_URL + update_listings_path
|
232
|
+
|
233
|
+
uri = URI(update_listings_url)
|
234
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
235
|
+
http.use_ssl = true
|
236
|
+
req = Net::HTTP::Put.new(
|
237
|
+
uri.path,
|
238
|
+
'Authorization' => token,
|
239
|
+
'Content-Type' => 'application/json',
|
240
|
+
'If-Match' => etag
|
241
|
+
)
|
242
|
+
|
243
|
+
req.body = listing.to_json
|
244
|
+
res = http.request(req)
|
245
|
+
listings_response = JSON.parse(res.body)
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
def self.find_changelog(changelogs_path, language, upload_changelogs)
|
250
|
+
# The Amazon appstore requires you to enter changelogs before reviewing.
|
251
|
+
# Therefore, if there is no metadata, hyphen text is returned.
|
252
|
+
changelog_text = '-'
|
253
|
+
return changelog_text if !upload_changelogs
|
254
|
+
|
255
|
+
path = File.join(changelogs_path, "#{language}.txt")
|
256
|
+
if File.exist?(path) && !File.zero?(path)
|
257
|
+
changelog_text = File.read(path, encoding: 'UTF-8')
|
258
|
+
else
|
259
|
+
defalut_changelog_path = File.join(changelogs_path, 'default.txt')
|
260
|
+
if File.exist?(defalut_changelog_path) && !File.zero?(defalut_changelog_path)
|
261
|
+
changelog_text = File.read(defalut_changelog_path, encoding: 'UTF-8')
|
262
|
+
else
|
263
|
+
UI.message("Could not find changelog for language '#{language}' at path #{path}...")
|
264
|
+
end
|
265
|
+
end
|
266
|
+
changelog_text
|
267
|
+
end
|
268
|
+
|
183
269
|
def self.commit_edit(token, app_id, edit_id, eTag)
|
184
270
|
|
185
|
-
commit_edit_path = "/v1/applications/#{app_id}/edits/#{edit_id}/commit"
|
271
|
+
commit_edit_path = "/v1/applications/#{app_id}/edits/#{edit_id}/commit"
|
186
272
|
commit_edit_url = BASE_URL + commit_edit_path
|
187
273
|
|
188
274
|
uri = URI(commit_edit_url)
|
@@ -197,10 +283,6 @@ module Fastlane
|
|
197
283
|
res = http.request(req)
|
198
284
|
result_json = JSON.parse(res.body)
|
199
285
|
end
|
200
|
-
|
201
|
-
def self.show_message
|
202
|
-
UI.message("Hello from the amazon_app_submission plugin helper!")
|
203
|
-
end
|
204
286
|
end
|
205
287
|
end
|
206
288
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-amazon_app_submission
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mohammedhemaid
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -162,7 +162,7 @@ files:
|
|
162
162
|
- lib/fastlane/plugin/amazon_app_submission/actions/amazon_app_submission_action.rb
|
163
163
|
- lib/fastlane/plugin/amazon_app_submission/helper/amazon_app_submission_helper.rb
|
164
164
|
- lib/fastlane/plugin/amazon_app_submission/version.rb
|
165
|
-
homepage:
|
165
|
+
homepage: https://github.com/ugroupmedia/fastlane-plugin-amazon-app-store-submission
|
166
166
|
licenses:
|
167
167
|
- MIT
|
168
168
|
metadata: {}
|