class Sass::Plugin::Compiler

def update_stylesheet(filename, css, sourcemap)

def update_stylesheet(filename, css, sourcemap)
  dir = File.dirname(css)
  unless File.exist?(dir)
    run_creating_directory dir
    FileUtils.mkdir_p dir
  end
  begin
    File.read(filename) unless File.readable?(filename) # triggers an error for handling
    engine_opts = engine_options(:css_filename => css,
                                 :filename => filename,
                                 :sourcemap_filename => sourcemap)
    mapping = nil
    run_compilation_starting(filename, css, sourcemap)
    engine = Sass::Engine.for_file(filename, engine_opts)
    if sourcemap
      rendered, mapping = engine.render_with_sourcemap(File.basename(sourcemap))
    else
      rendered = engine.render
    end
  rescue StandardError => e
    compilation_error_occurred = true
    run_compilation_error e, filename, css, sourcemap
    raise e unless options[:full_exception]
    rendered = Sass::SyntaxError.exception_to_css(e, options[:line] || 1)
  end
  write_file(css, rendered)
  if mapping
    write_file(
      sourcemap,
      mapping.to_json(
        :css_path => css, :sourcemap_path => sourcemap, :type => options[:sourcemap]))
  end
  run_updated_stylesheet(filename, css, sourcemap) unless compilation_error_occurred
end