mirror of https://github.com/docker/docs.git
jekyll: move relative URLs fix from Dockerfile to Jekyll plugin
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
parent
a288b444be
commit
d2fca0eb8e
11
Dockerfile
11
Dockerfile
|
@ -47,16 +47,11 @@ ARG JEKYLL_ENV
|
||||||
ARG DOCS_URL
|
ARG DOCS_URL
|
||||||
ENV TARGET=/out
|
ENV TARGET=/out
|
||||||
RUN --mount=type=bind,target=.,rw \
|
RUN --mount=type=bind,target=.,rw \
|
||||||
--mount=type=cache,target=/src/.jekyll-cache <<EOT
|
--mount=type=cache,target=/src/.jekyll-cache <<EOT
|
||||||
set -eu
|
set -eu
|
||||||
CONFIG_FILES=_config.yml$([ "$JEKYLL_ENV" = "production" ] && echo ",_config_production.yml" || true)
|
CONFIG_FILES=_config.yml$([ "$JEKYLL_ENV" = "production" ] && echo ",_config_production.yml" || true)
|
||||||
(
|
|
||||||
set -x
|
set -x
|
||||||
bundle exec jekyll build --profile -d ${TARGET} --config ${CONFIG_FILES}
|
bundle exec jekyll build --profile -d ${TARGET} --config ${CONFIG_FILES}
|
||||||
)
|
|
||||||
find ${TARGET} -type f -name '*.html' | while read i; do
|
|
||||||
sed -i "s#\(<a[^>]* href=\"\)${DOCS_URL}/#\1/#g" "$i"
|
|
||||||
done
|
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
# htmlproofer checks for broken links
|
# htmlproofer checks for broken links
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
require 'jekyll'
|
||||||
|
require 'octopress-hooks'
|
||||||
|
|
||||||
|
require_relative 'util.rb'
|
||||||
|
|
||||||
|
module Jekyll
|
||||||
|
class FetchRemote < Octopress::Hooks::Site
|
||||||
|
def post_read(site)
|
||||||
|
beginning_time = Time.now
|
||||||
|
Jekyll.logger.info "Starting plugin fix_swagger.rb..."
|
||||||
|
|
||||||
|
files = Dir.glob(%w[./docker-hub/api/*.yaml ./engine/api/*.yaml])
|
||||||
|
Jekyll.logger.info " Fixing up #{files.size} swagger file(s)..."
|
||||||
|
files.each do |f|
|
||||||
|
Jekyll.logger.info " #{f}"
|
||||||
|
text = File.read(f)
|
||||||
|
replace = text.gsub(get_docs_url, "")
|
||||||
|
File.open(f, "w") { |f2| f2.puts replace }
|
||||||
|
end
|
||||||
|
|
||||||
|
end_time = Time.now
|
||||||
|
Jekyll.logger.info "done in #{(end_time - beginning_time)} seconds"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,29 @@
|
||||||
|
require 'jekyll'
|
||||||
|
require 'octopress-hooks'
|
||||||
|
|
||||||
|
require_relative 'util.rb'
|
||||||
|
|
||||||
|
module Jekyll
|
||||||
|
class FetchRemote < Octopress::Hooks::Site
|
||||||
|
def post_write(site)
|
||||||
|
beginning_time = Time.now
|
||||||
|
Jekyll.logger.info "Starting plugin fix_url.rb..."
|
||||||
|
|
||||||
|
# TODO: use dynamic URL from util.get_docs_url instead of hardcoded one
|
||||||
|
# but needs to remove first all absolute URLs in our code base.
|
||||||
|
docs_url = "https://docs.docker.com"
|
||||||
|
|
||||||
|
dest = site.config['destination'] || '_site'
|
||||||
|
files = Dir.glob("#{dest}/**/*.html")
|
||||||
|
Jekyll.logger.info " Fixing up URLs in #{files.size} html file(s) to be relative"
|
||||||
|
files.each do|f|
|
||||||
|
text = File.read(f)
|
||||||
|
replace = text.gsub(/(<a[^>]* href=\")#{docs_url}/, '\1')
|
||||||
|
File.open(f, "w") { |f2| f2.puts replace }
|
||||||
|
end
|
||||||
|
|
||||||
|
end_time = Time.now
|
||||||
|
Jekyll.logger.info "done in #{(end_time - beginning_time)} seconds"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,22 +0,0 @@
|
||||||
require 'jekyll'
|
|
||||||
require 'octopress-hooks'
|
|
||||||
|
|
||||||
module Jekyll
|
|
||||||
class FetchRemote < Octopress::Hooks::Site
|
|
||||||
def post_read(site)
|
|
||||||
beginning_time = Time.now
|
|
||||||
Jekyll.logger.info "Starting plugin fix_urls.rb..."
|
|
||||||
|
|
||||||
Jekyll.logger.info " Fixing up URLs in swagger files"
|
|
||||||
Dir.glob(%w[./docker-hub/api/*.yaml ./engine/api/*.yaml]) do |file_name|
|
|
||||||
Jekyll.logger.info " #{file_name}"
|
|
||||||
text = File.read(file_name)
|
|
||||||
replace = text.gsub("https://docs.docker.com", "")
|
|
||||||
File.open(file_name, "w") { |file| file.puts replace }
|
|
||||||
end
|
|
||||||
|
|
||||||
end_time = Time.now
|
|
||||||
Jekyll.logger.info "done in #{(end_time - beginning_time)} seconds"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,16 +1,15 @@
|
||||||
|
require_relative 'util.rb'
|
||||||
|
|
||||||
Jekyll::Hooks.register :site, :post_write do |site|
|
Jekyll::Hooks.register :site, :post_write do |site|
|
||||||
beginning_time = Time.now
|
beginning_time = Time.now
|
||||||
Jekyll.logger.info "Starting plugin update_sitemap.rb..."
|
Jekyll.logger.info "Starting plugin update_sitemap.rb..."
|
||||||
|
|
||||||
sitemap_path = File.join(site.dest, 'sitemap.xml')
|
sitemap_path = File.join(site.dest, 'sitemap.xml')
|
||||||
# DEPLOY_URL is from Netlify for preview of sitemap on PR
|
|
||||||
# https://docs.netlify.com/configure-builds/environment-variables/#deploy-urls-and-metadata
|
|
||||||
docs_url = ENV['DEPLOY_URL'] || ENV['DOCS_URL'] || 'http://localhost:4000'
|
|
||||||
|
|
||||||
if File.exist?(sitemap_path)
|
if File.exist?(sitemap_path)
|
||||||
sitemap_file = File.read(sitemap_path)
|
sitemap_file = File.read(sitemap_path)
|
||||||
replace = sitemap_file.gsub!("<loc>/", "<loc>#{docs_url}/")
|
replace = sitemap_file.gsub!("<loc>/", "<loc>#{get_docs_url}/")
|
||||||
Jekyll.logger.info " Replacing '<loc>/' with '<loc>#{docs_url}/' in #{sitemap_path}"
|
Jekyll.logger.info " Replacing '<loc>/' with '<loc>#{get_docs_url}/' in #{sitemap_path}"
|
||||||
File.open(sitemap_path, "w") { |file| file.puts replace }
|
File.open(sitemap_path, "w") { |file| file.puts replace }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
def get_docs_url
|
||||||
|
# DEPLOY_URL is from Netlify for preview
|
||||||
|
# https://docs.netlify.com/configure-builds/environment-variables/#deploy-urls-and-metadata
|
||||||
|
ENV['DEPLOY_URL'] || ENV['DOCS_URL'] || 'https://docs.docker.com'
|
||||||
|
end
|
Loading…
Reference in New Issue