class Pandocomatic::ConvertDirCommand
Commmand to convert a directory
@!attribute config
@return [Configuration] configuration to use when converting directory
@!attribute src_dir
@return [String] the source directory to convert from
@!attribute dst_dir
@return [String] the destination directory to convert to
Attributes
config[R]
dst_dir[R]
src_dir[R]
Public Class Methods
new(current_config, src_dir, dst_dir)
click to toggle source
Create a new ConvertDirCommand
@param current_config [Configuration] The configuration of pandocomatic
as it was before entering the source directory
@param src_dir
[String] the directory to convert @param dst_dir
[String] the directory to convert to
Calls superclass method
# File lib/pandocomatic/command/convert_dir_command.rb, line 53 def initialize(current_config, src_dir, dst_dir) super() @src_dir = src_dir @config = current_config begin @config = reconfigure current_config, @src_dir rescue ConfigurationError => e @errors.push e end @dst_dir = dst_dir if Dir.exist? @dst_dir @errors.push IOError.new(:directory_is_not_readable, nil, @dst_dir) unless File.readable? @dst_dir @errors.push IOError.new(:directory_is_not_writable, nil, @dst_dir) unless File.writable? @dst_dir @errors.push IOError.new(:directory_is_not_a_directory, nil, @dst_dir) unless File.directory? @dst_dir end Dir.foreach @src_dir do |filename| src = File.join @src_dir, filename next if config.skip? src @errors.push IOError.new(:file_or_directory_does_not_exist, nil, src) unless File.exist? src dst = File.join @dst_dir, filename if File.symlink?(src) && !config.follow_links? subcommand = CreateLinkCommand.new(src, dst) elsif File.directory? src subcommand = if config.recursive? ConvertDirCommand.new(config, src, dst) else SkipCommand.new(src, :skipping_directory) end elsif File.file? src if config.convert? src subcommand = ConvertFileMultipleCommand.new(config, src, dst) elsif !modified_only? || file_modified?(src, dst) subcommand = CopyFileCommand.new(src, dst) end else subcommand = SkipCommand.new(src, :unclear_what_to_do) end push subcommand unless subcommand.nil? || subcommand.skip? end # Empty commands do not count to the total amount of commands to execute uncount if skip? end
Public Instance Methods
directory?()
click to toggle source
Converts this command a directory?
@return [Boolean] true
# File lib/pandocomatic/command/convert_dir_command.rb, line 118 def directory? true end
run()
click to toggle source
Run this command
# File lib/pandocomatic/command/convert_dir_command.rb, line 130 def run if create_directory? Pandocomatic::LOG.info " Creating directory '#{@dst_dir}'" Dir.mkdir @dst_dir end rescue SystemError => e raise IOError.new(:error_creating_directory, e, @dst_dir) end
skip?()
click to toggle source
Should this command be skipped?
@return [Boolean] True if this command has no sub commands
# File lib/pandocomatic/command/convert_dir_command.rb, line 111 def skip? @subcommands.empty? end
to_s()
click to toggle source
Convert this command to a String representation for a Printer
@return [String]
# File lib/pandocomatic/command/convert_dir_command.rb, line 125 def to_s "convert #{@src_dir}; #{create_directory? ? 'create and ' : ''}enter #{@dst_dir}" end
Private Instance Methods
create_directory?()
click to toggle source
# File lib/pandocomatic/command/convert_dir_command.rb, line 141 def create_directory? !File.exist? @dst_dir or !File.directory? @dst_dir end
reconfigure(current_config, src_dir)
click to toggle source
If the source directory contains a configuration file, use it to reconfigure the converter. Otherwise, use the current configuration
# File lib/pandocomatic/command/convert_dir_command.rb, line 147 def reconfigure(current_config, src_dir) config_file = File.join src_dir, Configuration::CONFIG_FILE if File.exist? config_file current_config.reconfigure config_file else current_config end end