2019-07-24 23:51:29 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
# Genera un ZIP a partir del sitio ya construido
|
|
|
|
#
|
|
|
|
# TODO: Firmar con minisign
|
|
|
|
class DeployZip < Deploy
|
2019-07-25 17:25:00 +00:00
|
|
|
store :values, accessors: %i[fqdn destination file path], coder: JSON
|
2019-07-24 23:51:29 +00:00
|
|
|
|
|
|
|
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}.#{ENV.fetch('SUTTY', 'sutty.nl')}"
|
|
|
|
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
|