lib/babelyoda.rb in babelyoda-2.1.1 vs lib/babelyoda.rb in babelyoda-2.1.2

- old
+ new

@@ -35,11 +35,12 @@ task :extract_strings do spec.scm.transaction("[Babelyoda] Extract strings from sources") do $logger.info "Extracting strings from sources..." dev_lang = spec.development_language Babelyoda::Genstrings.run(spec.source_files, dev_lang) do |keyset| - old_strings_filename = strings_filename(keyset.name, dev_lang) + keyset_name = File.join(spec.resources_folder, keyset.name) + old_strings_filename = strings_filename(keyset_name, dev_lang) old_strings = Babelyoda::Strings.new(old_strings_filename, dev_lang).read old_strings.merge!(keyset) old_strings.save! $logger.debug "#{old_strings_filename}: #{old_strings.keys.size} keys" end @@ -149,20 +150,40 @@ spec.engine.drop_keyset!(remote_keyset.name) end end end - desc "Pushes resources to the translators" + desc "Pushes resources to the translators. Use LANGS to specify languages to push. Defaults to '#{spec.development_language}'." task :push => [:drop_orphan_keysets, :drop_orphan_keys] do - $logger.info "Pushing local keys to the remote..." + langs = [ spec.development_language ] + if ENV['LANGS'] + if ENV['LANGS'] == '*' + langs = spec.all_languages + else + langs = ENV['LANGS'].split(',').map { |s| s.to_sym } + end + end + $logger.info "Pushing local keys for '#{langs.join(', ')}' to the remote..." spec.strings_files.each do |filename| - strings = Babelyoda::Strings.new(filename, spec.development_language).read! - $logger.debug "Processing keyset: #{strings.name}" - remote_keyset = spec.engine.load_keyset(strings.name, nil, :unapproved) - result = remote_keyset.merge!(strings, preserve: true) + local_keyset = nil + + langs.each do |lang| + unless local_keyset + local_keyset = Babelyoda::Strings.new(filename, lang).read! + $logger.debug "Processing keyset: #{local_keyset.name}" + else + strings = Babelyoda::Strings.new(strings_filename(local_keyset.name, lang), lang).read! + local_keyset.merge!(strings, preserve: true) + end + end + + remote_keyset = spec.engine.load_keyset(local_keyset.name, nil, :unapproved) + result = remote_keyset.merge!(local_keyset, preserve: true) remote_keyset.ensure_languages!(spec.all_languages) if result[:new] > 0 || result[:updated] > 0 - spec.engine.replace(remote_keyset) + langs.each do |lang| + spec.engine.replace(remote_keyset, lang) + end $logger.debug "New keys: #{result[:new]} Updated keys: #{result[:updated]}" end end end