lib/tasks/ddr_extraction.rake in ddr-extraction-0.2.0 vs lib/tasks/ddr_extraction.rake in ddr-extraction-0.2.1

- old
+ new

@@ -1,28 +1,42 @@ require "ddr/extraction/defaults" require "openssl" +require "net/http" DOWNLOAD_DIR = File.absolute_path("tmp") +BIN_DIR = File.absolute_path("bin") +TIKA_VERSION = "1.6" +FITS_VERSION = "0.8.3" +tika_version = ENV["TIKA_VERSION"] || TIKA_VERSION +tika_path = Ddr::Extraction.config.adapters.tika.path +tika_app = File.basename(tika_path) +tika_download_url = "http://archive.apache.org/dist/tika/tika-app-#{tika_version}.jar" +tika_checksum_url = "#{tika_download_url}.sha" +tika_checksum_type = :SHA1 + +fits_version = ENV["FITS_VERSION"] || FITS_VERSION +fits_path = Ddr::Extraction.config.adapters.fits.path +fits_download_url = "http://projects.iq.harvard.edu/files/fits/files/fits-#{fits_version}.zip" + namespace :tika do desc "Download Tika app" - task :download => :download_dir do - tika_app = File.join(DOWNLOAD_DIR, "tika-app.jar") - tika_config = Ddr::Extraction.config.adapters(:tika) - puts "Downloading Tika app ... " - system "curl -L #{tika_config.download_url} -o #{tika_app}" - if tika_config.verify_checksum + task :download => [:download_dir] do + FileUtils.cd(DOWNLOAD_DIR) do + puts "Downloading Tika app ... " + system "curl -L #{tika_download_url} -o #{tika_app}" + checksum = Net::HTTP.get(URI(tika_checksum_url)).chomp puts "Verifiying checksum ... " - digest = OpenSSL::Digest.const_get(tika_config.checksum_type).new - digest << File.read(tika_config.path) - if digest.to_s != tika_config.checksum_value + digest = OpenSSL::Digest.const_get(tika_checksum_type).new + digest << File.read(tika_app) + if digest.to_s != checksum puts "Checksums do not match -- aborting!" FileUtils.remove_entry_secure(tika_app) abort end + FileUtils.mv(tika_app, tika_path) end - FileUtils.mv(tika_app, tika_config.path) end # namespace :server do # desc "Start the Tika server" # task :start => :environment do @@ -31,16 +45,16 @@ end namespace :fits do desc "Download FITS tool" task :download => :download_dir do - fits_tool = File.join(DOWNLOAD_DIR, "fits.zip") - fits_config = Ddr::Extraction.config.adapters(:fits) - puts "Downloading FITS tool ... " - system "curl -L #{fits_config.download_url} -o #{fits_tool}" - # Unzip options: convert text files, force overwrite, extra quiet - system "unzip -a -o -qq -d bin #{fits_tool}" - FileUtils.chmod(0755, fits_config.path) + FileUtils.cd(DOWNLOAD_DIR) do + puts "Downloading FITS tool ... " + system "curl -L #{fits_download_url} -o fits.zip" + system "unzip -a -o -q fits.zip" + FileUtils.mv("fits-#{fits_version}", File.dirname(fits_path)) + end + FileUtils.chmod(0755, fits_path) end end task :download_dir do FileUtils.mkdir(DOWNLOAD_DIR) unless Dir.exists?(DOWNLOAD_DIR)