module SassAdapter

def self.generate_command_params
  flags = SASS_CONFIG.reject{|key,value| value.nil? || !value || value.empty?}

  unless flags.key?(:source_file) && flags.key?(:output_file)
    abort ":source_file or :output_file is missing"
  end

  output = flags[:source_file] + ' ' + flags[:output_file]
  flags.delete(:source_file)
  flags.delete(:output_file)

  output = flags.map{|k,v| "--#{k.to_s.tr '_', '-'}=#{v}"}.join(' ') + ' ' + output
end

end

desc “SCSS compiler based on: node-sass” namespace :sass do

desc "Compiles SCSS files"
task :compile => ['clean:build'] do
  output = SassAdapter.generate_command_params

  sh %{ #{NPM_BIN}/node-sass #{output} }
end

desc "Watch and compile changed files recursive"
task :watch => ['clean:build'] do
  output = SassAdapter.generate_command_params
  watch_flags = "--watch --recursive"

  sh %{ #{NPM_BIN}/node-sass #{watch_flags} #{output} }
end

desc "Tests the code: jest"
task :test do
  sh %{ #{NPM_BIN}/jest }
end

desc "Generates SassDoc documentation: sassdoc -> docs"
task :doc do
  sh %{ #{NPM_BIN}/sassdoc src/colors/ --dest=docs }
end

desc "Open freshly generated documentation: sassdoc -> docs/index"
task "doc:open" => ["sass:doc"] do
  sh %{ open docs/index.html }
end

end