require 'fileutils' require 'lib/handle_js_files' JQICAL_SRC = File.join(GEM_ROOT, 'src', 'jqical') JQICAL_SRC_IMAGES = File.join(JQICAL_SRC, 'images') JQICAL_DEST_TEMPLATES = File.join(GEM_ROOT, 'templates', 'jqical') JQICAL_DEST_STYLESHEETS = File.join(JQICAL_DEST_TEMPLATES, 'jquery.ui') JQICAL_DEST_IMAGES = File.join(JQICAL_DEST_STYLESHEETS, 'jqical') JQICAL_DEST_CONFIG = File.join(JQICAL_DEST_TEMPLATES, 'config', 'initializers') JQICAL_DEST_VIEWS = File.join(JQICAL_DEST_TEMPLATES, 'app', 'views', 'ui') JQICAL_MESSAGE1 = "# Generated by compass-jquery-plugin/gem-tasks/jqical.rake\n# Install with: compass install jquery/jqical\n\n" JQICAL_MESSAGE2 = "// Generated by compass-jquery-plugin/gem-tasks/jqical.rake\n\n" all_scripts = [ 'js/anytime.js', 'js/anytimetz.js', 'js/fullcalendar.js' ].collect {|filename| File.read(File.join(JQICAL_SRC, filename))}.join "\n\n" all_stylesheets = [ 'anytime.css', 'fullcalendar.css' ].collect {|filename| File.read(File.join(JQICAL_SRC, 'css', filename))}.join "\n\n" namespace :build do desc 'Build the stylesheets and templates for jqical.' task :jqical do FileUtils.remove_dir JQICAL_DEST_TEMPLATES if File.exists? JQICAL_DEST_TEMPLATES FileUtils.mkdir_p(JQICAL_DEST_CONFIG) FileUtils.mkdir_p(JQICAL_DEST_VIEWS) open File.join(JQICAL_DEST_TEMPLATES, 'manifest.rb'), 'w' do |manifest| manifest.print JQICAL_MESSAGE1 Dir.foreach File.join(JQICAL_SRC, 'app', 'views', 'ui') do |file| next unless /\.haml$/ =~ file html = File.read File.join(JQICAL_SRC, 'app', 'views', 'ui', file) open File.join(JQICAL_DEST_VIEWS, file), 'w' do |f| f.print(html) end manifest.print "file 'app/views/ui/#{file}'\n" end open File.join(JQICAL_DEST_CONFIG, 'jqical.rb'), 'w' do |f| f.print(File.read(File.join(JQICAL_SRC, 'config', 'initializers', 'jqical.rb'))) end manifest.print "file 'config/initializers/jqical.rb'\n" open File.join(JQICAL_DEST_TEMPLATES, 'jquery.jqical.js'), 'w' do |f| f.print concat_files(all_scripts) end manifest.print "javascript 'jquery.jqical.js'\n" open File.join(JQICAL_DEST_TEMPLATES, 'jquery.jqical.min.js'), 'w' do |f| f.print compress_js(all_scripts, "google") end manifest.print "javascript 'jquery.jqical.min.js'\n" FileUtils.mkdir_p File.join(JQICAL_DEST_STYLESHEETS) open File.join(JQICAL_DEST_STYLESHEETS, 'jqical.scss'), 'w' do |f| sass = JQICAL_MESSAGE2 IO.popen("sass-convert -F css -T scss", 'r+') { |ff| ff.print(all_stylesheets); ff.close_write; sass += ff.read } f.print sass end manifest.print "stylesheet 'jquery.ui/jqical.scss'\n" # Images # Copy the images directory FileUtils.mkdir_p File.join(JQICAL_DEST_IMAGES) src_dir = JQICAL_SRC_IMAGES dest_dir = JQICAL_DEST_IMAGES Dir.foreach(src_dir) do |image| next unless /\.png$/ =~ image FileUtils.cp(File.join(src_dir, image), dest_dir) manifest.print "image 'jquery.ui/jqical/#{image}'\n" end end end end