2019-03-25 01:45:01 +08:00
|
|
|
#!/usr/bin/env ruby
|
|
|
|
|
|
|
|
require "zip"
|
2019-03-25 16:45:51 +08:00
|
|
|
require 'net/http'
|
2019-03-25 01:45:01 +08:00
|
|
|
require "open3"
|
|
|
|
|
|
|
|
Zip.setup do |c|
|
|
|
|
c.on_exists_proc = true
|
|
|
|
c.continue_on_exists_proc = true
|
|
|
|
c.unicode_names = true
|
|
|
|
c.default_compression = Zlib::BEST_COMPRESSION
|
|
|
|
c.force_entry_names_encoding = 'UTF-8'
|
|
|
|
end
|
|
|
|
|
|
|
|
build_version = ENV["TRAVIS_BUILD_NUMBER"]
|
|
|
|
log_url = ENV["TRAVIS_JOB_WEB_URL"]
|
2020-03-24 04:08:20 +08:00
|
|
|
target_version = "3.5.0"
|
2019-03-25 01:45:01 +08:00
|
|
|
#language = "zh"
|
|
|
|
pwd = Dir.pwd
|
|
|
|
Dir.mkdir("dist") unless Dir.exist?("dist")
|
|
|
|
package_name = "Chinese_Translation_zh-CN.ts3_translation"
|
|
|
|
|
|
|
|
def make_release()
|
|
|
|
case RUBY_PLATFORM
|
|
|
|
when /ix/i, /ux/i, /gnu/i, /bsd/i
|
|
|
|
# "unix"
|
|
|
|
lrelease = `which lrelease`.split[0]
|
|
|
|
when /win/i, /ming/i
|
|
|
|
# "windows"
|
2019-06-05 21:06:14 +08:00
|
|
|
lrelease = `where lrelease`.split[0]
|
2019-03-25 01:45:01 +08:00
|
|
|
else
|
|
|
|
# "other"
|
2020-03-24 04:08:20 +08:00
|
|
|
exit(1)
|
2019-03-25 01:45:01 +08:00
|
|
|
end
|
|
|
|
translated_count = 0
|
|
|
|
total_count = 0
|
|
|
|
translated = /(?:Generated\s)(\d+)(?: translation)/.freeze
|
|
|
|
untranslated = /(?:Ignored\s)(\d+)(?: untranslated)/.freeze
|
|
|
|
Dir.glob("src/*_zh.ts") do |file|
|
|
|
|
puts file
|
|
|
|
output = "dist/#{file[4...-3]}.qm"
|
|
|
|
stdin, stdout, stderr = Open3.popen3(lrelease, file, "-qm", output)
|
|
|
|
index = 0
|
|
|
|
stdout.each_line do |line|
|
|
|
|
unless /qt_zh/.match?(file)
|
|
|
|
if index == 1
|
|
|
|
translated_count += translated.match(line)[1].to_i
|
|
|
|
total_count += translated.match(line)[1].to_i
|
|
|
|
end
|
|
|
|
if index == 2
|
|
|
|
total_count += untranslated.match(line)[1].to_i
|
|
|
|
end
|
|
|
|
end
|
|
|
|
puts line
|
|
|
|
index += 1
|
|
|
|
end
|
|
|
|
stdout.close
|
|
|
|
unless stderr.nil?
|
|
|
|
stderr.each_line { |line| puts line }
|
|
|
|
stderr.close
|
|
|
|
end
|
|
|
|
puts "" # new line
|
|
|
|
end
|
|
|
|
send_progress(translated_count, total_count)
|
|
|
|
end
|
|
|
|
|
|
|
|
def send_progress(done, total)
|
|
|
|
percentage = Rational(done*100,total).round(2).to_f
|
2019-03-25 16:45:51 +08:00
|
|
|
info = "当前进度:\n#{done}/#{total}\n#{percentage}%\n".freeze
|
|
|
|
puts info
|
2020-03-24 04:08:20 +08:00
|
|
|
telegram_push(info) unless ARGV[0] == "debug"
|
2019-03-25 16:45:51 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
def telegram_push(string)
|
|
|
|
tg_api = ENV['TG_API']
|
|
|
|
group_id = ENV['TG_GROUP_ID']
|
|
|
|
uri = URI("https://api.telegram.org/bot#{tg_api}/sendMessage")
|
|
|
|
querystring = {chat_id: group_id ,text: string}
|
|
|
|
uri.query = URI.encode_www_form(querystring)
|
|
|
|
res = Net::HTTP.get_response(uri)
|
2019-06-05 21:06:14 +08:00
|
|
|
puts res.code == '200' ? "\n推送成功" : "\n推送失败"
|
2019-03-25 01:45:01 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
def make_package(zipfile_name, build_version=nil, log_url=nil)
|
|
|
|
File.open('dist/package.ini', 'w') do |file|
|
|
|
|
package_info = [
|
2020-03-24 04:08:20 +08:00
|
|
|
"Name = TeamSpeak 3 简体中文汉化包 目标软件版本: #{target_version}",
|
2019-03-25 01:45:01 +08:00
|
|
|
"Type = Translation",
|
|
|
|
"Author = 寂听 & EdisonJwa",
|
|
|
|
"Version = travis-dev-build##{build_version}",
|
|
|
|
"Platforms = ",
|
|
|
|
"Description = 源代码: https://github.com/jitingcn/TS3-Translation_zh-CN" +
|
|
|
|
" 构建日志: #{log_url unless log_url.nil?}"]
|
|
|
|
file.write(package_info.join("\n"))
|
|
|
|
end
|
|
|
|
Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
|
|
|
|
qm_files = Dir.glob("dist/*.qm")
|
|
|
|
qm_files.each do |file|
|
|
|
|
file = file.split("/")
|
|
|
|
zipfile.add("translations/"+file[1], File.join(file))
|
|
|
|
end
|
|
|
|
zipfile.add("package.ini", File.join(["dist","package.ini"]))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-03-24 04:08:20 +08:00
|
|
|
def debug()
|
|
|
|
case RUBY_PLATFORM
|
|
|
|
when /ix/i, /ux/i, /gnu/i, /bsd/i
|
|
|
|
FileUtils.cp Dir.glob("dist/*.qm"), "#{Dir.home}/.ts3client/translations", :verbose => true
|
|
|
|
else
|
|
|
|
exit
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-03-25 01:45:01 +08:00
|
|
|
make_release()
|
2020-03-24 04:08:20 +08:00
|
|
|
make_package(package_name) unless ARGV[0] == "debug"
|
|
|
|
debug() if ARGV[0] == "debug"
|