# 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