mirror of
https://github.com/prometheus/docs.git
synced 2026-02-05 15:45:27 +01:00
So far every prometheus/alertmanater/... release branch had to be manually configured in the nanoc.yaml config file. With this change the most recent release branches will be checked out automatically if a corresponding semver tag exists. As the Prometheus git repository includes several hundreds of megabytes of vendored assets, the repository is cloned bare and all blobs are filtered by default. Each version is then checked out in an individual working tree and git's spare-chekcout feature is used to reduce the checkout to the `docs/` folder. The git data is cached in `tmp/repo_docs/` and will be recreated automatically if removed. Signed-off-by: Tobias Schmidt <tobidt@gmail.com>
85 lines
2.4 KiB
Ruby
85 lines
2.4 KiB
Ruby
#!/usr/bin/env ruby
|
||
|
||
# A few helpful tips about the Rules file:
|
||
#
|
||
# * The string given to #compile and #route are matching patterns for
|
||
# identifiers--not for paths. Therefore, you can’t match on extension.
|
||
#
|
||
# * The order of rules is important: for each item, only the first matching
|
||
# rule is applied.
|
||
#
|
||
# * Item identifiers start and end with a slash (e.g. “/about/” for the file
|
||
# “content/about.html”). To select all children, grandchildren, … of an
|
||
# item, use the pattern “/about/*/”; “/about/*” will also select the parent,
|
||
# because “*” matches zero or more characters.
|
||
|
||
passthrough '/assets/**'
|
||
passthrough '/_redirects'
|
||
passthrough '*/images/*'
|
||
|
||
# RSS Feed
|
||
compile '/blog/feed/' do
|
||
filter :erb
|
||
end
|
||
|
||
route '/blog/feed/' do
|
||
'/blog/feed.xml'
|
||
end
|
||
|
||
compile '*' do
|
||
filter :erb if item[:extension] == 'html'
|
||
|
||
if item[:extension] == 'md'
|
||
filter :redcarpet, options: {filter_html: true, autolink: true, no_intraemphasis: true, fenced_code_blocks: true, gh_blockcode: true, tables: true}, renderer_options: {with_toc_data: true}
|
||
filter :normalize_links, item[:repo_docs] if item[:repo_docs]
|
||
filter :version_warning, item[:repo_docs] if item[:repo_docs]
|
||
filter :add_anchors
|
||
filter :bootstrappify
|
||
filter :admonition
|
||
filter :colorize_syntax, :default_colorizer => :pygmentsrb
|
||
filter :config_linker if item[:title] == 'Configuration'
|
||
filter :toc, style: item[:toc]
|
||
if item[:kind] == 'article'
|
||
layout 'blog'
|
||
else
|
||
# TODO(mr): separate layout selection from Markdown handling
|
||
layout item[:layout] || 'docs'
|
||
end
|
||
elsif item[:extension] == 'css'
|
||
# don’t filter stylesheets
|
||
elsif item.binary?
|
||
# don’t filter binary items
|
||
elsif item[:layout]
|
||
layout item[:layout]
|
||
else
|
||
layout 'default'
|
||
end
|
||
end
|
||
|
||
route '/blog/' do
|
||
'/blog/index.html'
|
||
end
|
||
|
||
# Transform /blog/<YYYY>-<MM>-<DD>-<post title> to
|
||
# /blog/<YYYY>/<MM>/<DD>/<post title>.
|
||
route '/blog/*' do
|
||
y, m, d, slug = /([0-9]+)\-([0-9]+)\-([0-9]+)\-([^\/]+)/.match(item.identifier).captures
|
||
|
||
"/blog/#{y}/#{m}/#{d}/#{slug}/index.html"
|
||
end
|
||
|
||
route '*' do
|
||
if item[:extension] == 'css'
|
||
# Write item with identifier /foo/ to /foo.css
|
||
item.identifier.chop + '.css'
|
||
elsif item.binary?
|
||
# Write item with identifier /foo.dat to /foo.dat
|
||
item.identifier.to_s
|
||
else
|
||
# Write item with identifier /foo/ to /foo/index.html
|
||
item.identifier + 'index.html'
|
||
end
|
||
end
|
||
|
||
layout '*', :erb
|