sutty/app/models/deploy_zip.rb

48 lines
1.1 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# Genera un ZIP a partir del sitio ya construido
#
# TODO: Firmar con minisign
class DeployZip < Deploy
store :values, accessors: %i[fqdn destination file path], coder: JSON
before_create :fqdn!, :destination!
before_create :file!, :path!
# Una vez que el sitio está generado, tomar todos los archivos y
# y generar un zip accesible públicamente.
#
# TODO: Recolectar estadísticas y enviarlas a la base de datos
def deploy
Dir.chdir(destination) do
Zip::File.open(path, Zip::File::CREATE) do |z|
Dir.glob('./**/**').each do |f|
File.directory?(f) ? z.mkdir(f) : z.add(f, f)
end
end
end
File.exist? path
end
private
# Copiamos de DeployLocal para no cargar todos los métodos de
# compilación...
def fqdn!
self.fqdn ||= "#{site.name}.#{Site.domain}"
end
def destination!
self.destination ||= File.join(Rails.root, '_deploy', fqdn)
end
def file!
self.file ||= "#{fqdn}.zip"
end
def path!
self.path = File.join(destination, file)
end
end