web_translate_it 2.5.2 → 2.6.0

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.
@@ -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 }
53
+ files = files.uniq.sort { |a, b| a.file_path <=> b.file_path }
51
54
  if files.size == 0
52
- puts "No files to pull."
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 $?.success?
86
+ puts output
87
+ else
88
+ abort 'Error: exit code for before_pull command is not zero'
89
+ end
90
+ end
91
+
92
+ def after_pull_hook
93
+ return unless configuration.after_pull
94
+
95
+ output = `#{configuration.after_pull}`
96
+ if $?.success?
97
+ puts output
98
+ else
99
+ abort 'Error: exit code for after_pull command is not zero'
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
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
89
114
  if files.size == 0
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 $?.success?
133
+ puts output
134
+ else
135
+ abort 'Error: exit code for before_push command is not zero'
136
+ end
137
+ end
138
+
139
+ def after_push_hook
140
+ return unless configuration.after_push
141
+
142
+ output = `#{configuration.after_push}`
143
+ if $?.success?
144
+ puts output
145
+ else
146
+ abort 'Error: exit code for after_push command is not zero'
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,60 @@ 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
+ # Silence SSL errors
439
+ # silence_errors: true
440
+
441
+ FILE
405
442
  end
406
443
 
407
- def throb
408
- throb = %w(⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏)
444
+ def throb # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
445
+ throb = %w[⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏]
409
446
  throb.reverse! if rand > 0.5
410
447
  i = rand throb.length
411
448
 
@@ -418,11 +455,11 @@ FILE
418
455
  dot.call
419
456
  end
420
457
  yield
421
- ensure
422
- if thread
423
- thread.kill
424
- puts "\r\e[0G#\e[?25h"
425
- end
458
+ ensure
459
+ if thread
460
+ thread.kill
461
+ puts "\r\e[0G#\e[?25h"
426
462
  end
427
463
  end
464
+ end
428
465
  end