Refactorizar DeployZip

This commit is contained in:
f 2021-08-01 21:53:37 -03:00
parent fa9884afdd
commit 27b4494333

View file

@ -2,22 +2,24 @@
require 'zip' require 'zip'
# Genera un ZIP a partir del sitio ya construido # Genera un ZIP a partir del sitio ya generado y lo coloca para descarga
# dentro del sitio público.
# #
# TODO: Firmar con minisign # TODO: Firmar con minisign
class DeployZip < Deploy class DeployZip < Deploy
store :values, accessors: %i[], coder: JSON # El hostname es el nombre del archivo.
validates :hostname, format: { with: /\.zip\z/ }
# Una vez que el sitio está generado, tomar todos los archivos y # Una vez que el sitio está generado, tomar todos los archivos y
# y generar un zip accesible públicamente. # y generar un ZIP accesible públicamente.
# #
# rubocop:disable Metrics/MethodLength # @return [Boolean]
def deploy def deploy
FileUtils.rm_f path remove_destination!
time_start time_start
Dir.chdir(destination) do Dir.chdir(destination) do
Zip::File.open(path, Zip::File::CREATE) do |z| Zip::File.open(hostname, Zip::File::CREATE) do |z|
Dir.glob('./**/**').each do |f| Dir.glob('./**/**').each do |f|
File.directory?(f) ? z.mkdir(f) : z.add(f, f) File.directory?(f) ? z.mkdir(f) : z.add(f, f)
end end
@ -31,25 +33,43 @@ class DeployZip < Deploy
File.exist? path File.exist? path
end end
# rubocop:enable Metrics/MethodLength
def limit # La URL de descarga del archivo.
1 #
# @return [String]
def url
"#{site.deploy_local.url}/#{hostname}"
end end
# Devuelve el tamaño del ZIP en bytes
#
# @return [Integer]
def size def size
File.size path File.size path
end end
# El archivo ZIP se guarda dentro del sitio local para poder
# descargarlo luego.
#
# @return [String]
def destination def destination
File.join(Rails.root, '_deploy', site.hostname) site.deploy_local.destination
end end
def file # El "hostname" es la ubicación del archivo.
"#{site.hostname}.zip" #
# @return [String]
def default_hostname
"#{site.deploy_local.hostname}.zip"
end end
def path private
File.join(destination, file)
def remove_destination!
FileUtils.rm_f path
end
def implements_hostname_validation?
true
end end
end end