crowdin-cli 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'pp'
4
3
  require 'crowdin-cli'
5
4
 
6
5
  # Return +hierarchy+ of directories and files in Crowdin project
@@ -67,14 +66,16 @@ def export_pattern_to_path(path, export_pattern, lang, languages_mapping = nil)
67
66
  '%file_name%' => file_name,
68
67
  }
69
68
 
69
+ placeholders = pattern.inject([]){ |memo, h| memo << h.first[/%(.*)%/, 1] }
70
+
70
71
  unless languages_mapping.nil?
71
- pattern = Hash[pattern.map{|k, str| [
72
- k,
73
- (languages_mapping[k[/%(.*)%/, 1]][lang['crowdin_code']] rescue nil) || str]
72
+ pattern = Hash[pattern.map{|placeholder, str| [
73
+ placeholder,
74
+ (languages_mapping[placeholder[/%(.*)%/, 1]][lang['crowdin_code']] rescue nil) || str]
74
75
  }]
75
76
  end
76
77
 
77
- export_pattern.gsub(/%.+?%/, pattern)
78
+ export_pattern.gsub(/%(#{placeholders.join('|')})%/, pattern)
78
79
  end
79
80
 
80
81
  def android_locale_code(locale_code)
@@ -87,6 +88,24 @@ def android_locale_code(locale_code)
87
88
  return locale_code.sub('-', '-r')
88
89
  end
89
90
 
91
+ def get_invalid_placeholders(export_pattern)
92
+ valid_placeholders = [
93
+ '%language%',
94
+ '%two_letters_code%',
95
+ '%tree_letters_code%',
96
+ '%locale%',
97
+ '%locale_with_underscore%',
98
+ '%android_code%',
99
+ '%original_file_name%',
100
+ '%original_path%',
101
+ '%file_extension%',
102
+ '%file_name%'
103
+ ]
104
+
105
+ all_placeholders = export_pattern.scan(/%[a-z0-9_]*?%/)
106
+ invalid_placeholders = all_placeholders - valid_placeholders
107
+ end
108
+
90
109
  # Return a string representing that part of the directory tree that is common to all the files
91
110
  #
92
111
  # @params [Array] paths set of strings representing directory paths
@@ -165,6 +184,10 @@ EOS
165
184
  dest_files = []
166
185
 
167
186
  @config['files'].each do |file|
187
+ get_invalid_placeholders(file['translation']).each do |placeholder|
188
+ puts "Warning: #{placeholder} is not valid variable supported by Crowdin. See http://crowdin.net/page/cli-client#configuration-file for more details."
189
+ end
190
+
168
191
  if File.exist?("#{@base_path}#{file['source']}")
169
192
  dest_files << file['source']
170
193
  local_files << { dest: file['source'], source: "#{@base_path}#{file['source']}", export_pattern: file['translation'] }
@@ -208,8 +231,13 @@ EOS
208
231
  files_for_upload = local_files.select{ |file| update_files.include?(file[:dest]) }
209
232
  files_for_upload.each do |file|
210
233
  print "Updating file `#{file[:dest]}'"
211
- @crowdin.update_file([] << file)
212
- puts "\rUpdating file `#{file[:dest]}' - OK"
234
+ resp = @crowdin.update_file([] << file)
235
+ case resp['files'].first[1]
236
+ when 'skipped'
237
+ puts "\rUpdating file `#{file[:dest]}' - Skipped"
238
+ when 'updated'
239
+ puts "\rUpdating file `#{file[:dest]}' - OK"
240
+ end
213
241
  end
214
242
  end
215
243
 
@@ -219,7 +247,7 @@ EOS
219
247
  files_for_add = local_files.select{ |file| add_files.include?(file[:dest]) }
220
248
  files_for_add.each do |file|
221
249
  print "Uploading file `#{file[:dest]}'"
222
- @crowdin.add_file([] << file)
250
+ res = @crowdin.add_file([] << file)
223
251
  puts "\rUploading file `#{file[:dest]}' - OK"
224
252
  end
225
253
 
@@ -274,6 +302,10 @@ EOS
274
302
  dest_files = []
275
303
 
276
304
  @config['files'].each do |file|
305
+ get_invalid_placeholders(file['translation']).each do |placeholder|
306
+ puts "Warning: #{placeholder} is not valid variable supported by Crowdin. See http://crowdin.net/page/cli-client#configuration-file for more details."
307
+ end
308
+
277
309
  languages_mapping = file['languages_mapping']
278
310
 
279
311
  if File.exists?("#{@base_path}#{file['source']}")
@@ -3,7 +3,6 @@ require 'crowdin-cli/version.rb'
3
3
  # Add requires for other files you add to your project here, so
4
4
  # you just need to require this one file in your bin file
5
5
 
6
- require 'abbrev'
7
6
  require 'yaml'
8
7
  require 'json'
9
8
  require 'logger'
@@ -1,5 +1,5 @@
1
1
  module Crowdin
2
2
  module CLI
3
- VERSION = '0.0.14'
3
+ VERSION = '0.0.15'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crowdin-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-22 00:00:00.000000000 Z
12
+ date: 2012-10-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ! '>='
68
68
  - !ruby/object:Gem::Version
69
- version: 2.4.0
69
+ version: 2.4.1
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
- version: 2.4.0
77
+ version: 2.4.1
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: rubyzip
80
80
  requirement: !ruby/object:Gem::Requirement