mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-17 00:26:22 +00:00
Refactorizar DeployZip
This commit is contained in:
parent
fa9884afdd
commit
27b4494333
1 changed files with 34 additions and 14 deletions
|
@ -2,22 +2,24 @@
|
|||
|
||||
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
|
||||
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
|
||||
# y generar un zip accesible públicamente.
|
||||
# y generar un ZIP accesible públicamente.
|
||||
#
|
||||
# rubocop:disable Metrics/MethodLength
|
||||
# @return [Boolean]
|
||||
def deploy
|
||||
FileUtils.rm_f path
|
||||
remove_destination!
|
||||
|
||||
time_start
|
||||
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|
|
||||
File.directory?(f) ? z.mkdir(f) : z.add(f, f)
|
||||
end
|
||||
|
@ -31,25 +33,43 @@ class DeployZip < Deploy
|
|||
|
||||
File.exist? path
|
||||
end
|
||||
# rubocop:enable Metrics/MethodLength
|
||||
|
||||
def limit
|
||||
1
|
||||
# La URL de descarga del archivo.
|
||||
#
|
||||
# @return [String]
|
||||
def url
|
||||
"#{site.deploy_local.url}/#{hostname}"
|
||||
end
|
||||
|
||||
# Devuelve el tamaño del ZIP en bytes
|
||||
#
|
||||
# @return [Integer]
|
||||
def size
|
||||
File.size path
|
||||
end
|
||||
|
||||
# El archivo ZIP se guarda dentro del sitio local para poder
|
||||
# descargarlo luego.
|
||||
#
|
||||
# @return [String]
|
||||
def destination
|
||||
File.join(Rails.root, '_deploy', site.hostname)
|
||||
site.deploy_local.destination
|
||||
end
|
||||
|
||||
def file
|
||||
"#{site.hostname}.zip"
|
||||
# El "hostname" es la ubicación del archivo.
|
||||
#
|
||||
# @return [String]
|
||||
def default_hostname
|
||||
"#{site.deploy_local.hostname}.zip"
|
||||
end
|
||||
|
||||
def path
|
||||
File.join(destination, file)
|
||||
private
|
||||
|
||||
def remove_destination!
|
||||
FileUtils.rm_f path
|
||||
end
|
||||
|
||||
def implements_hostname_validation?
|
||||
true
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue