fastlane-plugin-deploy_file_provider 0.1.0 → 0.2.0

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
  SHA1:
3
- metadata.gz: 99c1e4b27dbd9a788554a42d914e996e6212b44c
4
- data.tar.gz: f3a37c6a4c1e34a5a092808b19a330590829e5fb
3
+ metadata.gz: 6c84160cb1cd93ebcf09521a390249d5acb2b092
4
+ data.tar.gz: b3c0c1d5f0e796369d2b6d053e7fe1c6e398e86a
5
5
  SHA512:
6
- metadata.gz: e44d0be528e915fa72d38821f41121913a85b481efed8fa131a624397e10f44dc3ff7dd3133a6156e52cbe6a7d9217a3b3e6a677d21e186d3c0a7a6b3e9ee635
7
- data.tar.gz: 7667c0939c34510fef679ed9bb56e9edc99bbda24433527a93741d622636b11d56627720af2ca32b89f3e0deedff9f8b36780dcae0beb6bede76e2975c5bec52
6
+ metadata.gz: a60d021652a114190ee14f5cbc5cf7f813fe65cc1fc660a93463055e12ad4b51515e53c6a50f2d27c53a3661bb926ca692dd68c677bcdb72af16f2532b7eda64
7
+ data.tar.gz: 81a7664061780934e5a9bb416a512f40ccf7c4d11ff6a95a54a2648b7233ae51141a481154f5c859476a5ea71200d934e3eeb6f08be1184d7fb0d065f8441738
@@ -1,4 +1,5 @@
1
1
  require 'json'
2
+ require 'fileutils'
2
3
 
3
4
  module Fastlane
4
5
  module Actions
@@ -11,12 +12,6 @@ module Fastlane
11
12
  RUN_VARIANT_ANDROID = "android"
12
13
  RUN_VARIANT_IOS = "ios"
13
14
 
14
- JSON_DIR = "fastlane/"
15
- JSON_NAME = "update.json"
16
-
17
-
18
- ANDROID_ROOT = "fastlane/metadata/android/"
19
-
20
15
  ANDROID_CHANGELOG_DIR = "changelogs/"
21
16
  #ANDROID_CHANGELOG_FILENAME -> changes depending on build, fetched from api
22
17
 
@@ -36,9 +31,6 @@ module Fastlane
36
31
  "turkish" => "tr-TR/"
37
32
  }
38
33
 
39
-
40
- IOS_ROOT = "fastlane/metadata/"
41
-
42
34
  IOS_RELEASE_NOTES_DIR = ""
43
35
  IOS_RELEASE_NOTES_FILENAME = "release_notes.txt"
44
36
 
@@ -57,29 +49,33 @@ module Fastlane
57
49
  }
58
50
 
59
51
  def self.run(params)
60
- logStep("Attempting to fetch JSON with metadata updates.")
61
52
  countryMetaData = fetchMetadataUpdates(params)
62
-
63
- if countryMetaData.empty?
64
- throwError("Couldn't fetch metadata updates. Plugin won't run!")
53
+ platform = "#{params[:platform]}".downcase
54
+ metadata_root = "#{params[:metaDataRoot]}"
55
+ store_credentials_dir = "#{params[:storeCredentials]}" unless params[:storeCredentials].nil?
56
+
57
+ if platform.eql? RUN_VARIANT_ANDROID
58
+ fetchCurrentMetaDataFor_Android(metadata_root, store_credentials_dir)
59
+ prepareFilesFor_Android(params, countryMetaData, platform, metadata_root)
60
+ elsif platform.eql? RUN_VARIANT_IOS
61
+ fetchCurrentMetaDataFor_iOS(metadata_root)
62
+ prepareFilesFor_iOS(params, countryMetaData, platform, metadata_root)
65
63
  else
66
- logStep("Fetch successfull!")
67
-
68
- platform = "#{params[:platform]}".downcase
69
- if platform.eql? RUN_VARIANT_ANDROID
70
- logStep("The deploy_file_provider plugin runs for platform: " + platform + ".")
71
- prepareFilesFor_Android(params, countryMetaData)
72
- elsif platform.eql? RUN_VARIANT_IOS
73
- logStep("The deploy_file_provider plugin runs for platform: " + platform + ".")
74
- prepareFilesFor_iOS(countryMetaData)
75
- else
76
- throwError("Unknown platform. Plugin won't run!")
77
- end
64
+ throwError("Unknown platform. Plugin won't run!")
78
65
  end
79
66
  end
80
67
 
81
68
  def self.fetchMetadataUpdates(params)
69
+ logStep("Attempting to fetch JSON with metadata updates.")
70
+
82
71
  descriptionsArray = Helper::DeployFileProviderHelper.get_descriptions_array(params)
72
+
73
+ if descriptionsArray == nil || descriptionsArray.empty?
74
+ throwError("Couldn't fetch metadata updates. Plugin won't run!")
75
+ else
76
+ logStep("Fetch successfull!")
77
+ end
78
+
83
79
  return metaDataObjectsArray(descriptionsArray)
84
80
  end
85
81
 
@@ -96,67 +92,49 @@ module Fastlane
96
92
  return tempArray
97
93
  end
98
94
 
99
- def self.prepareFilesFor_Android(params, countryMetaData)
100
- logStep("Attempting to fetch JSON with Android .apk versionCode.")
101
- android_apk_version_code = Helper::DeployFileProviderHelper.get_android_version(params)
102
- if android_apk_version_code == nil || android_apk_version_code.empty?
103
- throwError("Provided version code: " + android_apk_version_code + ", can't be used to create changelog filename.")
104
- else
105
- logStep("Fetch successfull!")
95
+ def self.fetchCurrentMetaDataFor_Android(metadata_root, storeCredentials)
96
+ clearMetaDataDir(metadata_root)
97
+ fetchTask_Android = "supply init --metadata_path #{metadata_root} --json_key #{storeCredentials}"
98
+
99
+ logStep("Executing command: " + fetchTask_Android)
100
+
101
+ Action.sh(fetchTask_Android)
102
+ end
103
+
104
+ def self.fetchCurrentMetaDataFor_iOS(metadata_root)
105
+ clearMetaDataDir(metadata_root)
106
+ fetchTask_iOS = "deliver download_metadata"
107
+
108
+ logStep("Executing command: " + fetchTask_iOS)
109
+
110
+ Action.sh(fetchTask_iOS)
111
+ end
112
+
113
+ def self.clearMetaDataDir(metadata_root)
114
+ if (File.directory?(metadata_root))
115
+ logStep("Removed old metadata folder in location: " + metadata_root)
116
+ FileUtils.rm_rf(metadata_root)
106
117
  end
107
- android_changelog_filename = android_apk_version_code + ".txt"
108
-
109
- if (locationExists(ANDROID_ROOT))
118
+ end
119
+
120
+ def self.prepareFilesFor_Android(params, countryMetaData, platform, metadata_root)
121
+ logStep("The deploy_file_provider plugin runs for platform: " + platform + ".")
122
+ android_changelog_filename = fetchVersionCodeFor_Android(params) + ".txt"
123
+
124
+ if (locationExists(metadata_root))
110
125
  numOfLanguagesToHandle = ANDROID_METADATA_LOC.size
111
126
  numOfLanguagesProcessed = 0
112
127
 
113
128
  for i in 0 ... countryMetaData.size
114
- languageKey = countryMetaData[i].language.downcase
129
+ languageMetaData = countryMetaData[i]
130
+ languageKey = languageMetaData.language.downcase
115
131
  unless ANDROID_METADATA_LOC.key?(languageKey)
116
132
  next
117
133
  end
134
+ logStep("---- Attempting to create files for language - " + languageKey)
118
135
 
119
- fulldescription_metaDataDir = [
120
- ANDROID_ROOT,
121
- ANDROID_METADATA_LOC[languageKey],
122
- ANDROID_FULL_DESCRIPTION_DIR].join
123
- logStep("Attempting to prepare " + ANDROID_FULL_DESCRIPTION_FILENAME + " for language: " + languageKey + " - in location: " + fulldescription_metaDataDir)
124
-
125
- if (locationExists(fulldescription_metaDataDir))
126
- file = fulldescription_metaDataDir + ANDROID_FULL_DESCRIPTION_FILENAME
127
-
128
- if File.exists?(file)
129
- File.delete(file)
130
- end
131
-
132
- newFullDescriptionFile = File.new(file, "w")
133
- begin
134
- newFullDescriptionFile.puts(countryMetaData[i].description)
135
- ensure
136
- newFullDescriptionFile.close
137
- end
138
- end
139
-
140
- changelog_metaDataDir = [
141
- ANDROID_ROOT,
142
- ANDROID_METADATA_LOC[languageKey],
143
- ANDROID_CHANGELOG_DIR].join
144
- logStep("Attempting to prepare changelog file with name: " + android_changelog_filename + " for language: " + languageKey + " - in location: " + changelog_metaDataDir)
145
-
146
- if (locationExists(changelog_metaDataDir))
147
- file = changelog_metaDataDir + android_changelog_filename
148
-
149
- if File.exists?(file)
150
- File.delete(file)
151
- end
152
-
153
- newChangeLogFile = File.new(file, "w")
154
- begin
155
- newChangeLogFile.puts(countryMetaData[i].releaseNotesAndroid)
156
- ensure
157
- newChangeLogFile.close
158
- end
159
- end
136
+ create_fullDescriptionFile_forLanguage(metadata_root, languageKey, languageMetaData)
137
+ create_changeLogFile_forLanguage_withName(metadata_root, languageKey, languageMetaData, android_changelog_filename)
160
138
 
161
139
  numOfLanguagesProcessed += 1
162
140
  logStep("---- Files updated")
@@ -165,62 +143,86 @@ module Fastlane
165
143
  if numOfLanguagesProcessed != numOfLanguagesToHandle
166
144
  throwError("Android expected to receive metadata for: #{numOfLanguagesToHandle} languages, but received for: #{numOfLanguagesProcessed}!")
167
145
  end
146
+
147
+ end
148
+ end
149
+
150
+ def self.fetchVersionCodeFor_Android(params)
151
+ logStep("Attempting to fetch JSON with Android .apk versionCode.")
152
+
153
+ android_apk_version_code = Helper::DeployFileProviderHelper.get_android_version(params)
154
+
155
+ if android_apk_version_code == nil || android_apk_version_code.empty?
156
+ throwError("Unable to fetch Android versionCode.")
157
+ else
158
+ logStep("Fetch successfull!")
159
+ end
160
+
161
+ return android_apk_version_code
162
+ end
163
+
164
+ def self.create_fullDescriptionFile_forLanguage(metadata_root, languageKey, languageMetaData)
165
+ fulldescription_metaDataDir = [
166
+ metadata_root,
167
+ ANDROID_METADATA_LOC[languageKey],
168
+ ANDROID_FULL_DESCRIPTION_DIR].join
169
+ logStep("Attempting to prepare " + ANDROID_FULL_DESCRIPTION_FILENAME + " for language: " + languageKey + " - in location: " + fulldescription_metaDataDir)
170
+
171
+ if (locationExists(fulldescription_metaDataDir))
172
+ file = fulldescription_metaDataDir + ANDROID_FULL_DESCRIPTION_FILENAME
173
+
174
+ if File.exists?(file)
175
+ File.delete(file)
176
+ end
177
+
178
+ newFullDescriptionFile = File.new(file, "w")
179
+ begin
180
+ newFullDescriptionFile.puts(languageMetaData.description)
181
+ ensure
182
+ newFullDescriptionFile.close
183
+ end
184
+ end
185
+ end
186
+
187
+ def self.create_changeLogFile_forLanguage_withName(metadata_root, languageKey, languageMetaData, filename)
188
+ changelog_metaDataDir = [
189
+ metadata_root,
190
+ ANDROID_METADATA_LOC[languageKey],
191
+ ANDROID_CHANGELOG_DIR].join
192
+ logStep("Attempting to prepare changelog file with name: " + filename + " for language: " + languageKey + " - in location: " + changelog_metaDataDir)
193
+
194
+ if (locationExists(changelog_metaDataDir))
195
+ file = changelog_metaDataDir + filename
196
+
197
+ if File.exists?(file)
198
+ File.delete(file)
199
+ end
200
+
201
+ newChangeLogFile = File.new(file, "w")
202
+ begin
203
+ newChangeLogFile.puts(languageMetaData.releaseNotesAndroid)
204
+ ensure
205
+ newChangeLogFile.close
206
+ end
168
207
  end
169
208
  end
170
209
 
171
- def self.prepareFilesFor_iOS(countryMetaData)
172
- if (locationExists(IOS_ROOT))
210
+ def self.prepareFilesFor_iOS(params, countryMetaData, platform, metadata_root)
211
+ logStep("The deploy_file_provider plugin runs for platform: " + platform + ".")
173
212
 
213
+ if (locationExists(metadata_root))
174
214
  numOfLanguagesToHandle = IOS_METADATA_LOC.size
175
215
  numOfLanguagesProcessed = 0
176
216
 
177
217
  for i in 0 ... countryMetaData.size
178
- languageKey = countryMetaData[i].language.downcase
218
+ languageMetaData = countryMetaData[i]
219
+ languageKey = languageMetaData.language.downcase
179
220
  unless IOS_METADATA_LOC.key?(languageKey)
180
221
  next
181
222
  end
182
223
 
183
- description_metaDataDir = [
184
- IOS_ROOT,
185
- IOS_METADATA_LOC[languageKey],
186
- IOS_DESCRIPTION_DIR].join
187
- logStep("Attempting to prepare " + IOS_DESCRIPTION_FILENAME + " for language: " + languageKey + " - in location: " + description_metaDataDir)
188
-
189
- if (locationExists(description_metaDataDir))
190
- file = description_metaDataDir + IOS_DESCRIPTION_FILENAME
191
-
192
- if File.exists?(file)
193
- File.delete(file)
194
- end
195
-
196
- newFullDescriptionFile = File.new(file, "w")
197
- begin
198
- newFullDescriptionFile.puts(countryMetaData[i].description)
199
- ensure
200
- newFullDescriptionFile.close
201
- end
202
- end
203
-
204
- releasenotes_metaDataDir = [
205
- IOS_ROOT,
206
- IOS_METADATA_LOC[languageKey],
207
- IOS_RELEASE_NOTES_DIR].join
208
- logStep("Attempting to prepare " + IOS_RELEASE_NOTES_FILENAME + " file for language: " + languageKey + " - in location: " + releasenotes_metaDataDir)
209
-
210
- if (locationExists(releasenotes_metaDataDir))
211
- file = description_metaDataDir + IOS_RELEASE_NOTES_FILENAME
212
-
213
- if File.exists?(file)
214
- File.delete(file)
215
- end
216
-
217
- newReleaseNotesFile = File.new(file, "w")
218
- begin
219
- newReleaseNotesFile.puts(countryMetaData[i].releaseNotesiOS)
220
- ensure
221
- newReleaseNotesFile.close
222
- end
223
- end
224
+ create_descriptionFile_forLanguage(metadata_root, languageKey, languageMetaData)
225
+ create_releaseNotesFile_forLanguage(metadata_root, languageKey, languageMetaData)
224
226
 
225
227
  numOfLanguagesProcessed += 1
226
228
  logStep("---- Files updated")
@@ -232,6 +234,52 @@ module Fastlane
232
234
  end
233
235
  end
234
236
 
237
+ def self.create_descriptionFile_forLanguage(metadata_root, languageKey, languageMetaData)
238
+ description_metaDataDir = [
239
+ metadata_root,
240
+ IOS_METADATA_LOC[languageKey],
241
+ IOS_DESCRIPTION_DIR].join
242
+ logStep("Attempting to prepare " + IOS_DESCRIPTION_FILENAME + " for language: " + languageKey + " - in location: " + description_metaDataDir)
243
+
244
+ if (locationExists(description_metaDataDir))
245
+ file = description_metaDataDir + IOS_DESCRIPTION_FILENAME
246
+
247
+ if File.exists?(file)
248
+ File.delete(file)
249
+ end
250
+
251
+ newFullDescriptionFile = File.new(file, "w")
252
+ begin
253
+ newFullDescriptionFile.puts(languageMetaData.description)
254
+ ensure
255
+ newFullDescriptionFile.close
256
+ end
257
+ end
258
+ end
259
+
260
+ def self.create_releaseNotesFile_forLanguage(metadata_root, languageKey, languageMetaData)
261
+ releasenotes_metaDataDir = [
262
+ metadata_root,
263
+ IOS_METADATA_LOC[languageKey],
264
+ IOS_RELEASE_NOTES_DIR].join
265
+ logStep("Attempting to prepare " + IOS_RELEASE_NOTES_FILENAME + " file for language: " + languageKey + " - in location: " + releasenotes_metaDataDir)
266
+
267
+ if (locationExists(releasenotes_metaDataDir))
268
+ file = releasenotes_metaDataDir + IOS_RELEASE_NOTES_FILENAME
269
+
270
+ if File.exists?(file)
271
+ File.delete(file)
272
+ end
273
+
274
+ newReleaseNotesFile = File.new(file, "w")
275
+ begin
276
+ newReleaseNotesFile.puts(languageMetaData.releaseNotesiOS)
277
+ ensure
278
+ newReleaseNotesFile.close
279
+ end
280
+ end
281
+ end
282
+
235
283
  def self.logStep(message)
236
284
  UI.message("Step: ".blue + message.blue)
237
285
  end
@@ -245,7 +293,7 @@ module Fastlane
245
293
  if File.directory?(path)
246
294
  return true
247
295
  else
248
- throwError("Could not find location '" + path + "'. Did you fetch metdata from store before launching plugin?")
296
+ throwError("Could not find location '" + path + "'. Did you fetch metadata from store before launching plugin?")
249
297
  return false
250
298
  end
251
299
  end
@@ -284,7 +332,17 @@ module Fastlane
284
332
  env_name: "SPREADSHEET_APPLICATION_NAME",
285
333
  description: "Sphreadsheet OAuth2 credentials url",
286
334
  is_string: true,
287
- optional: false)
335
+ optional: false),
336
+ FastlaneCore::ConfigItem.new(key: :metaDataRoot,
337
+ env_name: "METADATA_ROOT",
338
+ description: "Path to metadata root location",
339
+ is_string: true,
340
+ optional: false),
341
+ FastlaneCore::ConfigItem.new(key: :storeCredentials,
342
+ env_name: "STORE_CREDENTIALS",
343
+ description: "Location of file allowing you to access app/play store",
344
+ is_string: true,
345
+ optional: true)
288
346
  ]
289
347
  end
290
348
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module DeployFileProvider
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-deploy_file_provider
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
- - Kamil Krzyk
7
+ - Kamil Krzyk, Przemysław Wośko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: 1.103.0
111
111
  description:
112
- email: krzyk.kamil@gmail.com
112
+ email: krzyk.kamil@gmail.com, przemek.wosko@azimo.com
113
113
  executables: []
114
114
  extensions: []
115
115
  extra_rdoc_files: []