crowdin-cli 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|