web_translate_it 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/history.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## Version 2.0.4 / 2012-08-08
2
+
3
+ * New: Add a throbber to indicate the project information is loading.
4
+ * New: Display error message when pushing or pulling a language that doesn’t exist in a project.
5
+ * Fixed: Compatibility problem with ruby 1.8.6.
6
+
1
7
  ## Version 2.0.3 / 2012-06-07
2
8
 
3
9
  * Fix: String#translation_for('xx') should not return an array of all translations. #88
@@ -4,12 +4,28 @@ module WebTranslateIt
4
4
  require 'fileutils'
5
5
  require 'set'
6
6
  attr_accessor :configuration, :global_options, :command_options, :parameters
7
-
7
+
8
8
  def initialize(command, command_options, global_options, parameters, project_path)
9
9
  self.command_options = command_options
10
10
  self.parameters = parameters
11
11
  unless command == 'init'
12
- self.configuration = WebTranslateIt::Configuration.new(project_path, configuration_file_path)
12
+ case command
13
+ when 'pull'
14
+ message = "Pulling files"
15
+ when 'push'
16
+ message = "Pushing files"
17
+ when 'add'
18
+ message = "Creating master files"
19
+ when 'rm'
20
+ message = "Deleting files"
21
+ when 'addlocale'
22
+ message = "Adding locale"
23
+ when 'rmlocale'
24
+ message = "Deleting locale"
25
+ else
26
+ message = "Gathering information"
27
+ end
28
+ throb { print " #{message}"; self.configuration = WebTranslateIt::Configuration.new(project_path, configuration_file_path) }
13
29
  end
14
30
  self.send(command)
15
31
  end
@@ -22,14 +38,13 @@ module WebTranslateIt
22
38
  fetch_locales_to_pull.each do |locale|
23
39
  files.concat configuration.files.find_all{ |file| file.locale == locale }
24
40
  end
25
- if files.count == 0
41
+ if files.size == 0
26
42
  puts "No files to pull."
27
43
  else
28
44
  # Now actually pulling files
29
- puts "# Pulling files"
30
45
  time = Time.now
31
46
  threads = []
32
- n_threads = (files.count.to_f/3).ceil >= 20 ? 20 : (files.count.to_f/3).ceil
47
+ n_threads = (files.size.to_f/3).ceil >= 20 ? 20 : (files.size.to_f/3).ceil
33
48
  ArrayUtil.chunk(files, n_threads).each do |file_array|
34
49
  unless file_array.empty?
35
50
  threads << Thread.new(file_array) do |file_array|
@@ -43,7 +58,7 @@ module WebTranslateIt
43
58
  end
44
59
  threads.each { |thread| thread.join }
45
60
  time = Time.now - time
46
- puts "Pulled #{files.count} files at #{(files.count/time).round} files/sec, using #{n_threads} threads."
61
+ puts "Pulled #{files.size} files at #{(files.size/time).round} files/sec, using #{n_threads} threads."
47
62
  `#{configuration.after_pull}` if configuration.after_pull
48
63
  end
49
64
  end
@@ -51,11 +66,15 @@ module WebTranslateIt
51
66
  def push
52
67
  STDOUT.sync = true
53
68
  `#{configuration.before_push}` if configuration.before_push
54
- puts "# Pushing files"
55
69
  WebTranslateIt::Connection.new(configuration.api_key) do |http|
56
70
  fetch_locales_to_push(configuration).each do |locale|
57
- configuration.files.find_all{ |file| file.locale == locale }.sort{|a,b| a.file_path <=> b.file_path} .each do |file|
58
- file.upload(http, command_options[:merge], command_options.ignore_missing, command_options.label, command_options.low_priority, command_options[:minor], command_options.force)
71
+ files = configuration.files.find_all{ |file| file.locale == locale }.sort{|a,b| a.file_path <=> b.file_path}
72
+ if files.size == 0
73
+ puts "No files to push."
74
+ else
75
+ files.each do |file|
76
+ file.upload(http, command_options[:merge], command_options.ignore_missing, command_options.label, command_options.low_priority, command_options[:minor], command_options.force)
77
+ end
59
78
  end
60
79
  end
61
80
  end
@@ -64,7 +83,6 @@ module WebTranslateIt
64
83
 
65
84
  def add
66
85
  STDOUT.sync = true
67
- puts "# Creating master files"
68
86
  if parameters == []
69
87
  puts StringUtil.failure("Error: You must provide the path to the master file to add.")
70
88
  puts "Usage: wti add path/to/master_file_1 path/to/master_file_2 ..."
@@ -146,7 +164,7 @@ module WebTranslateIt
146
164
  puts "# Initializing project"
147
165
  api_key = Util.ask(" Project API Key:")
148
166
  path = Util.ask(" Path to configuration file:", '.wti')
149
- FileUtils.mkpath(path.split('/')[0..path.split('/').size-2].join('/')) unless path.split('/').count == 1
167
+ FileUtils.mkpath(path.split('/')[0..path.split('/').size-2].join('/')) unless path.split('/').size == 1
150
168
  project = YAML.load WebTranslateIt::Project.fetch_info(api_key)
151
169
  project_info = project['project']
152
170
  if File.exists?(path) && !File.writable?(path)
@@ -156,7 +174,7 @@ module WebTranslateIt
156
174
  File.open(path, 'w'){ |file| file << generate_configuration(api_key, project_info) }
157
175
  puts ""
158
176
  puts " Your project was successfully initialized."
159
- if project_info["source_locale"]["code"].nil? || project_info["target_locales"].count <= 1 || project_info["project_files"].none?
177
+ if project_info["source_locale"]["code"].nil? || project_info["target_locales"].size <= 1 || project_info["project_files"].none?
160
178
  puts ""
161
179
  puts " There are a few more things to set up:"
162
180
  puts ""
@@ -166,7 +184,7 @@ module WebTranslateIt
166
184
  puts " Add the source locale with: `wti addlocale <locale_code>`"
167
185
  puts ""
168
186
  end
169
- if project_info["target_locales"].count <= 1
187
+ if project_info["target_locales"].size <= 1
170
188
  puts " *) You don't have a target locale setup."
171
189
  puts " Add the first target locale with: `wti addlocale <locale_code>`"
172
190
  puts ""
@@ -213,6 +231,9 @@ module WebTranslateIt
213
231
 
214
232
  def fetch_locales_to_pull
215
233
  if command_options.locale
234
+ command_options.locale.split.each do |locale|
235
+ puts "Locale #{locale} doesn't exist -- `wti addlocale #{locale}` to add it." unless configuration.target_locales.include?(locale)
236
+ end
216
237
  locales = command_options.locale.split
217
238
  else
218
239
  locales = configuration.target_locales
@@ -224,6 +245,9 @@ module WebTranslateIt
224
245
 
225
246
  def fetch_locales_to_push(configuration)
226
247
  if command_options.locale
248
+ command_options.locale.split.each do |locale|
249
+ puts "Locale #{locale} doesn't exist -- `wti addlocale #{locale}` to add it." unless configuration.target_locales.include?(locale)
250
+ end
227
251
  locales = command_options.locale.split
228
252
  else
229
253
  locales = [configuration.source_locale]
@@ -273,6 +297,27 @@ api_key: #{api_key}
273
297
 
274
298
  FILE
275
299
  return file
276
- end
277
- end
300
+ end
301
+
302
+ def throb
303
+ throb = %w(⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏)
304
+ throb.reverse! if rand > 0.5
305
+ i = rand throb.length
306
+
307
+ thread = Thread.new do
308
+ dot = lambda do
309
+ print "\r#{throb[i]}\e[?25l"
310
+ i = (i + 1) % throb.length
311
+ sleep 0.1 and dot.call
312
+ end
313
+ dot.call
314
+ end
315
+ yield
316
+ ensure
317
+ if thread
318
+ thread.kill
319
+ puts "\r\e[0G#\e[?25h"
320
+ end
321
+ end
322
+ end
278
323
  end
data/readme.md CHANGED
@@ -1,46 +1,62 @@
1
- # Web Translate It
1
+ # WebTranslateIt Synchronization Tool
2
2
 
3
- [Homepage](https://webtranslateit.com) |
4
- [RDoc](http://yardoc.org/docs/AtelierConvivialite-webtranslateit) |
3
+ [RubyDoc](http://rubydoc.info/github/AtelierConvivialite/webtranslateit/) |
5
4
  [Example app](http://github.com/AtelierConvivialite/rails_example_app) |
6
5
  [Report a bug](http://github.com/AtelierConvivialite/webtranslateit/issues) |
7
- [Support](http://help.webtranslateit.com)
6
+ [Support](https://webtranslateit.com/support) |
7
+ [WebTranslateIt.com Homepage](https://webtranslateit.com)
8
8
 
9
- `web_translate_it` is a tool to sync your language files with [WebTranslateIt.com](https://webtranslateit.com), a web-based translation software.
9
+ `web_translate_it` is a tool to sync your language files with [WebTranslateIt.com](https://webtranslateit.com), a web-based tool to translation software.
10
10
 
11
- ![Web Translate It](http://f.cl.ly/items/2X3m0h0g0I1O1U07163o/wti_example.jpg)
11
+ ![WebTranslateIt Synchronization Tool](http://f.cl.ly/items/2X3m0h0g0I1O1U07163o/wti_example.jpg)
12
12
 
13
13
  ## This rubygem provides:
14
14
 
15
- 1. A command-line executable `wti` to sync your files between your computer/server and WebTranslateIt.com. It can run in a terminal (Linux, MacOS X) or in cmd.exe (Windows). This is what this page is all about.
16
- 2. A synchronisation server to help your translation team update your language files from a web interface. To learn how to install it, go to [web_translate_it_server](https://github.com/AtelierConvivialite/web_translate_it_server).
17
- 3. Ruby libraries to write programs connecting to WebTranslateIt.com’s API. For more information, go to [Extras](https://github.com/AtelierConvivialite/webtranslateit/wiki/Extras).
18
- 4. A rack middleware you can use in your Rails app to automatically fetch new translations from Web Translate It.
19
-
20
- This readme focusses on the most commonly used functionality of this rubygem: the `wti` command-line executable.
15
+ 1. A Command-Line Interface, `wti`, to sync files between your computer/server and WebTranslateIt.com. It is cross-platform and runs in a terminal (Linux, MacOS X) or in cmd.exe (Windows).
16
+ 2. A synchronisation server which provides a web interface for your translation team to update your language files. [Learn more on the web_translate_it_server project page](https://github.com/AtelierConvivialite/web_translate_it_server).
17
+ 3. A library to help write programs to connect to WebTranslateIt.com’s API. See [Extras](https://github.com/AtelierConvivialite/webtranslateit/wiki/Extras).
18
+ 4. A rack middleware you can use in your Rails app to automatically fetch new translations from WebTranslateIt.
21
19
 
22
20
  ---
23
21
 
24
22
  ## Installation
25
23
 
26
- A dependency of wti needs gcc in order to install, so you will need build tools. With Linux, `apt-get install gcc` or `yum install gcc` should do it.
24
+ A dependency of `wti` needs gcc, so you will need it. With Linux, `apt-get install build-essential` or `yum install gcc` should do it.
27
25
 
28
- You will also need ruby to run wti. On Linux or a Mac, it’s already installed. Install [RubyInstaller](http://rubyinstaller.org/) if you’re using Windows. [See detailed installation instructions for Windows users](https://github.com/AtelierConvivialite/webtranslateit/wiki/Install-wti-on-Windows).
26
+ You will also need ruby to run `wti`. On Linux or a Mac, it’s already installed. Install [RubyInstaller](http://rubyinstaller.org/) if you’re using Windows. [See detailed installation instructions for Windows users](https://github.com/AtelierConvivialite/webtranslateit/wiki/Install-wti-on-Windows).
29
27
 
30
- gem install web_translate_it
28
+ ``` bash
29
+ $ gem install web_translate_it
30
+ Fetching: web_translate_it-2.0.3.gem (100%)
31
+ Successfully installed web_translate_it-2.0.3
32
+ 1 gem installed
33
+ ```
31
34
 
32
- At this point you should have the `wti` executable working.
35
+ At this point you should have the `wti` executable working:
36
+
37
+ ``` bash
38
+ $ wti -v
39
+ wti version 2.0.3
40
+ ```
33
41
 
34
42
  ## Configuration
35
43
 
36
- Now that the tool is installed, you’ll have to configure your project:
44
+ Now that the tool is installed, you’ll have to configure your project. Basically, `wti` is to be run on a project root directory, and looks for a `.wti` file containing your project information. The command `wti init` lets your create your `.wti` file.
45
+
46
+ ``` bash
47
+ $ wti init
48
+ # Initializing project
49
+ Project API Key: 55555abc1235555
50
+ Path to configuration file: (Default: .wti)
37
51
 
38
- wti init
52
+ Your project was successfully initialized.
53
+ You can now use `wti` to push and pull your language files.
54
+ Check `wti --help` for help.
55
+ ```
39
56
 
40
- The command will ask you to enter:
57
+ The command asks you to enter your project API key (you can find it in your project settings) and where to save the configuration file (by default it will create a `.wti` in your project root directory).
41
58
 
42
- * Your Web Translate It API key. You can find it in your project settings,
43
- * Where to save the configuration file (by default it will create a `.wti` in your project root directory).
59
+ Now you’re all set and you can use the `wti` commands on your project.
44
60
 
45
61
  ## Usage
46
62
 
@@ -128,7 +144,7 @@ Append `--help` for each command for more information. For instance:
128
144
  </tr>
129
145
  <tr>
130
146
  <td>wti pull --force</td>
131
- <td>Force pull (to bypass Web Translate It’s HTTP caching)</td>
147
+ <td>Force pull (to bypass WebTranslateIt’s HTTP caching)</td>
132
148
  </tr>
133
149
  <tr>
134
150
  <td>wti addlocale fr</td>
@@ -144,7 +160,7 @@ Append `--help` for each command for more information. For instance:
144
160
  </tr>
145
161
  <tr>
146
162
  <td>wti match</td>
147
- <td>Show matching between files on local computer and the ones in Web Translate It’s File Manager</td>
163
+ <td>Show matching between files on local computer and the ones in WebTranslateIt’s File Manager</td>
148
164
  </tr>
149
165
  </table>
150
166
 
@@ -161,7 +177,7 @@ There are 4 hooks:
161
177
 
162
178
  Check the [sample `.wti`](https://github.com/AtelierConvivialite/webtranslateit/blob/master/examples/.wti#L9..L13) file for implementation.
163
179
 
164
- ## Web Translate It Server
180
+ ## WebTranslateIt Server
165
181
 
166
182
  This feature was extracted out to a separate gem. See [web_translate_it_server](https://github.com/AtelierConvivialite/web_translate_it_server).
167
183
 
data/version CHANGED
@@ -1 +1 @@
1
- 2.0.3
1
+ 2.0.4
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: web_translate_it
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.4
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-06-07 00:00:00.000000000 Z
12
+ date: 2012-08-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multipart-post