#!/usr/bin/env ruby # Renders the release notes for Github releases, # and prints them to standard output # Doesn't trim the header, which is done in shell # Args: # ARGV[0] : location of the file to render require "liquid" require "safe_yaml" # include some custom liquid extensions require_relative "../docs/_plugins/all_extensions" # explicitly setting safe mode to get rid of the warning SafeYAML::OPTIONS[:default_mode] = :safe # START OF THE SCRIPT unless ARGV.length == 1 && File.exist?(ARGV[0]) print "\e[31m[ERROR] In #{$0}: The first arg must be a valid file name\e[0m\n" exit 1 end release_notes_file = ARGV[0] # Make the script execute wherever we are travis_dir = File.expand_path File.dirname(__FILE__) liquid_env = { # wrap the config under a "site." namespace because that's how jekyll does it 'site' => YAML.load_file(travis_dir + "/../docs/_config.yml"), 'page' => YAML.load_file(release_notes_file), # This signals the links in {% rule %} tags that they should be rendered as absolute 'is_release_notes_processor' => true } to_render = File.read(release_notes_file) if to_render.match(/\{%\s*include/) STDERR.printf("\n\n\e[31;1mERROR\e[0m Detected an include tag - this is jekyll specific and not supported here! Please replace it manually\n\n") exit 1 end rendered = Liquid::Template.parse(to_render).render(liquid_env) print(rendered)