web_translate_it 2.4.9 → 2.4.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/wti +20 -20
- data/history.md +6 -0
- data/lib/web_translate_it/command_line.rb +63 -10
- data/lib/web_translate_it/configuration.rb +13 -1
- data/lib/web_translate_it/translation_file.rb +22 -21
- data/license +1 -1
- data/readme.md +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb3fcef09897665d610fe38915e9a5f68858357f6e11839be6f34c10286dfb0f
|
4
|
+
data.tar.gz: 70cad073ebdac68cceb0d54688a0168f9794d9ca9adeda8520a5cecce68d021d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 755ac1081486d0937458aa143093f9ba017d5c012bc972cf46d3294110c82240ded1aba0941a5b1fce71285808b56e466c4ef158978e57864011a46eea2209d5
|
7
|
+
data.tar.gz: ff08d126ad22c2b3129301e03dd0ecda77a36b6ce54fce572ca15c09b45aac11768c15cab8038377f0c2bc2b332cac8ab965c4d65e6b37fe3692b5d6f9ea10ea
|
data/bin/wti
CHANGED
@@ -14,18 +14,18 @@ The most commonly used wti commands are:
|
|
14
14
|
match Display matching of local files with File Manager
|
15
15
|
add Create and push a new master language file
|
16
16
|
rm Delete a master language file from a project
|
17
|
+
mv Moves a file both locally and from a project
|
17
18
|
addlocale Add a new locale to the project
|
18
19
|
rmlocale Delete a locale from a project
|
19
20
|
status Fetch and display project statistics
|
20
21
|
init Configure your project to sync
|
21
|
-
configuser Configure your user email
|
22
22
|
|
23
23
|
See `wti <command> --help` for more information on a specific command.
|
24
24
|
|
25
25
|
[options] are:
|
26
26
|
EOS
|
27
27
|
|
28
|
-
SUB_COMMANDS = %w(pull push match add addlocale status st init
|
28
|
+
SUB_COMMANDS = %w(pull push match add rm mv addlocale rmlocale status st init)
|
29
29
|
global_options = Optimist::options do
|
30
30
|
stop_on SUB_COMMANDS
|
31
31
|
banner show_commands
|
@@ -40,10 +40,10 @@ command_options = case command
|
|
40
40
|
wti pull [filename] - Pull target language file(s)
|
41
41
|
[options] are:
|
42
42
|
EOS
|
43
|
-
opt :locale, "ISO code of locale(s) to pull", :
|
43
|
+
opt :locale, "ISO code of locale(s) to pull", type: :string
|
44
44
|
opt :all, "Pull all files"
|
45
45
|
opt :force, "Force pull (bypass conditional requests to WTI)"
|
46
|
-
opt :config, "Path to a configuration file", :
|
46
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
47
47
|
opt :debug, "Display debug information"
|
48
48
|
end
|
49
49
|
when "push"
|
@@ -52,15 +52,15 @@ EOS
|
|
52
52
|
wti push [filename] - Push master language file(s)
|
53
53
|
[options] are:
|
54
54
|
EOS
|
55
|
-
opt :locale, "ISO code of locale(s) to push", :
|
55
|
+
opt :locale, "ISO code of locale(s) to push", type: :string
|
56
56
|
opt :target, "Upload all target files"
|
57
57
|
opt :force, "Force push (bypass conditional requests to WTI)"
|
58
58
|
opt :low_priority, "WTI will process this file with a low priority"
|
59
59
|
opt :merge, "Force WTI to merge this file"
|
60
60
|
opt :ignore_missing, "Force WTI to not obsolete missing strings"
|
61
61
|
opt :minor, "Minor Changes. When pushing a master file, prevents target translations to be flagged as `to_verify`."
|
62
|
-
opt :label, "Apply a label to the changes", :
|
63
|
-
opt :config, "Path to a configuration file", :
|
62
|
+
opt :label, "Apply a label to the changes", type: :string
|
63
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
64
64
|
opt :all, "DEPRECATED -- See `wti push --target` instead"
|
65
65
|
opt :debug, "Display debug information"
|
66
66
|
end
|
@@ -68,48 +68,49 @@ EOS
|
|
68
68
|
Optimist::options do
|
69
69
|
banner "wti add filename - Create and push a new master language file"
|
70
70
|
opt :low_priority, "WTI will process this file with a low priority"
|
71
|
-
opt :config, "Path to a configuration file", :
|
71
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
72
72
|
opt :debug, "Display debug information"
|
73
73
|
end
|
74
74
|
when "rm"
|
75
75
|
Optimist::options do
|
76
76
|
banner "wti rm filename - Delete a master language file"
|
77
|
-
opt :config, "Path to a configuration file", :
|
77
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
78
78
|
opt :debug, "Display debug information"
|
79
79
|
end
|
80
|
+
when "mv"
|
81
|
+
Optimist::options do
|
82
|
+
banner "wti mv filename - Moves a master language file and its target files"
|
83
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
84
|
+
opt :debug, "Display debug information"
|
85
|
+
end
|
80
86
|
when "addlocale"
|
81
87
|
Optimist::options do
|
82
88
|
banner "wti addlocale localename - Add a new locale to the project"
|
83
|
-
opt :config, "Path to a configuration file", :
|
89
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
84
90
|
opt :debug, "Display debug information"
|
85
91
|
end
|
86
92
|
when "rmlocale"
|
87
93
|
Optimist::options do
|
88
94
|
banner "wti rmlocale localename Delete a locale from the project"
|
89
|
-
opt :config, "Path to a configuration file", :
|
95
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
90
96
|
opt :debug, "Display debug information"
|
91
97
|
end
|
92
98
|
when "status"
|
93
99
|
Optimist::options do
|
94
100
|
banner "wti status - Fetch and display project statistics"
|
95
|
-
opt :config, "Path to a configuration file", :
|
101
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
96
102
|
opt :debug, "Display debug information"
|
97
103
|
end
|
98
104
|
when "init"
|
99
105
|
Optimist::options do
|
100
106
|
banner "wti init [api_token] - Configure your project to sync"
|
101
|
-
opt :config, "Path to a configuration file", :
|
102
|
-
opt :debug, "Display debug information"
|
103
|
-
end
|
104
|
-
when "configuser"
|
105
|
-
Optimist::options do
|
106
|
-
banner "wti configuser - Configure your user email"
|
107
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
107
108
|
opt :debug, "Display debug information"
|
108
109
|
end
|
109
110
|
when "match"
|
110
111
|
Optimist::options do
|
111
112
|
banner "wti match - Display matching of local files with File Manager"
|
112
|
-
opt :config, "Path to a configuration file", :
|
113
|
+
opt :config, "Path to a configuration file", short: "-c", default: ".wti"
|
113
114
|
opt :debug, "Display debug information"
|
114
115
|
end
|
115
116
|
else
|
@@ -128,4 +129,3 @@ rescue Interrupt => e
|
|
128
129
|
puts StringUtil.failure("\nQuitting...")
|
129
130
|
exit 1
|
130
131
|
end
|
131
|
-
|
data/history.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## Version 2.4.10 / 2019-10-21
|
2
|
+
|
3
|
+
* New command: `wti mv path/to/file.po newpath/to/file.po` to move a language file
|
4
|
+
both on your local working directory and on your WebTranslateIt project.
|
5
|
+
* Fix: `wti pull something` now doesn’t pull anything if no files match what needs to be pulled. Close #151.
|
6
|
+
|
1
7
|
## Version 2.4.9 / 2019-08-07
|
2
8
|
|
3
9
|
* Fix issue referencing old `Trollop` library. #149
|
@@ -18,6 +18,8 @@ module WebTranslateIt
|
|
18
18
|
message = "Creating master files"
|
19
19
|
when 'rm'
|
20
20
|
message = "Deleting files"
|
21
|
+
when 'mv'
|
22
|
+
message = "Moving files"
|
21
23
|
when 'addlocale'
|
22
24
|
message = "Adding locale"
|
23
25
|
when 'rmlocale'
|
@@ -44,7 +46,7 @@ module WebTranslateIt
|
|
44
46
|
parameters.each do |parameter|
|
45
47
|
found_files += files.find_all{ |file| File.fnmatch(parameter, file.file_path) }
|
46
48
|
end
|
47
|
-
files = found_files
|
49
|
+
files = found_files
|
48
50
|
files = files.uniq.sort{ |a,b| a.file_path <=> b.file_path }
|
49
51
|
if files.size == 0
|
50
52
|
puts "No files to pull."
|
@@ -127,26 +129,77 @@ module WebTranslateIt
|
|
127
129
|
STDOUT.sync = true
|
128
130
|
if parameters == []
|
129
131
|
puts StringUtil.failure("Error: You must provide the path to the master file to remove.")
|
130
|
-
puts "Usage: wti path/to/
|
132
|
+
puts "Usage: wti rm path/to/master_file_1 path/to/master_file_2 ..."
|
131
133
|
exit
|
132
134
|
end
|
133
135
|
WebTranslateIt::Connection.new(configuration.api_key) do |http|
|
134
136
|
parameters.each do |param|
|
135
137
|
if Util.ask_yes_no("Are you sure you want to delete the master file #{param}?\nThis will also delete its target files and translations.", false)
|
136
|
-
configuration.files.find_all{ |file| file.file_path == param }
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
138
|
+
files = configuration.files.find_all{ |file| file.file_path == param }
|
139
|
+
if files.any?
|
140
|
+
files.each do |master_file|
|
141
|
+
master_file.delete(http)
|
142
|
+
# delete files
|
143
|
+
if File.exists?(master_file.file_path)
|
144
|
+
success = File.delete(master_file.file_path)
|
145
|
+
puts StringUtil.success("Deleted master file #{master_file.file_path}.") if success
|
146
|
+
end
|
143
147
|
complete_success = false if !success
|
148
|
+
configuration.files.find_all{ |file| file.master_id == master_file.id }.each do |target_file|
|
149
|
+
if File.exists?(target_file.file_path)
|
150
|
+
success = File.delete(target_file.file_path)
|
151
|
+
puts StringUtil.success("Deleted target file #{target_file.file_path}.") if success
|
152
|
+
else
|
153
|
+
puts StringUtil.failure("Target file #{target_file.file_path} doesn’t exist locally")
|
154
|
+
end
|
155
|
+
complete_success = false if !success
|
156
|
+
end
|
144
157
|
end
|
158
|
+
puts StringUtil.success("All done.") if complete_success
|
159
|
+
else
|
160
|
+
puts StringUtil.failure("#{param}: File doesn’t exist on project.")
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
complete_success
|
166
|
+
end
|
167
|
+
|
168
|
+
def mv
|
169
|
+
complete_success = true
|
170
|
+
STDOUT.sync = true
|
171
|
+
if parameters.count != 2
|
172
|
+
puts StringUtil.failure("Error: You must provide the source path and destination path of the master file to move.")
|
173
|
+
puts "Usage: wti mv path/to/master_file_old_path path/to/master_file_new_path ..."
|
174
|
+
exit
|
175
|
+
end
|
176
|
+
source = parameters[0]
|
177
|
+
destination = parameters[1]
|
178
|
+
WebTranslateIt::Connection.new(configuration.api_key) do |http|
|
179
|
+
if Util.ask_yes_no("Are you sure you want to move the master file #{source} and its target files?", true)
|
180
|
+
configuration.files.find_all{ |file| file.file_path == source }.each do |master_file|
|
181
|
+
master_file.upload(http, false, false, nil, false, false, true, true, destination)
|
182
|
+
# move master file
|
183
|
+
if File.exists?(source)
|
184
|
+
success = File.rename(source, destination) if File.exists?(source)
|
185
|
+
puts StringUtil.success("Moved master file #{master_file.file_path}.") if success
|
186
|
+
end
|
187
|
+
complete_success = false if !success
|
188
|
+
configuration.files.find_all{ |file| file.master_id == master_file.id }.each do |target_file|
|
189
|
+
if File.exists?(target_file.file_path)
|
190
|
+
success = File.delete(target_file.file_path)
|
191
|
+
complete_success = false if !success
|
192
|
+
end
|
193
|
+
end
|
194
|
+
configuration.reload
|
195
|
+
configuration.files.find_all{ |file| file.master_id == master_file.id }.each do |target_file|
|
196
|
+
success = target_file.fetch(http)
|
197
|
+
complete_success = false if !success
|
145
198
|
end
|
199
|
+
puts StringUtil.success("All done.") if complete_success
|
146
200
|
end
|
147
201
|
end
|
148
202
|
end
|
149
|
-
puts StringUtil.success("Master file deleted.")
|
150
203
|
complete_success
|
151
204
|
end
|
152
205
|
|
@@ -33,11 +33,23 @@ module WebTranslateIt
|
|
33
33
|
WebTranslateIt::Connection.turn_silent_on if configuration['silence_errors']
|
34
34
|
self.project_name = project_info['project']['name']
|
35
35
|
else
|
36
|
-
puts StringUtil.failure("\
|
36
|
+
puts StringUtil.failure("\nNo configuration file found in #{File.expand_path(path_to_config_file, self.path)}")
|
37
37
|
exit(1)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
+
# Reload project data
|
42
|
+
#
|
43
|
+
def reload
|
44
|
+
project_info = YAML.load WebTranslateIt::Project.fetch_info(self.api_key)
|
45
|
+
set_locales_to_ignore(configuration)
|
46
|
+
set_locales_needed(configuration)
|
47
|
+
set_files(project_info['project'])
|
48
|
+
set_locales(project_info['project'])
|
49
|
+
WebTranslateIt::Connection.turn_silent_on if configuration['silence_errors']
|
50
|
+
self.project_name = project_info['project']['name']
|
51
|
+
end
|
52
|
+
|
41
53
|
# Set the project locales from the Project API.
|
42
54
|
# Implementation example:
|
43
55
|
#
|
@@ -82,7 +82,7 @@ module WebTranslateIt
|
|
82
82
|
#
|
83
83
|
# Note that the request might or might not eventually be acted upon, as it might be disallowed when processing
|
84
84
|
# actually takes place. This is due to the fact that language file imports are handled by background processing.
|
85
|
-
def upload(http_connection, merge=false, ignore_missing=false, label=nil, low_priority=false, minor_changes=false, force=false)
|
85
|
+
def upload(http_connection, merge=false, ignore_missing=false, label=nil, low_priority=false, minor_changes=false, force=false, rename_others=false, destination_path=nil)
|
86
86
|
success = true
|
87
87
|
tries ||= 3
|
88
88
|
display = []
|
@@ -92,7 +92,10 @@ module WebTranslateIt
|
|
92
92
|
if force or self.remote_checksum != self.local_checksum
|
93
93
|
File.open(self.file_path) do |file|
|
94
94
|
begin
|
95
|
-
|
95
|
+
params = {"file" => UploadIO.new(file, "text/plain", file.path), "merge" => merge, "ignore_missing" => ignore_missing, "label" => label, "low_priority" => low_priority, "minor_changes" => minor_changes }
|
96
|
+
params["name"] = destination_path unless destination_path.nil?
|
97
|
+
params["rename_others"] = rename_others
|
98
|
+
request = Net::HTTP::Put::Multipart.new(api_url, params)
|
96
99
|
WebTranslateIt::Util.add_fields(request)
|
97
100
|
display.push Util.handle_response(http_connection.request(request))
|
98
101
|
rescue Timeout::Error
|
@@ -113,7 +116,7 @@ module WebTranslateIt
|
|
113
116
|
end
|
114
117
|
puts ArrayUtil.to_columns(display)
|
115
118
|
else
|
116
|
-
puts StringUtil.failure("Can't push #{self.file_path}. File doesn't exist.")
|
119
|
+
puts StringUtil.failure("Can't push #{self.file_path}. File doesn't exist locally.")
|
117
120
|
end
|
118
121
|
return success
|
119
122
|
end
|
@@ -156,7 +159,7 @@ module WebTranslateIt
|
|
156
159
|
end
|
157
160
|
end
|
158
161
|
else
|
159
|
-
puts StringUtil.failure("\nFile #{self.file_path} doesn't exist!")
|
162
|
+
puts StringUtil.failure("\nFile #{self.file_path} doesn't exist locally!")
|
160
163
|
end
|
161
164
|
return success
|
162
165
|
end
|
@@ -169,27 +172,25 @@ module WebTranslateIt
|
|
169
172
|
display = []
|
170
173
|
display.push file_path
|
171
174
|
if File.exists?(self.file_path)
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
else
|
184
|
-
success = false
|
185
|
-
end
|
186
|
-
rescue
|
187
|
-
display.push StringUtil.failure("An error occured: #{$!}")
|
175
|
+
begin
|
176
|
+
request = Net::HTTP::Delete.new(api_url_for_delete)
|
177
|
+
WebTranslateIt::Util.add_fields(request)
|
178
|
+
display.push Util.handle_response(http_connection.request(request))
|
179
|
+
puts ArrayUtil.to_columns(display)
|
180
|
+
rescue Timeout::Error
|
181
|
+
puts StringUtil.failure("Request timeout. Will retry in 5 seconds.")
|
182
|
+
if (tries -= 1) > 0
|
183
|
+
sleep(5)
|
184
|
+
retry
|
185
|
+
else
|
188
186
|
success = false
|
189
187
|
end
|
188
|
+
rescue
|
189
|
+
display.push StringUtil.failure("An error occured: #{$!}")
|
190
|
+
success = false
|
190
191
|
end
|
191
192
|
else
|
192
|
-
puts StringUtil.failure("\
|
193
|
+
puts StringUtil.failure("\nMaster file #{self.file_path} doesn't exist locally!")
|
193
194
|
end
|
194
195
|
return success
|
195
196
|
end
|
data/license
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2009-
|
3
|
+
Copyright (c) 2009-2019 WebTranslateIt Software S.L
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
6
|
this software and associated documentation files (the "Software"), to deal in
|
data/readme.md
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
wti lets you easily sync your language files with [WebTranslateIt.com](https://webtranslateit.com), a web-based tool to translation software.
|
9
9
|
|
10
|
-
<img src="
|
10
|
+
<img src="http://edouard.baconfile.com.s3.us-east-1.amazonaws.com/web_translate_it/wti4.png" alt="WebTranslateIt Synchronization Tool" width="500px">
|
11
11
|
|
12
12
|
### wti...
|
13
13
|
|
@@ -276,4 +276,4 @@ fr: 100% translated, 100% completed.
|
|
276
276
|
|
277
277
|
# License
|
278
278
|
|
279
|
-
Copyright (c) 2009-
|
279
|
+
Copyright (c) 2009-2019 WebTranslateIt Software S.L, released under the MIT License.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: web_translate_it
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edouard Briere
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multipart-post
|