class Sass::Exec::SassConvert

def process_directory

def process_directory
  @options[:input] = @args.shift
  unless @options[:input]
    raise "Error: directory required when using --recursive."
  end
  output = @options[:output] = @args.shift
  raise "Error: --from required when using --recursive." unless @options[:from]
  raise "Error: --to required when using --recursive." unless @options[:to]
  unless File.directory?(@options[:input])
    raise "Error: '#{@options[:input]}' is not a directory"
  end
  if @options[:output] && File.exist?(@options[:output]) &&
    !File.directory?(@options[:output])
    raise "Error: '#{@options[:output]}' is not a directory"
  end
  @options[:output] ||= @options[:input]
  if @options[:to] == @options[:from] && !@options[:in_place]
    fmt = @options[:from]
    raise "Error: converting from #{fmt} to #{fmt} without --in-place"
  end
  ext = @options[:from]
  Sass::Util.glob("#{@options[:input]}/**/*.#{ext}") do |f|
    output =
      if @options[:in_place]
        f
      elsif @options[:output]
        output_name = f.gsub(/\.(c|sa|sc|le)ss$/, ".#{@options[:to]}")
        output_name[0...@options[:input].size] = @options[:output]
        output_name
      else
        f.gsub(/\.(c|sa|sc|le)ss$/, ".#{@options[:to]}")
      end
    unless File.directory?(File.dirname(output))
      puts_action :directory, :green, File.dirname(output)
      FileUtils.mkdir_p(File.dirname(output))
    end
    puts_action :convert, :green, f
    if File.exist?(output)
      puts_action :overwrite, :yellow, output
    else
      puts_action :create, :green, output
    end
    process_file(f, output)
  end
end