CAUTION: This page documents an old version of #{params[:repository].split("/")[-1].split(".")[0].capitalize()}. - Check out the latest stable version.
) - - body = doc.css('body') - if first = body.children.first - first.add_previous_sibling(warning) - else - body << Nokogiri::HTML::DocumentFragment.parse(warning) - end - - doc.to_s - end -end diff --git a/lib/filters/prerelease_content.rb b/lib/filters/prerelease_content.rb deleted file mode 100644 index 37d1946c4..000000000 --- a/lib/filters/prerelease_content.rb +++ /dev/null @@ -1,23 +0,0 @@ -# encoding: utf-8 - -require 'nokogiri' - -class PrerelaseContent < ::Nanoc::Filter - identifier :prerelease_content - - def run(content, params = {}) - doc = Nokogiri::HTML(content) - # TODO(ts): We need to link to the same page or the first child without hardcoding /getting_started/. - warning = %(CAUTION: This page documents a pre-release version of #{params[:repository].split("/")[-1].split(".")[0].capitalize()}. - Check out the latest stable version.
) - - body = doc.css('body') - if first = body.children.first - first.add_previous_sibling(warning) - else - body << Nokogiri::HTML::DocumentFragment.parse(warning) - end - - doc.to_s - end -end diff --git a/lib/filters/version_warning.rb b/lib/filters/version_warning.rb new file mode 100644 index 000000000..f7ccfa48d --- /dev/null +++ b/lib/filters/version_warning.rb @@ -0,0 +1,44 @@ +# encoding: utf-8 + +require 'nokogiri' + +# VersionWarning adds a warning to the top of pre-release or outdated versioned +# documentation pages. +class VersionWarning < ::Nanoc::Filter + identifier :version_warning + + def run(content, params = {}) + case version_compare(params[:version], params[:latest]) + when 1 + type = 'a pre-release version' + when 0 + return content + when -1 + type = 'an old version' + end + + href = File.join(params[:canonical_root], params[:entrypoint]) + repo = File.basename(params[:repository_url], '.git').capitalize + warning = %(CAUTION: This page documents #{type} of #{repo}. + Check out the latest stable version.
) + + prepend_warning(content, warning) + end + + private + + def prepend_warning(content, warning) + doc = Nokogiri::HTML(content) + body = doc.css('body') + if first = body.children.first + first.add_previous_sibling(warning) + else + body << Nokogiri::HTML::DocumentFragment.parse(warning) + end + doc.to_s + end + + def version_compare(a, b) + a.split('.').map(&:to_i) <=> b.split('.').map(&:to_i) + end +end diff --git a/lib/helpers/nav.rb b/lib/helpers/nav.rb index a1bc6d585..7fda2a5d3 100644 --- a/lib/helpers/nav.rb +++ b/lib/helpers/nav.rb @@ -90,21 +90,16 @@ def self.versioned?(item) !item[:repo_docs].nil? end - # latest? returns true if the item is part of the version group "latest". - def self.latest?(opts) - opts[:name].include?('latest') - end - # current? returns true if the item is part of the selected version group. If # no group is selected (e.g. when a page outside of the versioned docs is # viewed), the latest version will be shown. def self.current?(opts, page) return false if opts.nil? || !page.respond_to?(:path) - if page.path.start_with?(opts[:version_root]) - page.path.start_with?(opts[:items_root]) + if page.path.start_with?(opts[:items_root]) + page.path.start_with?(opts[:version_root]) else - latest?(opts) + opts[:version_root] == opts[:canonical_root] end end @@ -115,7 +110,7 @@ def self.picker(items, page, active) selected = current?(v, page) ? 'selected="selected"' : '' # TODO(ts): Refactor and think about linking directly to the page of the same version. first = items - .find { |i| i.path.start_with?(v[:items_root]) } + .find { |i| i.path.start_with?(v[:version_root]) } .children.sort_by { |c| c[:sort_rank] || 0 }.first %() end diff --git a/nanoc.yaml b/nanoc.yaml index fa458b524..9730c8f6c 100644 --- a/nanoc.yaml +++ b/nanoc.yaml @@ -72,207 +72,18 @@ data_sources: type: repo_docs encoding: utf-8 identifier_type: legacy - items_root: /docs/prometheus/latest/ + items_root: /docs/prometheus/ config: - name: 'latest (2.21)' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.21 - # Use an entry like below to show documentation for release candidates. - # - - # type: repo_docs - # encoding: utf-8 - # items_root: /docs/prometheus/2.20/ - # identifier_type: legacy - # config: - # name: '2.20-rc' - # repository: https://github.com/prometheus/prometheus.git - # refspec: release-2.20 - # canonical: /docs/prometheus/latest/ - # prerelease: /docs/prometheus/latest/getting_started/ + entrypoint: /getting_started/ + repository_url: https://github.com/prometheus/prometheus.git - type: repo_docs encoding: utf-8 - items_root: /docs/prometheus/2.21/ identifier_type: legacy + items_root: /docs/alerting/ config: - name: '2.21' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.21 - canonical: /docs/prometheus/latest/ - - - type: repo_docs - encoding: utf-8 - items_root: /docs/prometheus/2.20/ - identifier_type: legacy - config: - name: '2.20' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.20 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - items_root: /docs/prometheus/2.19/ - identifier_type: legacy - config: - name: '2.19' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.19 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - items_root: /docs/prometheus/2.18/ - identifier_type: legacy - config: - name: '2.18' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.18 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/prometheus/2.17/ - config: - name: '2.17' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.17 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/prometheus/2.16/ - config: - name: '2.16' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.16 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/prometheus/2.15/ - config: - name: '2.15' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.15 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/prometheus/2.14/ - config: - name: '2.14' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.14 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/prometheus/2.13/ - config: - name: '2.13' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.13 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/prometheus/2.12/ - config: - name: '2.12' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.12 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/prometheus/2.11/ - config: - name: '2.11' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.11 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/prometheus/2.10/ - config: - name: '2.10' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.10 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/prometheus/2.9/ - config: - name: '2.9' - repository: https://github.com/prometheus/prometheus.git - refspec: release-2.9 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/prometheus/1.8/ - config: - name: '1.8' - repository: https://github.com/prometheus/prometheus.git - refspec: release-1.8 - canonical: /docs/prometheus/latest/ - outdated: /docs/prometheus/latest/getting_started/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/alerting/latest/ - config: - name: 'latest (0.21)' - repository: https://github.com/prometheus/alertmanager.git - refspec: release-0.21 - canonical: /docs/alerting/latest/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/alerting/0.21/ - config: - name: '0.21' - repository: https://github.com/prometheus/alertmanager.git - refspec: release-0.21 - canonical: /docs/alerting/latest/ - - - type: repo_docs - encoding: utf-8 - identifier_type: legacy - items_root: /docs/alerting/0.20/ - config: - name: '0.20' - repository: https://github.com/prometheus/alertmanager.git - refspec: release-0.20 - canonical: /docs/alerting/latest/ - outdated: /docs/alerting/latest/overview/ + entrypoint: /overview/ + repository_url: https://github.com/prometheus/alertmanager.git - type: filesystem items_root: /assets diff --git a/scripts/checkout.sh b/scripts/checkout.sh deleted file mode 100755 index 550b67df5..000000000 --- a/scripts/checkout.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash - -usage() { -me=$(basename $0) -cat <