engine/lib/locomotive/import/job.rb

54 lines
1.3 KiB
Ruby

require 'zip/zipfilesystem'
module Locomotive
module Import
class Job
def initialize(theme_file, site = nil, options = {})
raise "Theme zipfile not found" unless File.exists?(theme_file)
@theme_file = theme_file
@site = site
@options = Hash.new(true).merge(options)
end
def perform
self.unzip!
raise "No database.yml found in the theme zipfile" if @database.nil?
Locomotive::Import::Site.process(@database, @site, @theme_path)
Locomotive::Import::ContentTypes.process(@database, @site, @theme_path)
end
protected
def unzip!
Zip::ZipFile.open(@theme_file) do |zipfile|
destination_path = File.join(Rails.root, 'tmp', 'themes', @site.id.to_s)
zipfile.each do |entry|
next if entry.name =~ /__MACOSX/
if entry.name =~ /database.yml$/
@database = YAML.load(zipfile.read(entry.name))
@theme_path= File.join(destination_path, entry.name.gsub('database.yml', ''))
next
end
puts entry.name
#
# FileUtils.mkdir_p(File.dirname(File.join(destination_path, entry.name)))
#
# zipfile.extract(entry, File.join(destination_path, entry.name))
end
end
end
end
end
end