Rakefile in dropzonejs-rails-0.3.2 vs Rakefile in dropzonejs-rails-0.4.0
- old
+ new
@@ -5,33 +5,74 @@
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
end
Bundler::GemHelper.install_tasks
-require 'dropzonejs-rails'
require 'open-uri'
+require 'octokit'
+require 'dropzonejs-rails'
desc 'Get latest dropzone js build'
task :get do
+ puts "Fetching dropzone v#{DropzonejsRails::DROPZONE_VERSION}..."
+
download_dropzone_file 'dropzone.js', 'vendor/assets/javascripts/dropzone.js'
download_dropzone_file 'css/basic.css', 'vendor/assets/stylesheets/dropzone/basic.css.scss'
download_dropzone_file 'css/dropzone.css', 'vendor/assets/stylesheets/dropzone/dropzone.css.scss'
download_dropzone_file 'images/spritemap.png', 'vendor/assets/images/dropzone/spritemap.png'
download_dropzone_file 'images/spritemap@2x.png', 'vendor/assets/images/dropzone/spritemap@2x.png'
+ puts "Fixing image paths..."
fix_image_links 'vendor/assets/stylesheets/dropzone/basic.css.scss'
fix_image_links 'vendor/assets/stylesheets/dropzone/dropzone.css.scss'
+
+ puts "Done."
end
+desc 'Find the latest dropzone js version and get it'
+task :check do
+ latest_version = Octokit.tags('enyo/dropzone').first.name.gsub(/[^\d\.]/, '')
+
+ if latest_version != DropzonejsRails::DROPZONE_VERSION
+ version = File.join(File.dirname(__FILE__), 'lib', 'dropzonejs-rails', 'version.rb')
+ sed version, {
+ /DROPZONE_VERSION\s+=\s+'#{DropzonejsRails::DROPZONE_VERSION}'/ => "DROPZONE_VERSION = '#{latest_version}'",
+ /\sVERSION\s+=\s+'#{DropzonejsRails::VERSION}'/ => " VERSION = '#{new_version}'"
+ }
+
+ readme = File.join(File.dirname(__FILE__), 'README.md')
+ sed readme, { /\*\*Dropzone v#{DropzonejsRails::DROPZONE_VERSION}\*\*/ => "**Dropzone v#{latest_version}**" }
+
+ puts "A new version of dropzone (v#{latest_version}) has been found, and the source files have been accordingly updated.\nYou may now run: `rake get` to get it."
+ else
+ puts "The bundled version of dropzone (v#{DropzonejsRails::DROPZONE_VERSION}) already is the latest one."
+ end
+end
+
def download_dropzone_file(source_file, target_file)
source = "https://raw.github.com/enyo/dropzone/v#{DropzonejsRails::DROPZONE_VERSION}/downloads/#{source_file}"
target = DropzonejsRails::Engine.root.join(target_file)
File.open(target, 'wb+') { |f| f << open(source, 'rb').read }
end
def fix_image_links(css_file)
- file_name = DropzonejsRails::Engine.root.join(css_file)
+ file_name = DropzonejsRails::Engine.root.join(css_file)
original_css = File.read(file_name)
- fixed_css = original_css.gsub(/url\(\"\.\.\/images\/(.+\.png)\"\)/, 'image-path("dropzone/\1")')
- File.open(file_name, "w") {|file| file << fixed_css}
+ fixed_css = original_css.gsub(/url\(\"\.\.\/images\/(.+\.png)\"\)/, 'image-path("dropzone/\1")')
+
+ File.open(file_name, 'w') { |file| file << fixed_css }
end
+
+def sed(filename, replacements)
+ contents = File.read(filename)
+ replacements.each_pair do |pattern, replacement|
+ contents.gsub!(pattern, replacement)
+ end
+ File.write filename, contents
+end
+
+def new_version
+ parts = DropzonejsRails::VERSION.split('.')
+ parts[2] = parts[2].to_i + 1
+ parts.join '.'
+end
\ No newline at end of file