web_translate_it 2.4.9 → 2.4.10
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.
- 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
|