crowdin-cli 0.0.17 → 0.0.18

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.
data/README.md CHANGED
@@ -1,9 +1,16 @@
1
1
  # Crowdin-CLI
2
2
 
3
+ [Crowdin Integration Utility Homepage](http://crowdin.net/page/cli-tool) |
4
+ [Support](http://crowdin.net/contacts) |
5
+ [Crowdin.net Homepage](http://crowdin.net) |
6
+ [crowdin-api RubyDoc](http://rubydoc.info/github/crowdin/crowdin-api/)
7
+
3
8
  A Command-Line Interface to sync files between your computer/server and [Crowdin](crowdin.net).
4
9
 
5
10
  It is cross-platform and runs in a terminal (Linux, MacOS X) or in cmd.exe (Windows).
6
11
 
12
+ ![ScreenShot](https://raw.github.com/crowdin/crowdin-cli/master/screenshot.png)
13
+
7
14
  > **WARNING**: This is a development version: It contains the latest changes, but may also have severe known issues, including crashes and data loss situations. In fact, it may not work at all.
8
15
 
9
16
  ## Installation
@@ -74,7 +81,21 @@ files:
74
81
 
75
82
  Also you can add and upload all directories mathing the pattern including all nested files and localizable files.
76
83
 
77
- Create a `crowdin.yaml` YAML file in your root project directory with the following structure:
84
+ Example configuration provided above has 'source' and 'translation' attributes containing standard wildcards (also known as globbing patterns) to make it easier to work with multiple files.
85
+
86
+ Here's patterns you can use:
87
+
88
+ * `*` (asterisk)
89
+
90
+ This wildcard represents any character in file or directory name. If you specified a `*.json` it will include all files like `messages.json`, `about_us.json` and anything that ends with `.json`.
91
+
92
+ * `**` (doubled asterisk)
93
+
94
+ Matches any string recursively (including sub-directories). Note that you can use `**` in `source` and in `translation` pattern. When using `**` in `translation` pattern it will always contain sub-path from `source` for certain file.
95
+
96
+ Say, you can have source: `/en/**/*.po` to upload all `*.po` files to Crowdin recursively. `translation` pattern will be `/%two_letters_code%/**/%original_file_name%'`.
97
+
98
+ See sample configuration below::
78
99
  ```
79
100
  ---
80
101
  project_identifier: test
@@ -88,7 +109,11 @@ files:
88
109
  translation: /locale/%two_letters_code%/**/%original_file_name%
89
110
  ```
90
111
 
91
- Languages mapping.
112
+ ### Languages mapping
113
+
114
+ Often software projects have custom names for locale directories. `crowdin-cli` allows you to map your own languages to understandable by Crowdin.
115
+
116
+ Let's say your locale directories named 'en', 'uk', 'fr', 'de'. All of them can be represented by `%two_letters_code%` placeholder. Still, you have one directory named 'zh_CH'. In order to make it work with `crowdin-cli` without changes in your project you can add `languages_mapping` section to your files set. See sample configuration below:
92
117
 
93
118
  ```
94
119
  ---
@@ -107,7 +132,54 @@ files:
107
132
  ru: ros
108
133
  uk: ukr
109
134
  ```
110
- See Also: all available [Crowdin Language Codes](http://crowdin.net/page/api/language-codes)
135
+ Mapping format is the following: `crowdin_language_code : code_use_use`.
136
+
137
+ Check [complete list of Crowdin language codes](http://crowdin.net/page/api/language-codes) that can be used for mapping.
138
+
139
+ You can also override language codes for other placeholders like `%android_code%`, `%locale%` etc...
140
+
141
+ ## Example Configurations
142
+
143
+ ### GetText Project
144
+
145
+ ```
146
+ ---
147
+ project_identifier: test
148
+ api_key: KeepTheAPIkeySecret
149
+ base_url: http://api.crowdin.net
150
+ base_path: /path/to/your/project
151
+
152
+ files:
153
+ -
154
+ source: '/locale/en/**/*.po'
155
+ translation: '/locale/%two_letters_code%/LC_MESSAGES/%original_file_name%'
156
+ languages_mapping:
157
+ two_letters_code:
158
+ 'zh-CN': 'zh_CH'
159
+ 'fr-QC': 'fr'
160
+ ```
161
+
162
+ ### Android Project
163
+
164
+ ```
165
+ ---
166
+ project_identifier: test
167
+ api_key: KeepTheAPIkeySecret
168
+ base_url: http://api.crowdin.net
169
+ base_path: /path/to/your/project
170
+
171
+ files:
172
+ -
173
+ source: '/res/values/*.xml'
174
+ translation: '/res/values-%android_code%/%original_file_name%'
175
+ languages_mapping:
176
+ android_code:
177
+ # we need this mapping since Crowdin expects directories
178
+ # to be named like "values-uk-rUA"
179
+ # acording to specification instead of just "uk"
180
+ de: de
181
+ ru: ru
182
+ ```
111
183
 
112
184
  ## Usage
113
185
 
@@ -158,6 +230,10 @@ Tested with the following Ruby versions:
158
230
  4. Push to the branch (`git push origin my-new-feature`)
159
231
  5. Create new Pull Request
160
232
 
161
- ## License
233
+ ## License and Author
234
+
235
+ Author: Anton Maminov (anton.maminov@gmail.com)
236
+
237
+ Copyright: 2012 [Crowdin.net](http://crowdin.net/)
162
238
 
163
239
  This library is distributed under the MIT license. Please see the LICENSE file.
data/bin/crowdin-cli CHANGED
@@ -99,7 +99,7 @@ def get_invalid_placeholders(export_pattern)
99
99
  '%original_file_name%',
100
100
  '%original_path%',
101
101
  '%file_extension%',
102
- '%file_name%'
102
+ '%file_name%',
103
103
  ]
104
104
 
105
105
  all_placeholders = export_pattern.scan(/%[a-z0-9_]*?%/)
@@ -216,10 +216,10 @@ EOS
216
216
  local_files << { dest: dest, source: source, export_pattern: export_pattern }
217
217
  end
218
218
 
219
- end
220
- end
219
+ end # if
220
+ end # @config['files']
221
221
 
222
- if local_files.empty?
222
+ if dest_files.empty?
223
223
  exit_now!("Warning: nothing to upload. See http://crowdin.net/page/cli-client#configuration-file for more details.")
224
224
  end
225
225
 
@@ -294,6 +294,11 @@ EOS
294
294
 
295
295
 
296
296
  c.action do |global_options, options, args|
297
+ params = {}
298
+ params[:import_duplicates] = options['import-dublicates'] ? 1 : 0
299
+ params[:import_eq_suggestions] = options['import-eq-suggestions'] ? 1 : 0
300
+ params[:auto_approve_imported] = options['auto-approve-imported'] ? 1 : 0
301
+
297
302
  language = options[:language]
298
303
 
299
304
  project_info = @crowdin.project_info
@@ -353,16 +358,12 @@ EOS
353
358
  exit_now!("Warning: nothing to upload. See http://crowdin.net/page/cli-client#configuration-file for more details.")
354
359
  end
355
360
 
356
- params = {}
357
- params[:import_duplicates] = options['import-dublicates'] ? 1 : 0
358
- params[:import_eq_suggestions] = options['import-eq-suggestions'] ? 1 : 0
359
- params[:auto_approve_imported] = options['auto-approve-imported'] ? 1 : 0
360
-
361
361
  common_dir = find_common_directory_path(dest_files)
362
362
 
363
363
  translated_files.each do |language, files|
364
364
  files.each do |file|
365
365
  file[:dest].sub!(common_dir, '')
366
+
366
367
  if remote_project_tree[:files].include?(file[:dest])
367
368
  if File.exist?(file[:source])
368
369
  print "Uploading `#{file[:source].sub(@base_path, '')}'"
@@ -375,6 +376,7 @@ EOS
375
376
  # if source file not exist, don't upload translation
376
377
  puts "Warning: Skip `#{file[:source].sub(@base_path, '')}'"
377
378
  end
379
+
378
380
  end
379
381
  end
380
382
 
@@ -513,12 +515,19 @@ EOS
513
515
  end
514
516
  else
515
517
  @base_path = Dir.pwd
518
+ puts <<EOS
519
+ Warning: Configuration file misses optional section `base_path`.
520
+ Set the working directory - `#{@base_path}`
521
+
522
+ EOS
516
523
  end
517
524
 
518
525
  Crowdin::API.log = Logger.new($stderr) if global[:v]
519
526
  @crowdin = Crowdin::API.new(api_key: @config['api_key'], project_id: @config['project_identifier'], base_url: @config['base_url'] || 'http://api.crowdin.net')
520
527
  begin
521
528
  @crowdin.project_info
529
+ rescue Crowdin::API::Errors::Error => err
530
+ raise err
522
531
  rescue
523
532
  exit_now!("Seems Crowdin server API URL is not valid. Please check the `base_url` parameter in the configuration file.")
524
533
  end
@@ -1,5 +1,5 @@
1
1
  module Crowdin
2
2
  module CLI
3
- VERSION = '0.0.17'
3
+ VERSION = '0.0.18'
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.17
4
+ version: 0.0.18
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-30 00:00:00.000000000 Z
12
+ date: 2012-11-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake