zeus.ugent.be/Rules
Niko Strijbol afae88656a
Support predefined locations
The service that looks up the locations changes sometimes. Therefore it
is useful to have some "predefined" locations, which we can change in
one place; the format is "$NAME". Since the metadata is yaml, this
exclude the nice "#NAME" or even ":NAME".
2020-08-12 15:52:00 +02:00

248 lines
3.7 KiB
Ruby

#!/usr/bin/env ruby
# frozen_string_literal: true
require 'json'
require 'icalendar'
# Important!!!
# First ignore the node_modules, we do not need any of it on the site directly.
ignore '/node_modules/**/*'
#
#
# PREPROCESS
#
#
preprocess do
`yarn`
# We don't want to compile old blogposts in development
ignore_old_content('blog', 'events', 'about/verslagen') if development?
update_blog_attributes
create_yearly_items('Blog')
create_yearly_items('Events')
convert_event_time_to_timestamps
all_events.each do |event|
check_schema(:event, event)
end
all_privacy_items.each do |project|
check_schema(:privacy, project)
end
add_report_metadata
add_project_metadata
convert_locations
end
#
#
# COMPILATION
#
#
compile '/*.xml' do
filter :erb
end
#
# ARCHIVES
#
compile '/blog/*' do
layout '/blogs.*'
layout '/generic.*'
layout '/default.*'
filter :erb
filter :html_press if production?
end
#
# EVENTS
#
# Overview page
compile '/events/*' do
layout '/events.*'
layout '/generic.*'
layout '/default.*'
filter :erb
filter :html_press if production?
end
compile '/events/*/*' do
filter :erb
filter :kramdown
layout '/eventpost.*'
layout '/default.*'
filter :erb
filter :html_press if production?
end
compile '/events/*/*', rep: :text do
filter :kramdown
filter :strip_html
end
compile '/events/*/*', rep: :ical do
filter :ical
write ext: 'ics'
end
#
# POSTS
#
compile '/blog/*/*.md' do
filter :erb
layout '/blogpost.md'
filter :kramdown
filter :typogruby
layout '/blogpost.erb'
layout '/generic.*'
layout '/default.*'
filter :erb
filter :html_press if production?
end
compile '/blog/*/*.md', rep: :text do
filter :erb
filter :kramdown
filter :strip_html
end
compile '/blog/*/*.md', rep: :html do
filter :erb
filter :kramdown
end
#
# PROJECTS
#
compile '/projects/*' do
filter :kramdown
# Don't write out the projects themselves for now
write nil
end
compile '/*_search.json' do
filter :erb
end
compile '/**/*.ics' do
filter :erb
end
#
# PRIVACY
#
compile '/about/privacy/*' do
filter :kramdown
# Don't write out the privacy items themselves for now
nil
end
#
# REPORTS
#
# Note drive/verslagen is 'linked' as a data source to /about/verslagen/
compile '/about/verslagen/*/*.md', rep: :pdf do
filter :pandoc_pdf, args: { f: :markdown, :'pdf-engine' => 'xelatex' } if production?
write ext: (production? ? 'pdf' : 'md')
end
#
# GENERIC ERB PAGES
#
compile '/**/*.erb' do
filter :erb
# Apply typographic improvements if required by the page. Use this on text-heavy pages,
# such as the history page.
if @item[:typography]
filter :typogruby
end
layout '/generic.*'
layout '/default.*'
filter :html_press if production?
end
compile '/**/*.md' do
filter :erb
filter :kramdown
layout '/generic.*'
layout '/default.*'
end
#
# ASSETS
#
compile '/assets/scripts/**/*.js' do
filter :uglify_js, harmony: true if production?
end
ignore '/assets/stylesheets/includes/**/*'
ignore '/data/**/*'
compile '/assets/stylesheets/**/*.scss' do
sass_opts = {
syntax: :scss,
load_paths: ['content/assets/stylesheets']
}
sass_opts[:style] = :compressed if production?
filter :sassc, sass_opts
filter :autoprefixer if production?
write ext: 'css'
end
compile '/assets/stylesheets/**/*.css' do
if production?
filter :rainpress
filter :autoprefixer
end
write ext: 'css'
end
#
#
# ROUTES
#
#
# Google verification file
passthrough '/google6f2e77d0228abc35.html'
route '/**/index.{erb,html,md}' do
"#{item.identifier.without_ext}.html"
end
route '/**/*.{erb,html,md}' do
"#{item.identifier.without_ext}/index.html"
end
# Let anything else simply pass through
passthrough '/**/*'
#
#
# LAYOUTS
#
#
layout '/**/*', :erb