# frozen_string_literal: true class Site # Obtiene todos los archivos relacionados en artículos del sitio y los # sube a Sutty. class StaticFileMigration # Tipos de metadatos que contienen archivos STATIC_TYPES = %i[file image].freeze attr_reader :site def initialize(site:) @site = site end def migrate! modified = site.docs.map do |doc| next unless STATIC_TYPES.map do |field| next unless doc.attribute? field next unless doc[field].path? next unless doc[field].static_file true end.any? log.write "#{doc.path.relative};no se pudo guardar\n" unless doc.save(validate: false) doc.path.absolute end.compact log.close return if modified.empty? # TODO: Hacer la migración desde el servicio de creación de sitios? site.repository.commit(file: modified, message: I18n.t('sites.static_file_migration'), usuarie: author) end private def author @author ||= GitAuthor.new email: "sutty@#{Site.domain}", name: 'Sutty' end def log @log ||= File.open(File.join(site.path, 'migration.csv'), 'w') end end end