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