module Deliver class HtmlGenerator def run(options, screenshots) begin html_path = self.render(options, screenshots, '.') rescue => ex Helper.log.error ex.inspect Helper.log.error ex.backtrace.join("\n") okay = agree("Could not render HTML preview. Do you still want to continue? (y/n)".red, true) return if okay raise "Could not render HTML page" end puts "----------------------------------------------------------------------------" puts "Verifying the upload via the HTML file can be disabled by either adding" puts "`force true` to your Deliverfile or using `deliver --force`" puts "----------------------------------------------------------------------------" system("open '#{html_path}'") okay = agree("Does the Preview on path '#{html_path}' look okay for you? (blue = updated) (y/n)", true) if okay puts "HTML file confirmed...".green # print this to give feedback to the user immediately else raise "Did not upload the metadata, because the HTML file was rejected by the user".yellow end end # Renders all data available to quickly see if everything was correctly generated. # @param export_path (String) The path to a folder where the resulting HTML file should be stored. def render(options, screenshots, export_path = nil) lib_path = Helper.gem_path('deliver') @screenshots = screenshots || [] @options = options @app_name = (options[:name]['en-US'] || options[:name].values.first) if options[:name] @app_name ||= options[:app].name @languages = options[:description].keys if options[:description] @languages ||= options[:app].latest_version.description.languages html_path = File.join(lib_path, "lib/assets/summary.html.erb") html = ERB.new(File.read(html_path)).result(binding) # http://www.rrn.dk/rubys-erb-templating-system export_path = File.join(export_path, "Preview.html") File.write(export_path, html) return export_path end end end