require 'json' module Fastlane module PageGenerator PLACEHOLDER_URL = "https://s3.eu-central-1.amazonaws.com/fota.polidea.com/mails/images/icon-placeholder.jpg" def self.mail(config) UI.message("Generating e-mail...") eth = Fastlane::ErbTemplateHelper html_template = eth.load_from_path( File.expand_path("templates/mail.erb", Polidea.root) ) eth.render(html_template, { author: config[:author], last_commit: config[:last_commit], is_android: config[:is_android], app_icon: mail_app_icon_or_placholder(config[:app_icon]), app_name: config[:app_name], app_version: config[:app_version], build_number: config[:build_number], installation_link: config[:installation_link], release_notes: parse_release_notes(config[:release_notes]), platform: config[:platform], release_date: config[:release_date], binary_size: config[:binary_size], qr_code: "cid:#{config[:qr_code]}" }) end def self.installation_page(config) UI.message("Generating public installation page...") eth = Fastlane::ErbTemplateHelper html_template = eth.load_from_path( File.expand_path("templates/install.erb", Polidea.root) ) eth.render(html_template, { url: config[:url], app_version: config[:app_version], build_number: config[:build_number], app_name: config[:app_name], app_icon: app_icon_or_placholder(config[:app_icon]), release_notes: parse_release_notes(config[:release_notes]) }) end def self.parse_release_notes(release_notes) renderer = Redcarpet::Render::HTML.new({ filter_html: true, no_styles: true }) markdown = Redcarpet::Markdown.new( renderer, fenced_code_blocks: true, autolink: false, tables: false ) markdown.render(release_notes || "No release notes.") end private_class_method :parse_release_notes def self.mail_app_icon_or_placholder(app_icon) if app_icon.nil? PLACEHOLDER_URL else "cid:#{app_icon}" end end private_class_method :mail_app_icon_or_placholder def self.app_icon_or_placholder(app_icon) if app_icon.nil? PLACEHOLDER_URL else app_icon end end private_class_method :app_icon_or_placholder end end