fastlane-plugin-amazon_app_submission 0.3.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 +12 -10
- data/lib/fastlane/plugin/amazon_app_submission/actions/amazon_app_submission_action.rb +43 -26
- data/lib/fastlane/plugin/amazon_app_submission/helper/amazon_app_submission_helper.rb +21 -17
- data/lib/fastlane/plugin/amazon_app_submission/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: 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
@@ -28,21 +28,23 @@ Call `amazon_app_submission` in your Fastfile.
|
|
28
28
|
client_id: "<CLIENT_ID>",
|
29
29
|
client_secret: "<CLIENT_SECRET>",
|
30
30
|
app_id: "<APP_ID>",
|
31
|
-
apk_path: "<APK_PATH>",
|
32
31
|
# Optional
|
33
|
-
|
32
|
+
apk_path: "<APK_PATH>",
|
33
|
+
upload_apk: true,
|
34
|
+
changelogs_path: "<CHANGELOG_PATH>",
|
34
35
|
upload_changelogs: false,
|
35
36
|
submit_for_review: false
|
36
37
|
)
|
37
38
|
```
|
38
39
|
|
39
|
-
| param | default value | optional | description
|
40
|
+
| param | default value | optional | description
|
40
41
|
|:----------|:-----------:|:-----------:|:-----------:|
|
41
|
-
client_id | - | false | getting client id from Amazon developer console dashboard
|
42
|
-
client_secret | - | false | getting client secret from Amazon developer console dashboard
|
43
|
-
app_id | - | false | getting app id from Amazon developer console dashboard
|
44
|
-
apk_path | - |
|
45
|
-
|
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
|
46
48
|
upload_changelogs | false | true | updating the change logs for the upcoming version
|
47
49
|
submit_for_review | false | true | submit the uploaded APK to the store
|
48
50
|
|
@@ -60,9 +62,9 @@ Spanish | es-ES.txt
|
|
60
62
|
Spanish-Mexican | es-MX.txt
|
61
63
|
Other | default.txt
|
62
64
|
|
63
|
-
## Testing
|
65
|
+
## Testing
|
64
66
|
|
65
|
-
For testing the plugin locally you have to get `client_id`, `client_secret`, `app_id` and `apk_path` in fastlane/Fastfile
|
67
|
+
For testing the plugin locally you have to get `client_id`, `client_secret`, `app_id` and `apk_path` in fastlane/Fastfile
|
66
68
|
please check Usage step to see how you can get them.
|
67
69
|
|
68
70
|
Then call `bundle exec fastlane test` in your terminal
|
@@ -11,49 +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
|
-
end
|
14
|
+
end
|
15
15
|
|
16
16
|
UI.message("Getting current edit")
|
17
17
|
current_edit_id, edit_eTag = Helper::AmazonAppSubmissionHelper.open_edit(token, params[:app_id])
|
18
|
-
|
18
|
+
|
19
19
|
if current_edit_id.nil?
|
20
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
|
-
UI.message("Get current apk id")
|
26
|
-
current_apk_id = Helper::AmazonAppSubmissionHelper.get_current_apk_id(token, params[:app_id], current_edit_id)
|
27
24
|
|
28
|
-
|
29
|
-
|
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)
|
30
33
|
|
31
|
-
|
32
|
-
|
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)
|
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
|
33
40
|
|
34
41
|
if params[:upload_changelogs]
|
35
42
|
UI.message("Updating the changelogs")
|
36
43
|
Helper::AmazonAppSubmissionHelper.update_listings( token, params[:app_id],current_edit_id, params[:changelogs_path], params[:changelogs_path])
|
37
44
|
end
|
38
|
-
|
39
|
-
if
|
40
|
-
if
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
47
56
|
end
|
48
57
|
UI.message("Amazon app submission finished successfully!")
|
49
58
|
end
|
50
59
|
|
51
60
|
def self.description
|
52
|
-
"
|
61
|
+
"Fastlane plugin for Amazon App Submissions"
|
53
62
|
end
|
54
63
|
|
55
64
|
def self.authors
|
56
|
-
["mohammedhemaid"]
|
65
|
+
["mohammedhemaid", "saschagraeff"]
|
57
66
|
end
|
58
67
|
|
59
68
|
def self.return_value
|
@@ -62,7 +71,7 @@ module Fastlane
|
|
62
71
|
|
63
72
|
def self.details
|
64
73
|
# Optional:
|
65
|
-
"
|
74
|
+
"Fastlane plugin for Amazon App Submissions"
|
66
75
|
end
|
67
76
|
|
68
77
|
def self.available_options
|
@@ -72,7 +81,7 @@ module Fastlane
|
|
72
81
|
description: "Amazon App Submission Client ID",
|
73
82
|
optional: false,
|
74
83
|
type: String),
|
75
|
-
|
84
|
+
|
76
85
|
FastlaneCore::ConfigItem.new(key: :client_secret,
|
77
86
|
env_name: "AMAZON_APP_SUBMISSION_CLIENT_SECRET",
|
78
87
|
description: "Amazon App Submission Client Secret",
|
@@ -85,10 +94,18 @@ module Fastlane
|
|
85
94
|
optional: false,
|
86
95
|
type: String),
|
87
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
|
+
|
88
104
|
FastlaneCore::ConfigItem.new(key: :apk_path,
|
89
105
|
env_name: "AMAZON_APP_SUBMISSION_APK_PATH",
|
90
106
|
description: "Amazon App Submission APK Path",
|
91
|
-
|
107
|
+
default_value: "",
|
108
|
+
optional: true,
|
92
109
|
type: String),
|
93
110
|
|
94
111
|
FastlaneCore::ConfigItem.new(key: :changelogs_path,
|
@@ -100,17 +117,17 @@ module Fastlane
|
|
100
117
|
|
101
118
|
FastlaneCore::ConfigItem.new(key: :upload_changelogs,
|
102
119
|
env_name: "AMAZON_APP_SUBMISSION_SKIP_UPLOAD_CHANGELOGS",
|
103
|
-
description: "Amazon App Submission
|
120
|
+
description: "Amazon App Submission upload changelogs",
|
104
121
|
default_value: false,
|
105
122
|
optional: true,
|
106
|
-
type: Boolean),
|
123
|
+
type: Boolean),
|
107
124
|
|
108
125
|
FastlaneCore::ConfigItem.new(key: :submit_for_review,
|
109
126
|
env_name: "AMAZON_APP_SUBMISSION_SUBMIT_FOR_REVIEW",
|
110
127
|
description: "Amazon App Submission submit for review",
|
111
128
|
default_value: false,
|
112
129
|
optional: true,
|
113
|
-
type: Boolean)
|
130
|
+
type: Boolean)
|
114
131
|
|
115
132
|
# FastlaneCore::ConfigItem.new(key: :your_option,
|
116
133
|
# env_name: "AMAZON_APP_SUBMISSION_YOUR_OPTION",
|
@@ -23,12 +23,16 @@ module Fastlane
|
|
23
23
|
res = http.request(req)
|
24
24
|
result_json = JSON.parse(res.body)
|
25
25
|
auth_token = "Bearer #{result_json['access_token']}"
|
26
|
-
|
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
|
+
|
27
31
|
return auth_token
|
28
32
|
end
|
29
33
|
|
30
34
|
def self.create_new_edit(token, app_id)
|
31
|
-
|
35
|
+
|
32
36
|
create_edit_path = "/v1/applications/#{app_id}/edits"
|
33
37
|
create_edit_url = BASE_URL + create_edit_path
|
34
38
|
|
@@ -43,12 +47,12 @@ module Fastlane
|
|
43
47
|
|
44
48
|
res = http.request(req)
|
45
49
|
current_edit = JSON.parse(res.body)
|
46
|
-
|
50
|
+
|
47
51
|
return current_edit['id']
|
48
52
|
end
|
49
|
-
|
53
|
+
|
50
54
|
def self.open_edit(token, app_id)
|
51
|
-
|
55
|
+
|
52
56
|
get_edit_path = "/v1/applications/#{app_id}/edits"
|
53
57
|
get_edit_url = BASE_URL + get_edit_path
|
54
58
|
|
@@ -82,11 +86,11 @@ module Fastlane
|
|
82
86
|
)
|
83
87
|
|
84
88
|
res = http.request(req)
|
85
|
-
if !res.body.nil?
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
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
|
90
94
|
end
|
91
95
|
end
|
92
96
|
|
@@ -112,7 +116,7 @@ module Fastlane
|
|
112
116
|
|
113
117
|
replace_apk_path = "/v1/applications/#{app_id}/edits/#{edit_id}/apks/#{apk_id}/replace"
|
114
118
|
local_apk = File.open(apk_path, "r").read
|
115
|
-
|
119
|
+
|
116
120
|
apk_uri = URI.parse(apk_path)
|
117
121
|
apk_name = apk_uri.path.split('/').last
|
118
122
|
|
@@ -143,7 +147,7 @@ module Fastlane
|
|
143
147
|
|
144
148
|
def self.delete_apk(token, app_id, edit_id, apk_id, eTag)
|
145
149
|
|
146
|
-
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}"
|
147
151
|
delete_apk_url = BASE_URL + delete_apk_path
|
148
152
|
|
149
153
|
uri = URI(delete_apk_url)
|
@@ -162,7 +166,7 @@ module Fastlane
|
|
162
166
|
|
163
167
|
def self.uploadNewApk(token, app_id, edit_id, apk_path)
|
164
168
|
|
165
|
-
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"
|
166
170
|
add_apk_url = BASE_URL + add_apk_path
|
167
171
|
local_apk = File.open(apk_path, 'r').read
|
168
172
|
|
@@ -203,7 +207,7 @@ module Fastlane
|
|
203
207
|
listings_response['listings'].each do |lang, listing|
|
204
208
|
lang_path = "/v1/applications/#{app_id}/edits/#{edit_id}/listings/#{lang}"
|
205
209
|
lang_url = BASE_URL + lang_path
|
206
|
-
|
210
|
+
|
207
211
|
uri = URI(lang_url)
|
208
212
|
http = Net::HTTP.new(uri.host, uri.port)
|
209
213
|
http.use_ssl = true
|
@@ -225,7 +229,7 @@ module Fastlane
|
|
225
229
|
|
226
230
|
update_listings_path = "/v1/applications/#{app_id}/edits/#{edit_id}/listings/#{lang}"
|
227
231
|
update_listings_url = BASE_URL + update_listings_path
|
228
|
-
|
232
|
+
|
229
233
|
uri = URI(update_listings_url)
|
230
234
|
http = Net::HTTP.new(uri.host, uri.port)
|
231
235
|
http.use_ssl = true
|
@@ -235,7 +239,7 @@ module Fastlane
|
|
235
239
|
'Content-Type' => 'application/json',
|
236
240
|
'If-Match' => etag
|
237
241
|
)
|
238
|
-
|
242
|
+
|
239
243
|
req.body = listing.to_json
|
240
244
|
res = http.request(req)
|
241
245
|
listings_response = JSON.parse(res.body)
|
@@ -264,7 +268,7 @@ module Fastlane
|
|
264
268
|
|
265
269
|
def self.commit_edit(token, app_id, edit_id, eTag)
|
266
270
|
|
267
|
-
commit_edit_path = "/v1/applications/#{app_id}/edits/#{edit_id}/commit"
|
271
|
+
commit_edit_path = "/v1/applications/#{app_id}/edits/#{edit_id}/commit"
|
268
272
|
commit_edit_url = BASE_URL + commit_edit_path
|
269
273
|
|
270
274
|
uri = URI(commit_edit_url)
|
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
|