web_translate_it 1.8.3 → 1.8.4
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/bin/wti +10 -0
- data/history.md +6 -0
- data/lib/web_translate_it/command_line.rb +42 -4
- data/lib/web_translate_it/project.rb +21 -0
- data/lib/web_translate_it/translation_file.rb +40 -5
- data/version.yml +1 -1
- metadata +11 -11
data/bin/wti
CHANGED
@@ -61,11 +61,21 @@ EOS
|
|
61
61
|
opt :low_priority, "WTI will process this file with a low priority"
|
62
62
|
opt :config, "Path to a translation.yml file", :short => "-c", :default => ".wti"
|
63
63
|
end
|
64
|
+
when "rm"
|
65
|
+
Trollop::options do
|
66
|
+
banner "Delete a master language file"
|
67
|
+
opt :config, "Path to a translation.yml file", :short => "-c", :default => ".wti"
|
68
|
+
end
|
64
69
|
when "addlocale"
|
65
70
|
Trollop::options do
|
66
71
|
banner "Add a new locale to the project"
|
67
72
|
opt :config, "Path to a translation.yml file", :short => "-c", :default => ".wti"
|
68
73
|
end
|
74
|
+
when "rmlocale"
|
75
|
+
Trollop::options do
|
76
|
+
banner "Delete a locale from the project"
|
77
|
+
opt :config, "Path to a translation.yml file", :short => "-c", :default => ".wti"
|
78
|
+
end
|
69
79
|
when "server"
|
70
80
|
Trollop::options do
|
71
81
|
banner <<-EOS
|
data/history.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## Version 1.8.4 / 2011-11-14
|
2
|
+
|
3
|
+
* Add new command `wti rmlocale locale_code_1 locale_code_2 ...` to delete a locale from a project.
|
4
|
+
* Add new command `wti rm path_to_file1 path_to_file2 ...` to delete a master file from a project.
|
5
|
+
* `wti` sends client name and version in custom headers. #73.
|
6
|
+
|
1
7
|
## Version 1.8.3 / 2011-11-14
|
2
8
|
|
3
9
|
* Bring back `-c` option to specify a configuration file with a specific name. `wti pull -c config/translations.yml` for instance. See #67 and #71.
|
@@ -63,7 +63,7 @@ module WebTranslateIt
|
|
63
63
|
STDOUT.sync = true
|
64
64
|
if parameters == []
|
65
65
|
puts StringUtil.failure("No master file given.")
|
66
|
-
puts "Usage: wti add
|
66
|
+
puts "Usage: wti add master_file_1 master_file_2 ..."
|
67
67
|
exit
|
68
68
|
end
|
69
69
|
WebTranslateIt::Util.http_connection do |http|
|
@@ -74,12 +74,36 @@ module WebTranslateIt
|
|
74
74
|
end
|
75
75
|
puts StringUtil.success("Master file added.")
|
76
76
|
end
|
77
|
+
|
78
|
+
def rm
|
79
|
+
STDOUT.sync = true
|
80
|
+
if parameters == []
|
81
|
+
puts StringUtil.failure("No master file given.")
|
82
|
+
puts "Usage: wti rm master_file_1 master_file_2 ..."
|
83
|
+
exit
|
84
|
+
end
|
85
|
+
WebTranslateIt::Util.http_connection do |http|
|
86
|
+
parameters.each do |param|
|
87
|
+
if Util.ask_yes_no("Are you certain you want to delete the master file #{param} and its attached target files and translations?", false)
|
88
|
+
configuration.files.find_all{ |file| file.file_path == param }.each do |master_file|
|
89
|
+
master_file.delete(http)
|
90
|
+
# delete files
|
91
|
+
File.delete(master_file.file_path) if File.exists?(master_file.file_path)
|
92
|
+
configuration.files.find_all{ |file| file.master_id == master_file.id }.each do |target_file|
|
93
|
+
File.delete(target_file.file_path) if File.exists?(target_file.file_path)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
puts StringUtil.success("Master file deleted.")
|
100
|
+
end
|
77
101
|
|
78
102
|
def addlocale
|
79
103
|
STDOUT.sync = true
|
80
104
|
if parameters == []
|
81
105
|
puts StringUtil.failure("No locale code given.")
|
82
|
-
puts "Usage: wti addlocale
|
106
|
+
puts "Usage: wti addlocale locale_code_1 locale_code_2 ..."
|
83
107
|
exit
|
84
108
|
end
|
85
109
|
parameters.each do |param|
|
@@ -88,11 +112,26 @@ module WebTranslateIt
|
|
88
112
|
end
|
89
113
|
puts "Done!"
|
90
114
|
end
|
115
|
+
|
116
|
+
def rmlocale
|
117
|
+
STDOUT.sync = true
|
118
|
+
if parameters == []
|
119
|
+
puts StringUtil.failure("No locale code given.")
|
120
|
+
puts "Usage: wti rmlocale locale_code_1 locale_code_2 ..."
|
121
|
+
exit
|
122
|
+
end
|
123
|
+
parameters.each do |param|
|
124
|
+
if Util.ask_yes_no("Are you certain you want to delete the locale #{param} and its attached target files and translations?", false)
|
125
|
+
print StringUtil.success("Deleting locale #{param}... ")
|
126
|
+
puts WebTranslateIt::Project.delete_locale(configuration.api_key, param)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
puts "Done!"
|
130
|
+
end
|
91
131
|
|
92
132
|
def init
|
93
133
|
api_key = Util.ask("Project API Key:")
|
94
134
|
path = Util.ask("Configuration file path:", '.wti')
|
95
|
-
puts path.split('/')[0..path.split('/').size-2].join('/')
|
96
135
|
FileUtils.mkpath(path.split('/')[0..path.split('/').size-2].join('/')) unless path.split('/').count == 1
|
97
136
|
project = YAML.load WebTranslateIt::Project.fetch_info(api_key)
|
98
137
|
project_info = project['project']
|
@@ -171,7 +210,6 @@ module WebTranslateIt
|
|
171
210
|
|
172
211
|
def configuration_file_path
|
173
212
|
if self.command_options.config
|
174
|
-
puts self.command_options.config
|
175
213
|
return self.command_options.config
|
176
214
|
else
|
177
215
|
if File.exists?('config/translation.yml')
|
@@ -6,6 +6,8 @@ module WebTranslateIt
|
|
6
6
|
begin
|
7
7
|
WebTranslateIt::Util.http_connection do |http|
|
8
8
|
request = Net::HTTP::Get.new("/api/projects/#{api_key}.yaml")
|
9
|
+
request.add_field("X-Client-Name", "web_translate_it")
|
10
|
+
request.add_field("X-Client-Version", WebTranslateIt::Util.version)
|
9
11
|
response = http.request(request)
|
10
12
|
if response.is_a?(Net::HTTPSuccess)
|
11
13
|
return response.body
|
@@ -26,6 +28,8 @@ module WebTranslateIt
|
|
26
28
|
begin
|
27
29
|
WebTranslateIt::Util.http_connection do |http|
|
28
30
|
request = Net::HTTP::Get.new("/api/projects/#{api_key}/stats.yaml")
|
31
|
+
request.add_field("X-Client-Name", "web_translate_it")
|
32
|
+
request.add_field("X-Client-Version", WebTranslateIt::Util.version)
|
29
33
|
Util.handle_response(http.request(request), true)
|
30
34
|
end
|
31
35
|
rescue Timeout::Error
|
@@ -39,6 +43,8 @@ module WebTranslateIt
|
|
39
43
|
begin
|
40
44
|
WebTranslateIt::Util.http_connection do |http|
|
41
45
|
request = Net::HTTP::Post.new("/api/projects/#{api_key}/locales")
|
46
|
+
request.add_field("X-Client-Name", "web_translate_it")
|
47
|
+
request.add_field("X-Client-Version", WebTranslateIt::Util.version)
|
42
48
|
request.set_form_data({ 'id' => locale_code }, ';')
|
43
49
|
Util.handle_response(http.request(request), true)
|
44
50
|
end
|
@@ -48,5 +54,20 @@ module WebTranslateIt
|
|
48
54
|
self.create_locale(api_key, locale_code)
|
49
55
|
end
|
50
56
|
end
|
57
|
+
|
58
|
+
def self.delete_locale(api_key, locale_code)
|
59
|
+
begin
|
60
|
+
WebTranslateIt::Util.http_connection do |http|
|
61
|
+
request = Net::HTTP::Delete.new("/api/projects/#{api_key}/locales/#{locale_code}")
|
62
|
+
request.add_field("X-Client-Name", "web_translate_it")
|
63
|
+
request.add_field("X-Client-Version", WebTranslateIt::Util.version)
|
64
|
+
Util.handle_response(http.request(request), true)
|
65
|
+
end
|
66
|
+
rescue Timeout::Error
|
67
|
+
puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
|
68
|
+
sleep(5)
|
69
|
+
self.delete_locale(api_key, locale_code)
|
70
|
+
end
|
71
|
+
end
|
51
72
|
end
|
52
73
|
end
|
@@ -42,9 +42,12 @@ module WebTranslateIt
|
|
42
42
|
display.push "#{StringUtil.checksumify(self.local_checksum.to_s)}..#{StringUtil.checksumify(self.remote_checksum.to_s)}"
|
43
43
|
if !File.exist?(self.file_path) or force or self.remote_checksum != self.local_checksum
|
44
44
|
begin
|
45
|
-
|
45
|
+
request = Net::HTTP::Get.new(api_url)
|
46
|
+
request.add_field("X-Client-Name", "web_translate_it")
|
47
|
+
request.add_field("X-Client-Version", WebTranslateIt::Util.version)
|
46
48
|
FileUtils.mkpath(self.file_path.split('/')[0..-2].join('/')) unless File.exist?(self.file_path) or self.file_path.split('/')[0..-2].join('/') == ""
|
47
49
|
begin
|
50
|
+
response = http_connection.request(request)
|
48
51
|
File.open(self.file_path, 'wb'){ |file| file << response.body } if response.code.to_i == 200 and response.body != ''
|
49
52
|
display.push Util.handle_response(response)
|
50
53
|
rescue
|
@@ -80,6 +83,8 @@ module WebTranslateIt
|
|
80
83
|
File.open(self.file_path) do |file|
|
81
84
|
begin
|
82
85
|
request = Net::HTTP::Put::Multipart.new(api_url, {"file" => UploadIO.new(file, "text/plain", file.path), "merge" => merge, "ignore_missing" => ignore_missing, "label" => label, "low_priority" => low_priority })
|
86
|
+
request.add_field("X-Client-Name", "web_translate_it")
|
87
|
+
request.add_field("X-Client-Version", WebTranslateIt::Util.version)
|
83
88
|
display.push Util.handle_response(http_connection.request(request))
|
84
89
|
puts ArrayUtil.to_columns(display)
|
85
90
|
rescue Timeout::Error
|
@@ -93,7 +98,7 @@ module WebTranslateIt
|
|
93
98
|
end
|
94
99
|
end
|
95
100
|
|
96
|
-
# Create a language file to Web Translate It by performing a POST Request.
|
101
|
+
# Create a master language file to Web Translate It by performing a POST Request.
|
97
102
|
#
|
98
103
|
# Example of implementation:
|
99
104
|
#
|
@@ -105,14 +110,15 @@ module WebTranslateIt
|
|
105
110
|
# actually takes place. This is due to the fact that language file imports are handled by background processing.
|
106
111
|
#
|
107
112
|
def create(http_connection, low_priority=false)
|
108
|
-
puts low_priority
|
109
113
|
display = []
|
110
114
|
display.push file_path
|
111
115
|
display.push "#{StringUtil.checksumify(self.local_checksum.to_s)}..[ ]"
|
112
116
|
if File.exists?(self.file_path)
|
113
117
|
File.open(self.file_path) do |file|
|
114
118
|
begin
|
115
|
-
request
|
119
|
+
request = Net::HTTP::Post::Multipart.new(api_url_for_create, { "name" => self.file_path, "file" => UploadIO.new(file, "text/plain", file.path), "low_priority" => low_priority })
|
120
|
+
request.add_field("X-Client-Name", "web_translate_it")
|
121
|
+
request.add_field("X-Client-Version", WebTranslateIt::Util.version)
|
116
122
|
display.push Util.handle_response(http_connection.request(request))
|
117
123
|
puts ArrayUtil.to_columns(display)
|
118
124
|
rescue Timeout::Error
|
@@ -125,7 +131,32 @@ module WebTranslateIt
|
|
125
131
|
puts StringUtil.failure("\nFile #{self.file_path} doesn't exist!")
|
126
132
|
end
|
127
133
|
end
|
128
|
-
|
134
|
+
|
135
|
+
# Delete a master language file from Web Translate It by performing a DELETE Request.
|
136
|
+
#
|
137
|
+
def delete(http_connection)
|
138
|
+
display = []
|
139
|
+
display.push file_path
|
140
|
+
# display.push "#{StringUtil.checksumify(self.local_checksum.to_s)}..[ ]"
|
141
|
+
if File.exists?(self.file_path)
|
142
|
+
File.open(self.file_path) do |file|
|
143
|
+
begin
|
144
|
+
request = Net::HTTP::Delete.new(api_url_for_delete)
|
145
|
+
request.add_field("X-Client-Name", "web_translate_it")
|
146
|
+
request.add_field("X-Client-Version", WebTranslateIt::Util.version)
|
147
|
+
display.push Util.handle_response(http_connection.request(request))
|
148
|
+
puts ArrayUtil.to_columns(display)
|
149
|
+
rescue Timeout::Error
|
150
|
+
puts StringUtil.failure("Request timeout. Will retry in 5 seconds.")
|
151
|
+
sleep(5)
|
152
|
+
delete
|
153
|
+
end
|
154
|
+
end
|
155
|
+
else
|
156
|
+
puts StringUtil.failure("\nFile #{self.file_path} doesn't exist!")
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
129
160
|
def exists?
|
130
161
|
File.exists?(file_path)
|
131
162
|
end
|
@@ -150,6 +181,10 @@ module WebTranslateIt
|
|
150
181
|
"/api/projects/#{self.api_key}/files"
|
151
182
|
end
|
152
183
|
|
184
|
+
def api_url_for_delete
|
185
|
+
"/api/projects/#{self.api_key}/files/#{self.id}"
|
186
|
+
end
|
187
|
+
|
153
188
|
def local_checksum
|
154
189
|
require 'digest/sha1'
|
155
190
|
begin
|
data/version.yml
CHANGED
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: 1.8.
|
4
|
+
version: 1.8.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multipart-post
|
16
|
-
requirement: &
|
16
|
+
requirement: &70301606155960 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.1.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70301606155960
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: trollop
|
27
|
-
requirement: &
|
27
|
+
requirement: &70301606155360 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.16.2
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70301606155360
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: sinatra
|
38
|
-
requirement: &
|
38
|
+
requirement: &70301606154700 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.2.6
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70301606154700
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &70301606153740 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 2.6.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70301606153740
|
58
58
|
description:
|
59
59
|
email: edouard@atelierconvivialite.com
|
60
60
|
executables:
|
@@ -117,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
117
|
version: '0'
|
118
118
|
requirements: []
|
119
119
|
rubyforge_project:
|
120
|
-
rubygems_version: 1.8.
|
120
|
+
rubygems_version: 1.8.10
|
121
121
|
signing_key:
|
122
122
|
specification_version: 3
|
123
123
|
summary: A CLI to sync locale files with webtranslateit.com.
|