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