bin/aozora2html
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'aozora2html'
require 'optparse'
require 'tempfile'
require 'open-uri'
opt = OptionParser.new("Usage: aozora2html [options] <text file> [<html file>]\n")
opt.on('--gaiji-dir DIR', 'setting gaiji directory')
opt.on('--css-files FILES', 'setting css directory')
opt.on('--use-jisx0213', 'use JIS X 0213 character')
opt.on('--use-unicode', 'use Unicode character')
opt.on('--error-utf8', 'show error messages in UTF-8, not Shift_JIS')
opt.version = Aozora2Html::VERSION
options = opt.getopts
gaiji_dir = options['gaiji-dir'] || nil
css_files = options['css-files']&.split(',')
use_jisx0213 = !!options['use-jisx0213']
use_unicode = !!options['use-unicode']
if options['error-utf8']
Aozora2Html::I18n.use_utf8 = true
end
if ARGV.size < 1 || ARGV.size > 2
$stderr.print opt.banner
exit 1
end
src_file, dest_file = ARGV[0], ARGV[1]
Dir.mktmpdir do |dir|
if dest_file.nil?
dest_file = File.join(dir, 'output.html')
end
if /\Ahttps?:/.match?(src_file)
down_file = File.join(dir, File.basename(src_file))
begin
File.write(down_file, URI.parse(src_file).read)
src_file = down_file
rescue StandardError
$stderr.print "file not found: #{src_file}\n"
$stderr.print "Download Error: #{$!}\n"
exit 1
end
else
unless File.exist?(src_file)
$stderr.print "file not found: #{src_file}\n"
exit 1
end
end
if File.extname(src_file) == '.zip'
require 'aozora2html/zip'
tmpfile = File.join(dir, 'aozora.txt')
Aozora2Html::Zip.unzip(src_file, tmpfile)
Aozora2Html.new(
tmpfile,
dest_file,
gaiji_dir: gaiji_dir,
css_files: css_files,
use_jisx0213: use_jisx0213,
use_unicode: use_unicode
).process
else
Aozora2Html.new(
src_file,
dest_file,
gaiji_dir: gaiji_dir,
css_files: css_files,
use_jisx0213: use_jisx0213,
use_unicode: use_unicode
).process
end
unless ARGV[1]
output = File.read(dest_file)
print output
end
rescue Aozora2Html::FatalError
exit(2)
end