lib/jquery_plugin_gen/support/jquery.rake in jqueryplugingen-0.1.4 vs lib/jquery_plugin_gen/support/jquery.rake in jqueryplugingen-0.2.0

- old
+ new

@@ -1,78 +1,77 @@ begin - %w[rake fileutils simple-rss open-uri].each { |f| require f } + %w[rake tmpdir fileutils simple-rss open-uri].each { |f| require f } rescue LoadError require 'rubygems' unless ENV['NO_RUBYGEMS'] %w[rake tmpdir fileutils simple-rss open-uri].each { |f| require f } end lib_dir = 'lib' +tmp_dir = Dir.tmpdir namespace :jquery do desc "Add latest jquery core, ui and themes to #{lib_dir}" - task :all => ['core:add', 'ui:add', 'themes:add'] + task :add => [:add_core, :add_ui, :add_themes] - namespace :core do - - desc "List versions of released packages" - task :packages do - versions(jquery_atom){ |e| e.title } - end - - desc "List jQuery packages available" - task :versions do - versions(jquery_atom){ |e| e.title.gsub(/jquery-(\d\.\d\.\d|\d\.\d).*/, '\1') } - end + desc "Add latest jQuery to library" + task :add_core do + uri = first(jquery_atom){ |e| e.content.gsub(/.*a href="(.*)".*/m, '\1') if e.title.include?('.min.js') } + get_and_install(uri, lib_dir, 'jquery.min.js') + end - desc "Add latest jQuery to library" - task :add do - uri = first(jquery_atom){ |e| e.content.gsub(/.*a href="(.*)".*/m, '\1') if e.title.include?('.min.js') } - get_and_install(uri, lib_dir, 'jquery.min.js') - end - - desc "Add specific version of jQuery library: see with VERSION=X.X.X on command line" - task :add_version do - version = ENV['VERSION'] - return puts('No version specified - add VERSION=X.X.X to rake command') if version.nil? - uri = first(jquery_atom){ |e| e.content.gsub(/.*a href="(.*)".*/m, '\1') if e.title.include?(version) } - return puts("Specified version #{version} not found in repository - use rake jquery:core:versions to determine available versions") if uri.nil? - get_and_install(uri, lib_dir, "jquery-#{version}.min.js") - end + desc "Add latest jQueryUI (without theme) to library" + task :add_ui do + uri = first(jqueryui_atom){ |e| e.content.gsub(/.*a href="(.*)".*/m, '\1') unless e.title.include?('themes') } + file = uri.gsub(/.*files\/(.*)(\d.\drc\d.\d|\d.\drc\d|\d\.\d\.\d|\d\.\d)(.*)/, '\1\2\3') + get_and_install(uri, tmp_dir, file) + unzip_and_install(lib_dir, tmp_dir, file) end - namespace :ui do - - desc "List versions of released packages" - task :packages do - versions(jqueryui_atom){ |e| e.title } - end - - desc "List jQuery UI packages available" - task :versions do - versions(jqueryui_atom){ |e| e.title.gsub(/.*-(\d.\drc\d.\d|\d.\drc\d|\d\.\d\.\d|\d\.\d).*/, '\1') } - end - - desc "Add latest jQueryUI (without theme) to library" - task :add do - uri = first(jqueryui_atom){ |e| e.content.gsub(/.*a href="(.*)".*/m, '\1') unless e.title.include?('themes') } - file = uri.gsub(/.*files\/(.*)(\d.\drc\d.\d|\d.\drc\d|\d\.\d\.\d|\d\.\d)(.*)/, '\1\2\3') - get_and_install(uri, lib_dir, file) - unzip_and_install(lib_dir, file) - end + desc "Add all themes to libary" + task :add_themes do + uri = first(jqueryui_atom){ |e| e.content.gsub(/.*a href="(.*)".*/m, '\1') if e.title.include?('themes') } + file = uri.gsub(/.*files\/(.*)(\d.\drc\d.\d|\d.\drc\d|\d\.\d\.\d|\d\.\d)(.*)/, '\1\2\3') + get_and_install(uri, tmp_dir, file) + unzip_and_install(lib_dir, tmp_dir, file) end + + desc "Add specific version of jQuery library: see with VERSION=X.X.X on command line" + task :add_version do + version = ENV['VERSION'] + return puts('No version specified - add VERSION=X.X.X to rake command') if version.nil? + uri = first(jquery_atom){ |e| e.content.gsub(/.*a href="(.*)".*/m, '\1') if e.title.include?(version) } + return puts("Specified version #{version} not found in repository - use rake jquery:core:versions to determine available versions") if uri.nil? + get_and_install(uri, lib_dir, "jquery-#{version}.min.js") + end + + desc "List all versions for core and ui " + task :versions => [:versions_core, :versions_ui] + + desc "List jQuery packages available" + task :versions_core do + versions(jquery_atom){ |e| e.title.gsub(/jquery-(\d\.\d\.\d|\d\.\d).*/, '\1') } + end - namespace :themes do - - desc "Add all themes to libary" - task :add do - uri = first(jqueryui_atom){ |e| e.content.gsub(/.*a href="(.*)".*/m, '\1') if e.title.include?('themes') } - file = uri.gsub(/.*files\/(.*)(\d.\drc\d.\d|\d.\drc\d|\d\.\d\.\d|\d\.\d)(.*)/, '\1\2\3') - get_and_install(uri, lib_dir, file) - unzip_and_install(lib_dir, file) + desc "List jQuery UI packages available" + task :versions_ui do + versions(jqueryui_atom){ |e| e.title.gsub(/.*-(\d.\drc\d.\d|\d.\drc\d|\d\.\d\.\d|\d\.\d).*/, '\1') } + end + + desc "List all packages for core and ui" + task :packages => [:packages_core, :packages_ui] + + desc "List versions of released packages" + task :packages_core do + versions(jquery_atom){ |e| e.title } end - end + + desc "List versions of released packages" + task :packages_ui do + versions(jqueryui_atom){ |e| e.title } + end + end def jqueryui_atom puts "Checking jQueryUI respository on Google Code" @@ -113,31 +112,41 @@ new_file = File.join(path, file) puts "Saving new library file: #{new_file}" File.open(new_file, 'w') do |file| download.open { |jq| jq.each_line {|line| file.puts line} } - end + end unless File.exists?(new_file) new_file end -def unzip_and_install(path, file) +def unzip_and_install(dest, tmp_dir, file) - path = File.join(File.dirname(__FILE__), path) - extracted_folder = File.join(Dir.tmpdir, file.gsub(/(.*)\.zip/, '\1')) + puts tmp_dir + # dest = File.join(dest) + extracted_folder = File.join(tmp_dir, file.gsub(/(.*)\.zip/, '\1')) if /mswin|mingw/ =~ RUBY_PLATFORM then zip = ENV['ZIP'] || '7z' puts "Extracting using #{zip} - this should be on your path or set the ZIP=path/to/zip/cmd on rake command" - `#{zip} #{file} -o #{Dir.tmpdir}` + `#{zip} #{tmp_dir}/#{file} -o #{tmp_dir}` else - puts 'Extracting files' - `unzip -o #{path}/#{file} -d #{Dir.tmpdir}` + puts "Extracting files #{tmp_dir}/#{file} to #{tmp_dir}" + `unzip -o #{tmp_dir}/#{file} -d #{tmp_dir}` end - puts 'Copying ui and themes' - FileUtils.cp Dir.glob("#{extracted_folder}/ui/jquery*.js") , path - FileUtils.cp_r "#{extracted_folder}/themes", path + puts "Copying ui and themes in #{extracted_folder} to #{dest}" + FileUtils.cp(Dir.glob("#{extracted_folder}/ui/jquery*.js"), dest) rescue nil + begin + FileUtils.cp_r("#{patch_themes_path(extracted_folder)}/themes", dest) + rescue LoadError + puts "Error in the way JQuery Themes was packaged please contact gem owner for patch" + end + puts 'Cleaning extracted files' - FileUtils.rm "#{path}/#{file}" + # FileUtils.rm "#{tmp_dir}/#{file}" # I'm allowing for caching FileUtils.rm_rf extracted_folder +end + +def patch_themes_path(extracted_path) + extracted_path.gsub(/1.7.2.0/, '1.7.2') end