crowdin-cli 0.1.5 → 0.1.6
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 +4 -4
- data/bin/crowdin-cli +61 -28
- data/lib/crowdin-cli/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c178a88fbbd85d28ee2bbc8e3b88a79eb4d0cd46
|
|
4
|
+
data.tar.gz: d5032076e80d9bc7fff12c3cf9a40ad27759018d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c6d09b538ad1efc838e1abe5b1d6ae7da6336ef954a505fbc5cf3a9804c7cbb37bbde3dd15ad090c33026c86ae9500b1304aadd9a6cc7aaebcdb69146afdf002
|
|
7
|
+
data.tar.gz: aab99a8aeeff33da9f056d4816109be366379cd8d57a3c8f48c1a578eaec3323d74c7c5ff74709cc251532f7e760f8a09092291ebabc93be88583c38afe516d2
|
data/bin/crowdin-cli
CHANGED
|
@@ -87,7 +87,7 @@ end
|
|
|
87
87
|
#
|
|
88
88
|
def construct_export_pattern(path, source, translation)
|
|
89
89
|
pattern_regexp = translate_pattern_to_regexp(source)
|
|
90
|
-
if path.match(pattern_regexp)
|
|
90
|
+
if pattern_regexp.names.include?('double_asterisk') and path.match(pattern_regexp)
|
|
91
91
|
double_asterisk = path.match(pattern_regexp)['double_asterisk']
|
|
92
92
|
translation = translation.sub('**', double_asterisk)
|
|
93
93
|
end
|
|
@@ -97,19 +97,22 @@ def construct_export_pattern(path, source, translation)
|
|
|
97
97
|
return export_pattern
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
-
#
|
|
100
|
+
# Provides a partial implementation of translate a glob +pattern+ to a regular expression
|
|
101
|
+
# NOTE:
|
|
102
|
+
# `**` surrounded by backslashes `/` in the +pattern+
|
|
103
|
+
# `**` used only once in the +pattern+
|
|
101
104
|
#
|
|
102
|
-
def translate_pattern_to_regexp(
|
|
105
|
+
def translate_pattern_to_regexp(pattern)
|
|
103
106
|
i = 0
|
|
104
|
-
n =
|
|
107
|
+
n = pattern.size
|
|
105
108
|
res = ''
|
|
106
109
|
while i < n
|
|
107
|
-
c =
|
|
110
|
+
c = pattern[i]
|
|
108
111
|
i = i + 1
|
|
109
112
|
if c == '*'
|
|
110
113
|
j = i
|
|
111
|
-
if j < n and
|
|
112
|
-
res
|
|
114
|
+
if j < n and pattern[j] == '*'
|
|
115
|
+
res[-1] = '(\/)?(?<double_asterisk>.*)?'
|
|
113
116
|
i = j + 1
|
|
114
117
|
else
|
|
115
118
|
res << '(.*)'
|
|
@@ -174,7 +177,7 @@ def unzip_file(zip, dest, files_list)
|
|
|
174
177
|
|
|
175
178
|
Zip::ZipFile.open(zip) do |zip_file|
|
|
176
179
|
zip_file.select{ |f| f.file? }.each do |f|
|
|
177
|
-
file = files_list[f.name]
|
|
180
|
+
file = files_list['/' + f.name]
|
|
178
181
|
if file
|
|
179
182
|
f_path = File.join(dest, file)
|
|
180
183
|
FileUtils.mkdir_p(File.dirname(f_path))
|
|
@@ -247,9 +250,10 @@ EOS
|
|
|
247
250
|
end
|
|
248
251
|
|
|
249
252
|
if File.exist?("#{@base_path}#{file['source']}")
|
|
250
|
-
|
|
253
|
+
dest = file['source']
|
|
254
|
+
dest_files << dest
|
|
251
255
|
|
|
252
|
-
local_file = { dest:
|
|
256
|
+
local_file = { dest: dest, source: "#{@base_path}#{file['source']}", export_pattern: file['translation'] }
|
|
253
257
|
# Used only when uploading CSV file to define data columns mapping.
|
|
254
258
|
local_file.merge!({ sheme: file['scheme'] }) if file.has_key?('scheme')
|
|
255
259
|
local_file.merge!({ first_line_contains_header: file['first_line_contains_header'] }) if file.has_key?('first_line_contains_header')
|
|
@@ -275,7 +279,7 @@ EOS
|
|
|
275
279
|
exit_now!("nothing to upload. See http://crowdin.net/page/cli-tool#configuration-file for more details.")
|
|
276
280
|
end
|
|
277
281
|
|
|
278
|
-
common_dir = find_common_directory_path(dest_files)
|
|
282
|
+
common_dir = @preserve_hierarchy ? '' : find_common_directory_path(dest_files)
|
|
279
283
|
|
|
280
284
|
local_project_tree = get_local_files_hierarchy(local_files.collect{ |h| h[:dest].sub(common_dir, '') })
|
|
281
285
|
|
|
@@ -296,7 +300,7 @@ EOS
|
|
|
296
300
|
update_files = local_project_tree[:files] & remote_project_tree[:files]
|
|
297
301
|
files_for_upload = local_files.select{ |file| update_files.include?(file[:dest]) }
|
|
298
302
|
files_for_upload.each do |file|
|
|
299
|
-
print "Updating file `#{file[:dest]}'"
|
|
303
|
+
print "Updating source file `#{file[:dest]}'"
|
|
300
304
|
|
|
301
305
|
params = {}
|
|
302
306
|
params[:scheme] = file.delete(:sheme)
|
|
@@ -305,9 +309,9 @@ EOS
|
|
|
305
309
|
resp = @crowdin.update_file([] << file, params)
|
|
306
310
|
case resp['files'].first[1]
|
|
307
311
|
when 'skipped'
|
|
308
|
-
puts "\rUpdating file `#{file[:dest]}' - Skipped"
|
|
312
|
+
puts "\rUpdating source file `#{file[:dest]}' - Skipped"
|
|
309
313
|
when 'updated'
|
|
310
|
-
puts "\rUpdating file `#{file[:dest]}' - OK"
|
|
314
|
+
puts "\rUpdating source file `#{file[:dest]}' - OK"
|
|
311
315
|
end
|
|
312
316
|
end
|
|
313
317
|
end
|
|
@@ -317,14 +321,14 @@ EOS
|
|
|
317
321
|
add_files = local_project_tree[:files] - remote_project_tree[:files]
|
|
318
322
|
files_for_add = local_files.select{ |file| add_files.include?(file[:dest]) }
|
|
319
323
|
files_for_add.each do |file|
|
|
320
|
-
print "Uploading file `#{file[:dest]}'"
|
|
324
|
+
print "Uploading source file `#{file[:dest]}'"
|
|
321
325
|
|
|
322
326
|
params = {}
|
|
323
327
|
params[:scheme] = file.delete(:sheme)
|
|
324
328
|
params[:first_line_contains_header] = file.delete(:first_line_contains_header)
|
|
325
329
|
|
|
326
330
|
resp = @crowdin.add_file([] << file, params)
|
|
327
|
-
puts "\rUploading file `#{file[:dest]}' - OK"
|
|
331
|
+
puts "\rUploading source file `#{file[:dest]}' - OK"
|
|
328
332
|
end
|
|
329
333
|
|
|
330
334
|
end # action
|
|
@@ -416,7 +420,7 @@ EOS
|
|
|
416
420
|
exit_now!("Warning: nothing to upload. See http://crowdin.net/page/cli-tool#configuration-file for more details.")
|
|
417
421
|
end
|
|
418
422
|
|
|
419
|
-
common_dir = find_common_directory_path(dest_files)
|
|
423
|
+
common_dir = @preserve_hierarchy ? '' : find_common_directory_path(dest_files)
|
|
420
424
|
|
|
421
425
|
translated_files.each do |language, files|
|
|
422
426
|
files.each do |file|
|
|
@@ -424,14 +428,14 @@ EOS
|
|
|
424
428
|
|
|
425
429
|
if remote_project_tree[:files].include?(file[:dest])
|
|
426
430
|
if File.exist?(file[:source])
|
|
427
|
-
print "Uploading `#{file[:source].sub(@base_path, '')}'"
|
|
431
|
+
print "Uploading translation file `#{file[:source].sub(@base_path, '')}'"
|
|
428
432
|
|
|
429
433
|
resp = @crowdin.upload_translation([] << file, language, params)
|
|
430
434
|
case resp['files'].first[1]
|
|
431
435
|
when 'skipped'
|
|
432
|
-
puts "\rUploading `#{file[:source].sub(@base_path, '')}' - Skipped"
|
|
436
|
+
puts "\rUploading translation `#{file[:source].sub(@base_path, '')}' - Skipped"
|
|
433
437
|
when 'uploaded'
|
|
434
|
-
puts "\rUploading `#{file[:source].sub(@base_path, '')}' - OK"
|
|
438
|
+
puts "\rUploading translation `#{file[:source].sub(@base_path, '')}' - OK"
|
|
435
439
|
end
|
|
436
440
|
else
|
|
437
441
|
puts "Warning: Local file `#{file[:source]}' does not exists"
|
|
@@ -559,7 +563,7 @@ EOS
|
|
|
559
563
|
Can't find configuration file (default `crowdin.yaml').
|
|
560
564
|
Type `crowdin-cli help` to know how to specify custom configuration file
|
|
561
565
|
|
|
562
|
-
See http://crowdin.net/page/cli-
|
|
566
|
+
See http://crowdin.net/page/cli-tool#configuration-file for more details
|
|
563
567
|
EOS
|
|
564
568
|
end
|
|
565
569
|
|
|
@@ -567,17 +571,26 @@ EOS
|
|
|
567
571
|
file['source'] = '/' + file['source'] unless file['source'].start_with?('/')
|
|
568
572
|
file['translation'] = '/' + file['translation'] unless file['translation'].start_with?('/')
|
|
569
573
|
|
|
570
|
-
if file['source'].
|
|
571
|
-
|
|
572
|
-
|
|
574
|
+
if file['source'].include?('**')
|
|
575
|
+
if file['source'].scan('**').size > 1
|
|
576
|
+
exit_now! <<EOS
|
|
577
|
+
Source pattern `#{file['source']}` is not valid. The mask `**` can be used only once in the source pattern.
|
|
573
578
|
EOS
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
579
|
+
elsif file['source'].scan('**').size == 1 and !file['source'].match(/\/\*\*\//)
|
|
580
|
+
exit_now! <<EOS
|
|
581
|
+
Source pattern `#{file['source']}` is not valid. The mask `**` must be surrounded by backslashes `/` in the source pattern.
|
|
577
582
|
EOS
|
|
583
|
+
end
|
|
584
|
+
else
|
|
585
|
+
if file['translation'].include?('**')
|
|
586
|
+
exit_now! <<EOS
|
|
587
|
+
Translation pattern `#{file['translation']}` is not valid. The mask `**` can't be used.
|
|
588
|
+
When using `**` in 'translation' pattern it will always contain sub-path from 'source' for certain file.
|
|
589
|
+
EOS
|
|
590
|
+
end
|
|
578
591
|
end
|
|
579
592
|
|
|
580
|
-
end
|
|
593
|
+
end # @config['files']
|
|
581
594
|
|
|
582
595
|
if @config['base_path']
|
|
583
596
|
@base_path = @config['base_path']
|
|
@@ -588,6 +601,26 @@ Warning: Configuration file misses parameter `base_path` that defines your proje
|
|
|
588
601
|
EOS
|
|
589
602
|
end
|
|
590
603
|
|
|
604
|
+
if @config['target_path']
|
|
605
|
+
@target_path = @config['target_path']
|
|
606
|
+
else
|
|
607
|
+
@target_path = ''
|
|
608
|
+
end
|
|
609
|
+
|
|
610
|
+
@preserve_hierarchy = false
|
|
611
|
+
if @config['preserve_hierarchy']
|
|
612
|
+
@preserve_hierarchy = case @config['preserve_hierarchy']
|
|
613
|
+
when true
|
|
614
|
+
true
|
|
615
|
+
when false
|
|
616
|
+
false
|
|
617
|
+
else
|
|
618
|
+
exit_now! <<EOS
|
|
619
|
+
Parameter `preserve_hierarchy` allows values of true or false.
|
|
620
|
+
EOS
|
|
621
|
+
end
|
|
622
|
+
end
|
|
623
|
+
|
|
591
624
|
Crowdin::API.log = Logger.new($stderr) if global[:v]
|
|
592
625
|
@crowdin = Crowdin::API.new(api_key: @config['api_key'], project_id: @config['project_identifier'], base_url: @config['base_url'] || 'http://api.crowdin.net')
|
|
593
626
|
begin
|
data/lib/crowdin-cli/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: crowdin-cli
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Crowdin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-04-
|
|
11
|
+
date: 2013-04-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|