fastlane-plugin-google_sheet_localize 0.1.0 → 0.1.1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd292bac4d8626916e67ced0f1b6f20aaa774144c1008b234bbcde6eb21b07a1
|
4
|
+
data.tar.gz: 538f1fc89c8cbcbd3ff661a473f37a89aa4809d453a4d1f3c79dda1ba19a0051
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ffbeb72764b0d070f059f35d48c2eb4e1e021dd950a2f156629b8e2d2abbfca38be58cdf9f4e9a5e3c02b306a44e014e5dcbb56346a42fda168e07e9805d38fd
|
7
|
+
data.tar.gz: e59221b83e07ef8f0ef5e5514271eb071505b9f6f81d7dab2a8a0662a355a312968c115c6bf2f755d64d3f0f430fd87f9da0d4b4df04a951f94d4b0978a8e09a
|
@@ -10,13 +10,14 @@ module Fastlane
|
|
10
10
|
spreadsheet_id = "https://docs.google.com/spreadsheets/d/#{params[:sheet_id]}"
|
11
11
|
tabs = params[:tabs]
|
12
12
|
plaform = params[:platform]
|
13
|
+
path = params[:localization_path]
|
13
14
|
|
14
15
|
spreadsheet = session.spreadsheet_by_url(spreadsheet_id)
|
15
16
|
|
16
17
|
# Get the first worksheet
|
17
18
|
worksheet = spreadsheet.worksheets.first
|
18
19
|
|
19
|
-
languages = numberOfLanguages(worksheet)
|
20
|
+
languages = self.numberOfLanguages(worksheet)
|
20
21
|
|
21
22
|
result = []
|
22
23
|
|
@@ -38,19 +39,19 @@ module Fastlane
|
|
38
39
|
|
39
40
|
filterdWorksheets.each { |worksheet|
|
40
41
|
contentRows = worksheet.rows.drop(1)
|
41
|
-
language['items'].concat(generateJSONObject(contentRows, i))
|
42
|
+
language['items'].concat(self.generateJSONObject(contentRows, i))
|
42
43
|
}
|
43
44
|
|
44
45
|
result.push(language)
|
45
46
|
|
46
47
|
end
|
47
|
-
createFiles(result, platform, path)
|
48
|
+
self.createFiles(result, platform, path)
|
48
49
|
end
|
49
50
|
|
50
|
-
def generateJSONObject(contentRows, index)
|
51
|
+
def self.generateJSONObject(contentRows, index)
|
51
52
|
result = Array.new
|
52
53
|
for i in 0..contentRows.count - 1
|
53
|
-
item = generateSingleObject(contentRows[i], index)
|
54
|
+
item = self.generateSingleObject(contentRows[i], index)
|
54
55
|
|
55
56
|
if item[:identifierIos] != "" && item[:identifierAndroid] != ""
|
56
57
|
result.push(item)
|
@@ -61,13 +62,13 @@ module Fastlane
|
|
61
62
|
|
62
63
|
end
|
63
64
|
|
64
|
-
def writeToJSONFile(languages)
|
65
|
+
def self.writeToJSONFile(languages)
|
65
66
|
File.open("output.json","w") do |f|
|
66
67
|
f.write(JSON.pretty_generate(languages))
|
67
68
|
end
|
68
69
|
end
|
69
70
|
|
70
|
-
def generateSingleObject(row, column)
|
71
|
+
def self.generateSingleObject(row, column)
|
71
72
|
identifierIos = row[0]
|
72
73
|
identifierAndroid = row[1]
|
73
74
|
|
@@ -84,8 +85,8 @@ module Fastlane
|
|
84
85
|
|
85
86
|
end
|
86
87
|
|
87
|
-
def createFiles(languages, platform, destinationPath)
|
88
|
-
languages.each { |language| createFileForLanguage(language, platform, destinationPath) }
|
88
|
+
def self.createFiles(languages, platform, destinationPath)
|
89
|
+
languages.each { |language| self.createFileForLanguage(language, platform, destinationPath) }
|
89
90
|
|
90
91
|
if platform == "ios"
|
91
92
|
|
@@ -113,27 +114,24 @@ module Fastlane
|
|
113
114
|
end
|
114
115
|
end
|
115
116
|
|
116
|
-
text = mapInvalidPlaceholder(item['text'])
|
117
|
+
text = self.mapInvalidPlaceholder(item['text'])
|
117
118
|
|
118
|
-
arguments = findArgumentsInText(text)
|
119
|
-
|
120
|
-
puts "Arguments"
|
121
|
-
puts arguments.count
|
119
|
+
arguments = self.findArgumentsInText(text)
|
122
120
|
|
123
121
|
if arguments.count == 0
|
124
122
|
f.write("\n\t///Sheet comment: #{item['comment']}\n\tpublic static let #{constantName} = localized(identifier: \"#{identifier}\")\n")
|
125
123
|
else
|
126
|
-
f.write(createiOSFunction(constantName, identifier, arguments, item['comment']))
|
124
|
+
f.write(self.createiOSFunction(constantName, identifier, arguments, item['comment']))
|
127
125
|
end
|
128
126
|
}
|
129
127
|
f.write("\n}")
|
130
|
-
f.write(createiOSFileEndString())
|
128
|
+
f.write(self.createiOSFileEndString())
|
131
129
|
end
|
132
130
|
|
133
131
|
end
|
134
132
|
end
|
135
133
|
|
136
|
-
def createFileForLanguage(language, platform, destinationPath)
|
134
|
+
def self.createFileForLanguage(language, platform, destinationPath)
|
137
135
|
if platform == "ios"
|
138
136
|
|
139
137
|
swiftFilename = "Localization.swift"
|
@@ -148,7 +146,7 @@ module Fastlane
|
|
148
146
|
File.open(filepath, "w") do |f|
|
149
147
|
filteredItems.each { |item|
|
150
148
|
|
151
|
-
text = mapInvalidPlaceholder(item['text'])
|
149
|
+
text = self.mapInvalidPlaceholder(item['text'])
|
152
150
|
|
153
151
|
f.write("//#{item['comment']}\n\"#{item['identifierIos']}\" = \"#{text}\";\n")
|
154
152
|
}
|
@@ -168,11 +166,11 @@ module Fastlane
|
|
168
166
|
end
|
169
167
|
end
|
170
168
|
|
171
|
-
def createiOSFileEndString()
|
169
|
+
def self.createiOSFileEndString()
|
172
170
|
return "\n\nextension Localization {\n\tprivate static func localized(identifier key: String, _ args: CVarArg...) -> String {\n\t\tlet format = NSLocalizedString(key, tableName: nil, bundle: Bundle.main, comment: \"\")\n\n\t\tguard !args.isEmpty else { return format }\n\n\t\treturn String(format: format, locale: Locale.current, arguments: args)\n\t}\n}"
|
173
171
|
end
|
174
172
|
|
175
|
-
def createiOSFunction(constantName, identifier, arguments, comment)
|
173
|
+
def self.createiOSFunction(constantName, identifier, arguments, comment)
|
176
174
|
functionTitle = "\n\t///Sheet comment: #{comment}\n\tpublic static func #{constantName}("
|
177
175
|
|
178
176
|
arguments.each_with_index do |item, index|
|
@@ -197,11 +195,9 @@ module Fastlane
|
|
197
195
|
return functionTitle
|
198
196
|
end
|
199
197
|
|
200
|
-
def findArgumentsInText(text)
|
198
|
+
def self.findArgumentsInText(text)
|
201
199
|
result = Array.new
|
202
|
-
filtered = mapInvalidPlaceholder(text)
|
203
|
-
|
204
|
-
puts filtered
|
200
|
+
filtered = self.mapInvalidPlaceholder(text)
|
205
201
|
|
206
202
|
stringIndexes = (0 ... filtered.length).find_all { |i| filtered[i,2] == '%@' }
|
207
203
|
intIndexes = (0 ... filtered.length).find_all { |i| filtered[i,2] == '%d' }
|
@@ -224,23 +220,15 @@ module Fastlane
|
|
224
220
|
result = result.concat(doubleIndexes.map { |e| { "index": e, "type": "Double" }})
|
225
221
|
end
|
226
222
|
|
227
|
-
puts result
|
228
|
-
result = result.sort { |a, b| a[:index] <=> b[:index] }
|
229
|
-
puts result
|
230
|
-
|
231
|
-
puts "count"
|
232
|
-
puts result.count
|
233
|
-
|
234
|
-
|
235
223
|
return result
|
236
224
|
end
|
237
225
|
|
238
|
-
def mapInvalidPlaceholder(text)
|
226
|
+
def self.mapInvalidPlaceholder(text)
|
239
227
|
filtered = text.gsub('%s', '%@')
|
240
228
|
return filtered
|
241
229
|
end
|
242
230
|
|
243
|
-
def numberOfLanguages(worksheet)
|
231
|
+
def self.numberOfLanguages(worksheet)
|
244
232
|
i = worksheet.num_cols
|
245
233
|
return i - 3
|
246
234
|
end
|
@@ -250,7 +238,7 @@ module Fastlane
|
|
250
238
|
end
|
251
239
|
|
252
240
|
def self.authors
|
253
|
-
["Mario Hahn"]
|
241
|
+
["Mario Hahn", "Thomas Koller"]
|
254
242
|
end
|
255
243
|
|
256
244
|
def self.return_value
|
@@ -277,13 +265,19 @@ module Fastlane
|
|
277
265
|
FastlaneCore::ConfigItem.new(key: :platform,
|
278
266
|
env_name: "PLATFORM",
|
279
267
|
description: "Plaform, ios or android",
|
280
|
-
optional:
|
268
|
+
optional: true,
|
269
|
+
default_value: "ios",
|
281
270
|
type: String),
|
282
271
|
FastlaneCore::ConfigItem.new(key: :tabs,
|
283
272
|
env_name: "TABS",
|
284
273
|
description: "Array of all Google Sheet Tabs",
|
285
274
|
optional: false,
|
286
|
-
type: Array)
|
275
|
+
type: Array),
|
276
|
+
FastlaneCore::ConfigItem.new(key: :localization_path,
|
277
|
+
env_name: "LOCALIZATION_PATH",
|
278
|
+
description: "Output path",
|
279
|
+
optional: false,
|
280
|
+
type: String)
|
287
281
|
]
|
288
282
|
end
|
289
283
|
|