class Haml::Exec::SassConvert
def process_directory
def process_directory input = @options[:input] = @args.shift 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] raise "Error: '#{@options[:input]}' is not a directory" unless File.directory?(@options[:input]) if @options[:output] && File.exists?(@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] ext = :sass if ext == :sass2 Dir.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.exists?(output) puts_action :overwrite, :yellow, output else puts_action :create, :green, output end input = open_file(f) output = @options[:in_place] ? input : open_file(output, "w") process_file(input, output) end end