config.rb (51 lines of code) (raw):

# frozen_string_literal: true require 'uglifier' require 'date' Haml::TempleEngine.disable_option_validator! page '/*.xml', layout: false page '/*.json', layout: false page '/*.txt', layout: false page '/*.ico', layout: false set :website_title, 'GitLab backstage changelog' set :website_author, 'GitLab' set :website_url, 'https://gitlab-org.gitlab.io/gitlab-backstage' set :markdown_engine, :kramdown set :markdown, fenced_code_blocks: true, parse_block_html: true, auto_ids: true, auto_id_prefix: 'header-', tables: true, input: 'GFM', hard_wrap: false, toc_levels: 1..3 set :haml, format: :html5 activate :syntax, line_numbers: false activate :directory_indexes configure :development do activate :livereload end configure :build do set :build_dir, 'public' set :base_url, '/backstage-changelog' activate :relative_assets activate :minify_css activate :minify_javascript, compressor: proc { Uglifier.new(harmony: true) } activate :asset_hash end helpers do def markdown(text) Tilt['markdown'].new(config.markdown) { text }.render(self) end def format_changelog_date(date) Date.strptime(date, '%Y-%m').strftime('%B %Y') end def changelog_entries_per_team(entries) entries.values.group_by { |entry| entry['team'] }.sort_by { |k, _| k } end def changelog_entries_per_author(entries) entries.group_by { |e| e['author'] }.sort_by { |k, _| k } end def sorted_changelog_entries data.changelog.sort { |a, b| b[0] <=> a[0] } end end