#!/usr/bin/env ruby require 'fileutils' pwd = Dir.pwd argv,texfiles_with_path,flags=[],[],[] lngs = %{(am|bg|bn|br|ca|cs|cy|da|de|el|en|eo|es|et|eu|fi|fr|ga|gl|he|hi|hr|hy|ia|is|it|ja|ko|la|lo|lt|lv|ml|mr|nl|no|nn|oc|pl|pt|pt_BR|ro|ru|sa|se|sk|sl|sq|sr|sv|ta|te|th|tk|tr|uk|ur|vi|zh)} Regexp.new(lngs, Regexp::IGNORECASE) argv=$* argv.sort.each{|y| (y =~/^--\S+$/i) ? (flags << y) : (texfiles_with_path << y) } if flags.length==0 \ || flags.inspect =~/"--help"/ cmd=(/([^\/]+)$/).match($0)[1] puts <<WOK #{cmd} --help #{cmd} --out=[output path] #{cmd} --paper-size=a5 --out=~/test WOK end paper_size = (flags.inspect.match(/"--paper-size=(a4|a5|b5|letter|legal)"/)) ? $1 : "a4" out_path = Dir.pwd if (flags.inspect.match(/"--out=\S+"/)) out_path = flags.inspect.match(/"--out=(\S+)"/)[1] unless (FileTest.directory?(out_path)) puts "Creating output directory: --out=#{out_path}" FileUtils::mkdir_p(out_path) unless (FileTest.directory?(out_path)) puts "FAILS unable to create directory: #{out_path}" exit end end end if texfiles_with_path.length == 0 texfiles_with_path=Dir.glob('*.tex') end if texfiles_with_path.length > 0 texfiles_with_path.each do |texfile_with_path| if texfile_with_path =~/.+\.tex/ #puts texfile_with_path if FileTest.file?(texfile_with_path) file_basename_with_path = texfile_with_path.sub(/\.tex$/,'') file_basename = file_basename_with_path.sub(/.*?([^\/]+)$/,'\1') _out_path = out_path if file_basename =~ /\.#{lngs}$/ lng = file_basename.match(/\.#{lngs}$/)[1] puts file_basename puts lng puts _out_path unless _out_path.match(/\/#{lng}\/pdf$/) _out_path = "#{out_path}/#{lng}/pdf" FileUtils::mkdir_p(_out_path) end end texpdf_cmd = %{xetex -interaction=batchmode -fmt=xelatex -papersize=#{paper_size} #{texfile_with_path}\n} puts texpdf_cmd 2.times { |i| system(texpdf_cmd) } if (FileTest.file?(%{#{pwd}/#{file_basename}.pdf})) && (FileTest.directory?(_out_path)) FileUtils::Verbose::mv(%{#{pwd}/#{file_basename}.pdf}, %{#{_out_path}/#{file_basename}.pdf}) puts (%{#{_out_path}/#{file_basename}.pdf}) else puts "issue with pdf file or output directory" puts "pdf file: #{pwd}/#{file_basename}.pdf}" puts "output dir: #{_out_path}/" end suffix = ['log', 'out', 'toc', 'aux'] suffix.each { |s| FileUtils::rm_f(%{#{pwd}/#{file_basename}.#{s}})} end end end end Dir.chdir(pwd) __END__