bin/review-compile in review-2.3.0 vs bin/review-compile in review-2.4.0

- old
+ new

@@ -1,9 +1,7 @@ #!/usr/bin/env ruby # -# $Id: review-compile 4326 2010-01-12 14:10:17Z kmuto $ -# # Copyright (c) 2008-2017 Kenshi Muto, Masayoshi Takahashi, KADO Masanori, Minero Aoki # Copyright (c) 1999-2007 Minero Aoki # # This program is free software. # You can distribute or modify this program under the terms of @@ -19,11 +17,11 @@ require 'review' require 'fileutils' require 'optparse' require 'yaml' -DEFAULT_CONFIG_FILENAME = "config.yml" +DEFAULT_CONFIG_FILENAME = 'config.yml'.freeze def main Signal.trap(:INT) { exit 1 } if RUBY_PLATFORM !~ /mswin(?!ce)|mingw|cygwin|bccwin/ Signal.trap(:PIPE, 'IGNORE') @@ -32,108 +30,98 @@ rescue Errno::EPIPE exit 0 end def _main + @logger = ReVIEW.logger mode = :files basedir = nil - if /\Areview2/ =~ File.basename($0) - target = File.basename($0, '.rb').sub(/review2/, '') + if /\Areview2/ =~ File.basename($PROGRAM_NAME) + target = File.basename($PROGRAM_NAME, '.rb').sub('review2', '') else target = nil end check_only = false output_filename = nil config = ReVIEW::Configure.values opts = OptionParser.new opts.version = ReVIEW::VERSION - opts.banner = "Usage: #{File.basename($0)} [--target=FMT]" - opts.on('--yaml=YAML', 'Read configurations from YAML file.') {|yaml| config["yaml"] = yaml} + opts.banner = "Usage: #{File.basename($PROGRAM_NAME)} [--target=FMT]" + opts.on('--yaml=YAML', 'Read configurations from YAML file.') { |yaml| config['yaml'] = yaml } opts.on('-c', '--check', 'Check manuscript') { check_only = true } - opts.on('--level=LVL', 'Section level to append number.') {|lvl| config["secnolevel"] = lvl.to_i } - opts.on('--toclevel=LVL', 'Section level to append number.') {|lvl| config["toclevel"] = lvl.to_i } - opts.on('--structuredxml', 'Produce XML with structured sections. (idgxml)') { config["structuredxml"] = true } - opts.on('--table=WIDTH', 'Default table width. (idgxml)') {|tbl| config["tableopt"] = tbl } - opts.on('--listinfo', 'Append listinfo tag to lists to indicate begin/end. (idgxml)') { config["listinfo"] = true } - opts.on('--chapref="before,middle,after"', 'Chapref decoration. (idgxml)') {|cdec| config["chapref"] = cdec } - opts.on('--chapterlink', 'make chapref hyperlink') { config["chapterlink"] = true } - opts.on('--stylesheet=file', 'Stylesheet file for HTML (comma separated)') {|files| config["stylesheet"] = files.split(/\s*,\s*/) } - opts.on('--mathml', 'Use MathML for TeX equation in HTML') do - config["mathml"] = true - end + opts.on('--level=LVL', 'Section level to append number.') { |lvl| config['secnolevel'] = lvl.to_i } + opts.on('--toclevel=LVL', 'Section level to append number.') { |lvl| config['toclevel'] = lvl.to_i } + opts.on('--structuredxml', 'Produce XML with structured sections. (idgxml)') { config['structuredxml'] = true } + opts.on('--table=WIDTH', 'Default table width. (idgxml)') { |tbl| config['tableopt'] = tbl } + opts.on('--listinfo', 'Append listinfo tag to lists to indicate begin/end. (idgxml)') { config['listinfo'] = true } + opts.on('--chapref="before,middle,after"', 'Chapref decoration. (idgxml)') { |cdec| config['chapref'] = cdec } + opts.on('--chapterlink', 'make chapref hyperlink') { config['chapterlink'] = true } + opts.on('--stylesheet=file', 'Stylesheet file for HTML (comma separated)') { |files| config['stylesheet'] = files.split(/\s*,\s*/) } + opts.on('--mathml', 'Use MathML for TeX equation in HTML') { config['mathml'] = true } opts.on('--htmlversion=VERSION', 'HTML version.') do |v| v = v.to_i - config["htmlversion"] = v if v == 4 || v == 5 + config['htmlversion'] = v if [4, 5].include?(v) end opts.on('--epubversion=VERSION', 'EPUB version.') do |v| v = v.to_i - config["epubversion"] = v if v == 2 || v == 3 + config['epubversion'] = v if [2, 3].include?(v) end - opts.on('--target=FMT', 'Target format.') {|fmt| target = fmt } unless target + opts.on('--target=FMT', 'Target format.') { |fmt| target = fmt } unless target opts.on('--footnotetext', - 'Use footnotetext and footnotemark instead of footnote (latex)') { - config["footnotetext"] = true - } - opts.on('--draft', 'use draft mode(inline comment)') { config["draft"] = true } + 'Use footnotetext and footnotemark instead of footnote (latex)') { config['footnotetext'] = true } + opts.on('--draft', 'use draft mode(inline comment)') { config['draft'] = true } opts.on('--directory=DIR', 'Compile all chapters in DIR.') do |path| mode = :dir basedir = path end - opts.on('--output-file=FILENAME', 'Write all results into file instead of stdout.') do |filename| - output_filename = filename - end - opts.on('--tabwidth=WIDTH', 'tab width') {|width| config["tabwidth"] = width.to_i } - opts.on('--catalogfile=FILENAME', 'Set catalog file') do |catalogfile| - config["catalogfile"] = catalogfile - end + opts.on('--output-file=FILENAME', 'Write all results into file instead of stdout.') { |filename| output_filename = filename } + opts.on('--tabwidth=WIDTH', 'tab width') { |width| config['tabwidth'] = width.to_i } + opts.on('--catalogfile=FILENAME', 'Set catalog file') { |catalogfile| config['catalogfile'] = catalogfile } opts.on('--help', 'Prints this message and quit.') do puts opts.help exit 0 end begin opts.parse! + unless target if check_only target = 'html' else - raise OptionParser::ParseError, "no target given" + raise OptionParser::ParseError, 'no target given' end end rescue OptionParser::ParseError => err - error err.message + @logger.error(err.message) $stderr.puts opts.help exit 1 end begin loader = ReVIEW::YAMLLoader.new - if config["yaml"] - config.deep_merge!(loader.load_file(config["yaml"])) - else - if File.exist?(DEFAULT_CONFIG_FILENAME) - config.deep_merge!(loader.load_file(DEFAULT_CONFIG_FILENAME)) - end + if config['yaml'] + config.deep_merge!(loader.load_file(config['yaml'])) + elsif File.exist?(DEFAULT_CONFIG_FILENAME) + config.deep_merge!(loader.load_file(DEFAULT_CONFIG_FILENAME)) end - config["builder"] = target - ReVIEW::I18n.setup(config["language"]) + config['builder'] = target + ReVIEW::I18n.setup(config['language']) begin config.check_version(ReVIEW::VERSION) rescue ReVIEW::ConfigError => e - warn e.message + @logger.warn e.message end - if ARGV.blank? - mode = :dir - end + mode = :dir if ARGV.blank? case mode when :files if ARGV.empty? - error 'no input' + @logger.error('no input') exit 1 end basedir = File.dirname(ARGV[0]) book = ReVIEW::Book::Base.load(basedir) @@ -165,26 +153,20 @@ else raise "must not happen: #{mode}" end rescue ReVIEW::ApplicationError => err raise if $DEBUG - error err.message + @logger.error(err.message) exit 1 end end -def error(msg) - $stderr.puts "#{File.basename($0, '.*')}: error: #{msg}" -end - def load_strategy_class(target, strict) require "review/#{target}builder" ReVIEW.const_get("#{target.upcase}Builder").new(strict) end def write(path, str) - File.open(path, 'w') {|f| - f.puts str - } + File.open(path, 'w') { |f| f.puts str } end main