resources/asciidoctor/lib/chunker/url_to_v3.rb (46 lines of code) (raw):

# frozen_string_literal: true module Chunker # Add a warning to the page with a link to docs v3 class UrlToV3 attr_reader :url def initialize(doc) current_url = doc.attr('current-url') outdir = doc.attr('outdir') current_url ||= 'index.html' m = mapping # This only works in CI. segments = outdir.sub('/tmp/docsbuild/target_repo/raw', '').split('/') version = segments[-1] || 'unknown' actual_url = get_actual_url(outdir, current_url) new_url = if m.key?(actual_url) m[actual_url] else '/docs' end render_warning(doc, version, new_url) end def mapping file_path = File.expand_path('v3-mapping.json', __dir__) JSON.parse(File.read(file_path)) if File.exist?(file_path) end def get_path_dir(outdir) segments = outdir.sub('/tmp/docsbuild/target_repo/raw', '').split('/') if segments.empty? '' elsif segments.length > 1 segments[0...-1].join('/') else segments[0] end end def get_actual_url(outdir, current_url) get_path_dir(outdir) + '/*/' + current_url end def render_warning(doc, version, new_url) if version == '8.18' @url = Asciidoctor::Block.new(doc, :pass, source: <<~HTML) <div id="url-to-v3" class="version-warning"> A newer version is available. Check out the <a href="https://www.elastic.co#{new_url}">latest documentation</a>. </div> HTML else @url = Asciidoctor::Block.new(doc, :pass, source: <<~HTML) <div id="url-to-v3" class="version-warning"> <strong>IMPORTANT</strong>: This documentation is no longer updated. Refer to <a href="https://www.elastic.co/support/eol">Elastic's version policy</a> and the <a href="https://www.elastic.co#{new_url}">latest documentation</a>. </div> HTML end end end end