crowdin-cli 0.0.14 → 0.0.15

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.
@@ -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