mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 06:49:14 +08:00
add a script to update plugin translations from Transifex
This commit is contained in:
parent
0567d523ee
commit
3cba858930
86
script/plugin-translations.rb
Normal file
86
script/plugin-translations.rb
Normal file
|
@ -0,0 +1,86 @@
|
|||
if ARGV.empty?
|
||||
puts 'Usage: ', ''
|
||||
puts ' ruby plugin-translations.rb <plugins_base_dir>'
|
||||
puts ' ruby plugin-translations.rb <plugins_base_dir> push (to git push)'
|
||||
exit 1
|
||||
end
|
||||
|
||||
require 'bundler'
|
||||
|
||||
class PluginTxUpdater
|
||||
|
||||
attr_reader :failed
|
||||
|
||||
PLUGINS = [
|
||||
'discourse-adplugin',
|
||||
'discourse-akismet',
|
||||
'discourse-assign',
|
||||
'discourse-cakeday',
|
||||
'discourse-canned-replies',
|
||||
'discourse-chat-integration',
|
||||
'discourse-data-explorer',
|
||||
'discourse-math',
|
||||
'discourse-oauth2-basic',
|
||||
'discourse-patreon',
|
||||
# 'discourse-saved-searches', # TODO
|
||||
'discourse-solved',
|
||||
'discourse-staff-notes',
|
||||
'discourse-voting'
|
||||
]
|
||||
|
||||
def initialize(base_dir, push)
|
||||
@push = !!push
|
||||
@base_dir = base_dir
|
||||
@failed = []
|
||||
end
|
||||
|
||||
def perform
|
||||
PLUGINS.each do |plugin_name|
|
||||
plugin_dir = File.join(@base_dir, plugin_name)
|
||||
Bundler.with_clean_env do
|
||||
Dir.chdir(plugin_dir) do
|
||||
puts '', plugin_dir, '-' * 80, ''
|
||||
|
||||
begin
|
||||
system_cmd('git pull')
|
||||
system_cmd('bundle update translations-manager')
|
||||
system_cmd('bundle exec bin/pull_translations.rb')
|
||||
system_cmd('git add config/locales/*')
|
||||
system_cmd('git add Gemfile.lock') rescue true # might be gitignored
|
||||
system_cmd('git commit -m "Update translations"')
|
||||
system_cmd('git push origin master') if @push
|
||||
rescue => e
|
||||
puts "Failed for #{plugin_name}. Skipping...", ''
|
||||
@failed << plugin_name
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def system_cmd(s)
|
||||
rc = system(s)
|
||||
raise RuntimeError.new($?) if rc != true
|
||||
end
|
||||
end
|
||||
|
||||
base_dir = File.expand_path(ARGV[0])
|
||||
|
||||
unless File.exists?(base_dir)
|
||||
puts '', "Dir '#{base_dir}' doesn't exist."
|
||||
exit 1
|
||||
end
|
||||
|
||||
updates = PluginTxUpdater.new(base_dir, ARGV[1]&.downcase == 'push')
|
||||
updates.perform
|
||||
|
||||
if updates.failed.empty?
|
||||
puts '', "All plugins updated successfully!", ''
|
||||
else
|
||||
if updates.failed.size < PluginTxUpdater::PLUGINS.size
|
||||
puts '', "These plugins updated successfully: ", ''
|
||||
puts PluginTxUpdater::PLUGINS - updates.failed
|
||||
end
|
||||
puts '', "Errors were encountered while updating these plugins:", ''
|
||||
puts updates.failed
|
||||
end
|
Loading…
Reference in New Issue
Block a user