web_translate_it 2.5.3 → 2.6.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,213 +1,260 @@
1
- # encoding: utf-8
2
1
  module WebTranslateIt
3
- class CommandLine
2
+ class CommandLine # rubocop:todo Metrics/ClassLength
4
3
  require 'fileutils'
5
4
  require 'set'
6
5
  attr_accessor :configuration, :global_options, :command_options, :parameters
7
6
 
8
- def initialize(command, command_options, global_options, parameters, project_path)
7
+ def initialize(command, command_options, global_options, parameters, project_path) # rubocop:todo Metrics/CyclomaticComplexity, Metrics/MethodLength
9
8
  self.command_options = command_options
10
9
  self.parameters = parameters
11
10
  unless command == 'init'
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 'mv'
22
- message = "Moving files"
23
- when 'addlocale'
24
- message = "Adding locale"
25
- when 'rmlocale'
26
- message = "Deleting locale"
27
- else
28
- message = "Gathering information"
11
+ message = case command
12
+ when 'pull'
13
+ 'Pulling files'
14
+ when 'push'
15
+ 'Pushing files'
16
+ when 'add'
17
+ 'Creating master files'
18
+ when 'rm'
19
+ 'Deleting files'
20
+ when 'mv'
21
+ 'Moving files'
22
+ when 'addlocale'
23
+ 'Adding locale'
24
+ when 'rmlocale'
25
+ 'Deleting locale'
26
+ else
27
+ 'Gathering information'
28
+ end
29
+ throb do
30
+ print " #{message}"
31
+ self.configuration = WebTranslateIt::Configuration.new(project_path, configuration_file_path)
32
+ print " #{message} on #{configuration.project_name}"
29
33
  end
30
- throb { print " #{message}"; self.configuration = WebTranslateIt::Configuration.new(project_path, configuration_file_path); print " #{message} on #{self.configuration.project_name}"; }
31
34
  end
32
- success = self.send(command)
33
- exit 1 if !success
35
+ success = send(command)
36
+ exit 1 unless success
34
37
  end
35
-
36
- def pull
38
+
39
+ def pull # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
37
40
  complete_success = true
38
- STDOUT.sync = true
39
- `#{configuration.before_pull}` if configuration.before_pull
41
+ $stdout.sync = true
42
+ before_pull_hook
40
43
  # Selecting files to pull
41
44
  files = []
42
45
  fetch_locales_to_pull.each do |locale|
43
- files |= configuration.files.find_all{ |file| file.locale == locale }
46
+ files |= configuration.files.find_all { |file| file.locale == locale }
44
47
  end
45
48
  found_files = []
46
49
  parameters.each do |parameter|
47
- found_files += files.find_all{ |file| File.fnmatch(parameter, file.file_path) }
50
+ found_files += files.find_all { |file| File.fnmatch(parameter, file.file_path) }
48
51
  end
49
52
  files = found_files if parameters.any?
50
- files = files.uniq.sort{ |a,b| a.file_path <=> b.file_path }
51
- if files.size == 0
52
- puts "No files to pull."
53
+ files = files.uniq.sort { |a, b| a.file_path <=> b.file_path }
54
+ if files.empty?
55
+ puts 'No files to pull.'
53
56
  else
54
57
  # Now actually pulling files
55
58
  time = Time.now
56
59
  threads = []
57
- n_threads = (files.size.to_f/3).ceil >= 10 ? 10 : (files.size.to_f/3).ceil
60
+ n_threads = (files.size.to_f / 3).ceil >= 10 ? 10 : (files.size.to_f / 3).ceil
58
61
  ArrayUtil.chunk(files, n_threads).each do |file_array|
59
- unless file_array.empty?
60
- threads << Thread.new(file_array) do |file_array|
61
- WebTranslateIt::Connection.new(configuration.api_key) do |http|
62
- file_array.each do |file|
63
- success = file.fetch(http, command_options.force)
64
- complete_success = false if !success
65
- end
62
+ next if file_array.empty?
63
+
64
+ threads << Thread.new(file_array) do |f_array|
65
+ WebTranslateIt::Connection.new(configuration.api_key) do |http|
66
+ f_array.each do |file|
67
+ success = file.fetch(http, command_options.force)
68
+ complete_success = false unless success
66
69
  end
67
70
  end
68
71
  end
69
72
  end
70
- threads.each { |thread| thread.join }
73
+ threads.each(&:join)
71
74
  time = Time.now - time
72
- puts "Pulled #{files.size} files at #{(files.size/time).round} files/sec, using #{n_threads} threads."
73
- `#{configuration.after_pull}` if configuration.after_pull
75
+ puts "Pulled #{files.size} files at #{(files.size / time).round} files/sec, using #{n_threads} threads."
76
+ after_pull_hook
74
77
  complete_success
75
78
  end
76
79
  end
77
-
78
- def push
80
+
81
+ def before_pull_hook
82
+ return unless configuration.before_pull
83
+
84
+ output = `#{configuration.before_pull}`
85
+ if $CHILD_STATUS.success?
86
+ puts output
87
+ else
88
+ abort "Error: before_pull command exited with: #{output}"
89
+ end
90
+ end
91
+
92
+ def after_pull_hook
93
+ return unless configuration.after_pull
94
+
95
+ output = `#{configuration.after_pull}`
96
+ if $CHILD_STATUS.success?
97
+ puts output
98
+ else
99
+ abort "Error: after_pull command exited with: #{output}"
100
+ end
101
+ end
102
+
103
+ def push # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
79
104
  complete_success = true
80
- STDOUT.sync = true
81
- `#{configuration.before_push}` if configuration.before_push
105
+ $stdout.sync = true
106
+ before_push_hook
82
107
  WebTranslateIt::Connection.new(configuration.api_key) do |http|
83
108
  fetch_locales_to_push(configuration).each do |locale|
84
- if parameters.any?
85
- files = configuration.files.find_all{ |file| parameters.include?(file.file_path) }.sort{|a,b| a.file_path <=> b.file_path}
86
- else
87
- files = configuration.files.find_all{ |file| file.locale == locale }.sort{|a,b| a.file_path <=> b.file_path}
88
- end
89
- if files.size == 0
109
+ files = if parameters.any?
110
+ configuration.files.find_all { |file| parameters.include?(file.file_path) }.sort { |a, b| a.file_path <=> b.file_path }
111
+ else
112
+ configuration.files.find_all { |file| file.locale == locale }.sort { |a, b| a.file_path <=> b.file_path }
113
+ end
114
+ if files.empty?
90
115
  puts "Couldn't find any local files registered on WebTranslateIt to push."
91
116
  else
92
117
  files.each do |file|
93
118
  success = file.upload(http, command_options[:merge], command_options.ignore_missing, command_options.label, command_options.low_priority, command_options[:minor], command_options.force)
94
- complete_success = false if !success
119
+ complete_success = false unless success
95
120
  end
96
121
  end
97
122
  end
98
123
  end
99
- `#{configuration.after_push}` if configuration.after_push
124
+ after_push_hook
100
125
  complete_success
101
126
  end
102
-
103
- def add
127
+
128
+ def before_push_hook
129
+ return unless configuration.before_push
130
+
131
+ output = `#{configuration.before_push}`
132
+ if $CHILD_STATUS.success?
133
+ puts output
134
+ else
135
+ abort "Error: before_push command exited with: #{output}"
136
+ end
137
+ end
138
+
139
+ def after_push_hook
140
+ return unless configuration.after_push
141
+
142
+ output = `#{configuration.after_push}`
143
+ if $CHILD_STATUS.success?
144
+ puts output
145
+ else
146
+ abort "Error: after_push command exited with: #{output}"
147
+ end
148
+ end
149
+
150
+ def add # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
104
151
  complete_success = true
105
- STDOUT.sync = true
152
+ $stdout.sync = true
106
153
  if parameters == []
107
- puts StringUtil.failure("Error: You must provide the path to the master file to add.")
108
- puts "Usage: wti add path/to/master_file_1 path/to/master_file_2 ..."
154
+ puts StringUtil.failure('Error: You must provide the path to the master file to add.')
155
+ puts 'Usage: wti add path/to/master_file_1 path/to/master_file_2 ...'
109
156
  exit
110
157
  end
111
158
  WebTranslateIt::Connection.new(configuration.api_key) do |http|
112
- added = configuration.files.find_all{ |file| file.locale == configuration.source_locale}.collect {|file| File.expand_path(file.file_path) }.to_set
113
- to_add = parameters.reject{ |param| added.include?(File.expand_path(param))}
159
+ added = configuration.files.find_all { |file| file.locale == configuration.source_locale }.collect { |file| File.expand_path(file.file_path) }.to_set
160
+ to_add = parameters.reject { |param| added.include?(File.expand_path(param)) }
114
161
  if to_add.any?
115
162
  to_add.each do |param|
116
- file = TranslationFile.new(nil, param.gsub(/ /, "\\ "), nil, configuration.api_key)
163
+ file = TranslationFile.new(nil, param.gsub(/ /, '\\ '), nil, configuration.api_key)
117
164
  success = file.create(http, command_options.low_priority)
118
- complete_success = false if !success
165
+ complete_success = false unless success
119
166
  end
120
167
  else
121
- puts "No new master file to add."
168
+ puts 'No new master file to add.'
122
169
  end
123
170
  end
124
171
  complete_success
125
172
  end
126
173
 
127
- def rm
174
+ def rm # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
128
175
  complete_success = true
129
- STDOUT.sync = true
176
+ $stdout.sync = true
130
177
  if parameters == []
131
- puts StringUtil.failure("Error: You must provide the path to the master file to remove.")
132
- puts "Usage: wti rm path/to/master_file_1 path/to/master_file_2 ..."
178
+ puts StringUtil.failure('Error: You must provide the path to the master file to remove.')
179
+ puts 'Usage: wti rm path/to/master_file_1 path/to/master_file_2 ...'
133
180
  exit
134
181
  end
135
- WebTranslateIt::Connection.new(configuration.api_key) do |http|
182
+ WebTranslateIt::Connection.new(configuration.api_key) do |http| # rubocop:todo Metrics/BlockLength
136
183
  parameters.each do |param|
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)
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
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
184
+ next unless 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)
185
+
186
+ files = configuration.files.find_all { |file| file.file_path == param }
187
+ if files.any?
188
+ files.each do |master_file|
189
+ master_file.delete(http)
190
+ # delete files
191
+ if File.exist?(master_file.file_path)
192
+ success = File.delete(master_file.file_path)
193
+ puts StringUtil.success("Deleted master file #{master_file.file_path}.") if success
194
+ end
195
+ complete_success = false unless success
196
+ configuration.files.find_all { |file| file.master_id == master_file.id }.each do |target_file|
197
+ if File.exist?(target_file.file_path)
198
+ success = File.delete(target_file.file_path)
199
+ puts StringUtil.success("Deleted target file #{target_file.file_path}.") if success
200
+ else
201
+ puts StringUtil.failure("Target file #{target_file.file_path} doesn’t exist locally")
156
202
  end
203
+ complete_success = false unless success
157
204
  end
158
- puts StringUtil.success("All done.") if complete_success
159
- else
160
- puts StringUtil.failure("#{param}: File doesn’t exist on project.")
161
205
  end
206
+ puts StringUtil.success('All done.') if complete_success
207
+ else
208
+ puts StringUtil.failure("#{param}: File doesn’t exist on project.")
162
209
  end
163
210
  end
164
211
  end
165
212
  complete_success
166
213
  end
167
-
168
- def mv
214
+
215
+ def mv # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
169
216
  complete_success = true
170
- STDOUT.sync = true
217
+ $stdout.sync = true
171
218
  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 ..."
219
+ puts StringUtil.failure('Error: You must provide the source path and destination path of the master file to move.')
220
+ puts 'Usage: wti mv path/to/master_file_old_path path/to/master_file_new_path ...'
174
221
  exit
175
222
  end
176
223
  source = parameters[0]
177
224
  destination = parameters[1]
178
225
  WebTranslateIt::Connection.new(configuration.api_key) do |http|
179
226
  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|
227
+ configuration.files.find_all { |file| file.file_path == source }.each do |master_file|
181
228
  master_file.upload(http, false, false, nil, false, false, true, true, destination)
182
229
  # move master file
183
- if File.exists?(source)
184
- success = File.rename(source, destination) if File.exists?(source)
230
+ if File.exist?(source)
231
+ success = File.rename(source, destination) if File.exist?(source)
185
232
  puts StringUtil.success("Moved master file #{master_file.file_path}.") if success
186
233
  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)
234
+ complete_success = false unless success
235
+ configuration.files.find_all { |file| file.master_id == master_file.id }.each do |target_file|
236
+ if File.exist?(target_file.file_path)
190
237
  success = File.delete(target_file.file_path)
191
- complete_success = false if !success
238
+ complete_success = false unless success
192
239
  end
193
240
  end
194
241
  configuration.reload
195
- configuration.files.find_all{ |file| file.master_id == master_file.id }.each do |target_file|
242
+ configuration.files.find_all { |file| file.master_id == master_file.id }.each do |target_file|
196
243
  success = target_file.fetch(http)
197
- complete_success = false if !success
244
+ complete_success = false unless success
198
245
  end
199
- puts StringUtil.success("All done.") if complete_success
246
+ puts StringUtil.success('All done.') if complete_success
200
247
  end
201
248
  end
202
249
  end
203
250
  complete_success
204
251
  end
205
-
206
- def addlocale
207
- STDOUT.sync = true
252
+
253
+ def addlocale # rubocop:todo Metrics/MethodLength
254
+ $stdout.sync = true
208
255
  if parameters == []
209
- puts StringUtil.failure("Locale code missing.")
210
- puts "Usage: wti addlocale fr es ..."
256
+ puts StringUtil.failure('Locale code missing.')
257
+ puts 'Usage: wti addlocale fr es ...'
211
258
  exit 1
212
259
  end
213
260
  parameters.each do |param|
@@ -215,94 +262,93 @@ module WebTranslateIt
215
262
  WebTranslateIt::Connection.new(configuration.api_key) do
216
263
  WebTranslateIt::Project.create_locale(param)
217
264
  end
218
- puts "Done."
265
+ puts 'Done.'
219
266
  end
220
267
  end
221
-
222
- def rmlocale
223
- STDOUT.sync = true
268
+
269
+ def rmlocale # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
270
+ $stdout.sync = true
224
271
  if parameters == []
225
- puts StringUtil.failure("Error: You must provide the locale code to remove.")
226
- puts "Usage: wti rmlocale fr es ..."
272
+ puts StringUtil.failure('Error: You must provide the locale code to remove.')
273
+ puts 'Usage: wti rmlocale fr es ...'
227
274
  exit 1
228
275
  end
229
276
  parameters.each do |param|
230
- if Util.ask_yes_no("Are you certain you want to delete the locale #{param.upcase}?\nThis will also delete its files and translations.", false)
231
- print StringUtil.success("Deleting locale #{param.upcase}... ")
232
- WebTranslateIt::Connection.new(configuration.api_key) do |http|
233
- WebTranslateIt::Project.delete_locale(param)
234
- end
235
- puts "Done."
277
+ next unless Util.ask_yes_no("Are you certain you want to delete the locale #{param.upcase}?\nThis will also delete its files and translations.", false)
278
+
279
+ print StringUtil.success("Deleting locale #{param.upcase}... ")
280
+ WebTranslateIt::Connection.new(configuration.api_key) do
281
+ WebTranslateIt::Project.delete_locale(param)
236
282
  end
283
+ puts 'Done.'
237
284
  end
238
285
  end
239
-
240
- def init
241
- puts "# Initializing project"
286
+
287
+ def init # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
288
+ puts '# Initializing project'
242
289
  if parameters.any?
243
290
  api_key = parameters[0]
244
291
  path = '.wti'
245
292
  else
246
- api_key = Util.ask(" Project API Key:")
247
- path = Util.ask(" Path to configuration file:", '.wti')
293
+ api_key = Util.ask(' Project API Key:')
294
+ path = Util.ask(' Path to configuration file:', '.wti')
248
295
  end
249
- FileUtils.mkpath(path.split('/')[0..path.split('/').size-2].join('/')) unless path.split('/').size == 1
296
+ FileUtils.mkpath(path.split('/')[0..path.split('/').size - 2].join('/')) unless path.split('/').size == 1
250
297
  project = YAML.load WebTranslateIt::Project.fetch_info(api_key)
251
298
  project_info = project['project']
252
- if File.exists?(path) && !File.writable?(path)
299
+ if File.exist?(path) && !File.writable?(path)
253
300
  puts StringUtil.failure("Error: `#{path}` file is not writable.")
254
301
  exit 1
255
302
  end
256
- File.open(path, 'w'){ |file| file << generate_configuration(api_key, project_info) }
257
- puts ""
303
+ File.open(path, 'w') { |file| file << generate_configuration(api_key, project_info) }
304
+ puts ''
258
305
  puts " The project #{project_info['name']} was successfully initialized."
259
- puts ""
260
- if project_info["source_locale"]["code"].nil? || project_info["target_locales"].size <= 1 || project_info["project_files"].none?
261
- puts ""
262
- puts " There are a few more things to set up:"
263
- puts ""
306
+ puts ''
307
+ if project_info['source_locale']['code'].nil? || project_info['target_locales'].size <= 1 || project_info['project_files'].none?
308
+ puts ''
309
+ puts ' There are a few more things to set up:'
310
+ puts ''
264
311
  end
265
- if project_info["source_locale"]["code"].nil?
312
+ if project_info['source_locale']['code'].nil?
266
313
  puts " *) You don't have a source locale setup."
267
- puts " Add the source locale with: `wti addlocale <locale_code>`"
268
- puts ""
314
+ puts ' Add the source locale with: `wti addlocale <locale_code>`'
315
+ puts ''
269
316
  end
270
- if project_info["target_locales"].size <= 1
317
+ if project_info['target_locales'].size <= 1
271
318
  puts " *) You don't have a target locale setup."
272
- puts " Add the first target locale with: `wti addlocale <locale_code>`"
273
- puts ""
319
+ puts ' Add the first target locale with: `wti addlocale <locale_code>`'
320
+ puts ''
274
321
  end
275
- if project_info["project_files"].none?
322
+ if project_info['project_files'].none?
276
323
  puts " *) You don't have linguistic files setup."
277
- puts " Add a master file with: `wti add <path/to/file.xml>`"
278
- puts ""
324
+ puts ' Add a master file with: `wti add <path/to/file.xml>`'
325
+ puts ''
279
326
  end
280
- puts "You can now use `wti` to push and pull your language files."
281
- puts "Check `wti --help` for help."
282
- return true
327
+ puts 'You can now use `wti` to push and pull your language files.'
328
+ puts 'Check `wti --help` for help.'
329
+ true
283
330
  end
284
-
285
- def match
286
- configuration.files.find_all{ |mf| mf.locale == configuration.source_locale }.each do |master_file|
287
- if !File.exists?(master_file.file_path)
288
- puts StringUtil.failure(master_file.file_path) + " (#{master_file.locale})"
289
- else
331
+
332
+ def match # rubocop:todo Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
333
+ configuration.files.find_all { |mf| mf.locale == configuration.source_locale }.each do |master_file|
334
+ if File.exist?(master_file.file_path)
290
335
  puts StringUtil.important(master_file.file_path) + " (#{master_file.locale})"
336
+ else
337
+ puts StringUtil.failure(master_file.file_path) + " (#{master_file.locale})"
291
338
  end
292
- configuration.files.find_all{ |f| f.master_id == master_file.id }.each do |file|
293
- if !File.exists?(file.file_path)
294
- puts StringUtil.failure("- #{file.file_path}") + " (#{file.locale})"
295
- else
339
+ configuration.files.find_all { |f| f.master_id == master_file.id }.each do |file|
340
+ if File.exist?(file.file_path)
296
341
  puts "- #{file.file_path}" + " (#{file.locale})"
342
+ else
343
+ puts StringUtil.failure("- #{file.file_path}") + " (#{file.locale})"
297
344
  end
298
345
  end
299
346
  end
300
- return true
347
+ true
301
348
  end
302
-
303
- def status
349
+
350
+ def status # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
304
351
  stats = YAML.load(Project.fetch_stats(configuration.api_key))
305
- stale = false
306
352
  completely_translated = true
307
353
  completely_proofread = true
308
354
  stats.each do |locale, values|
@@ -312,32 +358,28 @@ module WebTranslateIt
312
358
  completely_proofread = false if percent_completed != 100
313
359
  puts "#{locale}: #{percent_translated}% translated, #{percent_completed}% completed."
314
360
  end
315
- exit 100 if !completely_translated
316
- exit 101 if !completely_proofread
317
- return true
361
+ exit 100 unless completely_translated
362
+ exit 101 unless completely_proofread
363
+ true
318
364
  end
319
-
320
- def fetch_locales_to_pull
365
+
366
+ def fetch_locales_to_pull # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
321
367
  if command_options.locale
322
368
  command_options.locale.split.each do |locale|
323
369
  puts "Locale #{locale} doesn't exist -- `wti addlocale #{locale}` to add it." unless configuration.target_locales.include?(locale)
324
370
  end
325
371
  locales = command_options.locale.split
372
+ elsif configuration.needed_locales.any?
373
+ locales = configuration.needed_locales
326
374
  else
327
- if configuration.needed_locales.any?
328
- locales = configuration.needed_locales
329
- else
330
- locales = configuration.target_locales
331
- if configuration.ignore_locales.any?
332
- configuration.ignore_locales.each{ |locale_to_delete| locales.delete(locale_to_delete) }
333
- end
334
- end
375
+ locales = configuration.target_locales
376
+ configuration.ignore_locales.each { |locale_to_delete| locales.delete(locale_to_delete) } if configuration.ignore_locales.any?
335
377
  end
336
378
  locales.push(configuration.source_locale) if command_options.all
337
- return locales.uniq
379
+ locales.uniq
338
380
  end
339
-
340
- def fetch_locales_to_push(configuration)
381
+
382
+ def fetch_locales_to_push(configuration) # rubocop:todo Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
341
383
  if command_options.locale
342
384
  command_options.locale.split.each do |locale|
343
385
  puts "Locale #{locale} doesn't exist -- `wti addlocale #{locale}` to add it." unless configuration.target_locales.include?(locale)
@@ -347,65 +389,57 @@ module WebTranslateIt
347
389
  locales = [configuration.source_locale]
348
390
  end
349
391
  if command_options.all
350
- puts "`wti push --all` was deprecated in wti 2.3. Use `wti push --target` instead."
392
+ puts '`wti push --all` was deprecated in wti 2.3. Use `wti push --target` instead.'
351
393
  return []
352
394
  elsif command_options.target
353
- locales = configuration.target_locales.reject{ |locale| locale == configuration.source_locale }
395
+ locales = configuration.target_locales.reject { |locale| locale == configuration.source_locale }
354
396
  end
355
- return locales.uniq
397
+ locales.uniq
356
398
  end
357
-
399
+
358
400
  def configuration_file_path
359
- if self.command_options.config
360
- return self.command_options.config
361
- else
362
- if File.exists?('config/translation.yml')
363
- puts "Warning: `config/translation.yml` is deprecated in favour of a `.wti` file."
364
- if Util.ask_yes_no("Would you like to migrate your configuration now?", true)
365
- require 'fileutils'
366
- if FileUtils.mv('config/translation.yml', '.wti')
367
- return '.wti'
368
- else
369
- puts "Couldn’t move `config/translation.yml`."
370
- return false
371
- end
372
- else
373
- return 'config/translation.yml'
374
- end
375
- else
376
- return '.wti'
377
- end
378
- end
401
+ return command_options.config if command_options.config
402
+
403
+ return '.wti' unless File.exist?('config/translation.yml')
404
+
405
+ puts 'Warning: `config/translation.yml` is deprecated in favour of a `.wti` file.'
406
+ return 'config/translation.yml' unless Util.ask_yes_no('Would you like to migrate your configuration now?', true)
407
+
408
+ require 'fileutils'
409
+ return '.wti' if FileUtils.mv('config/translation.yml', '.wti')
410
+
411
+ puts 'Couldn’t move `config/translation.yml`.'
412
+ false
379
413
  end
380
-
414
+
381
415
  def generate_configuration(api_key, project_info)
382
- file = <<-FILE
383
- api_key: #{api_key}
416
+ <<~FILE
417
+ api_key: #{api_key}
384
418
 
385
- # Optional: locales not to sync with WebTranslateIt.
386
- # Takes a string, a symbol, or an array of string or symbol.
387
- # More information here: https://github.com/AtelierConvivialite/webtranslateit/wiki
388
- # ignore_locales: '#{project_info["source_locale"]["code"]}'
419
+ # Optional: locales not to sync with WebTranslateIt.
420
+ # Takes a string, a symbol, or an array of string or symbol.
421
+ # More information here: https://github.com/AtelierConvivialite/webtranslateit/wiki
422
+ # ignore_locales: '#{project_info['source_locale']['code']}'
389
423
 
390
- # Or if you prefer a list of locales to sync with WebTranslateIt:
391
- # needed_locales: #{project_info["target_locales"].map {|locale| locale["code"]}.to_s}
424
+ # Or if you prefer a list of locales to sync with WebTranslateIt:
425
+ # needed_locales: #{project_info['target_locales'].map { |locale| locale['code'] }}
392
426
 
393
- # Optional
394
- # before_pull: "echo 'some unix command'" # Command executed before pulling files
395
- # after_pull: "touch tmp/restart.txt" # Command executed after pulling files
396
- #
397
- # before_push: "echo 'some unix command'" # Command executed before pushing files
398
- # after_push: "touch tmp/restart.txt" # Command executed after pushing files
427
+ # Optional: files not to sync with WebTranslateIt.
428
+ # Takes an array of globs.
429
+ # ignore_files: ['somefile*.csv']
399
430
 
400
- # Silence SSL errors
401
- # silence_errors: true
431
+ # Optional
432
+ # before_pull: "echo 'some unix command'" # Command executed before pulling files
433
+ # after_pull: "touch tmp/restart.txt" # Command executed after pulling files
434
+ #
435
+ # before_push: "echo 'some unix command'" # Command executed before pushing files
436
+ # after_push: "touch tmp/restart.txt" # Command executed after pushing files
402
437
 
403
- FILE
404
- return file
438
+ FILE
405
439
  end
406
440
 
407
- def throb
408
- throb = %w(⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏)
441
+ def throb # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
442
+ throb = %w[⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏]
409
443
  throb.reverse! if rand > 0.5
410
444
  i = rand throb.length
411
445
 
@@ -418,11 +452,11 @@ FILE
418
452
  dot.call
419
453
  end
420
454
  yield
421
- ensure
422
- if thread
423
- thread.kill
424
- puts "\r\e[0G#\e[?25h"
425
- end
455
+ ensure
456
+ if thread
457
+ thread.kill
458
+ puts "\r\e[0G#\e[?25h"
426
459
  end
427
460
  end
461
+ end
428
462
  end