integtest/spec/helper/shell_repo.rb (33 lines of code) (raw):
# frozen_string_literal: true
require 'fileutils'
require_relative 'sh'
##
# Creates a repository with fonts in it so we don't have to add them over and
# over and over and over again.
module ShellRepo
extend Sh
def self.initalize
@built_shell_repo = false
end
##
# Builds a "shell" repository that contains large resources that have to be
# added to every docs build. It is *much* more efficient to build it one
# time rather than add those resources to the build over and over again.
def self.build!
return if @built_shell_repo
sh 'git init /tmp/shell'
copy_fonts
build_readme
Dir.chdir '/tmp/shell' do
sh 'git add .'
sh 'git commit -m "add shell resources"'
end
@built_shell_repo = true
end
##
# Copy the fonts that take so long to add to git.
def self.copy_fonts
prefix = '/docs_build/resources/web/lib'
%w[raw html].each do |dest|
FileUtils.mkdir_p "/tmp/shell/#{dest}/static"
%w[inter noto-sans-japanese].each do |font|
sh "cp -r #{prefix}/#{font}/*.woff* /tmp/shell/#{dest}/static"
end
end
end
##
# Build the readme for the repo. This is mostly there to make the docs build's
# sparse checkout code happy.
def self.build_readme
File.open('/tmp/shell/README', 'w:UTF-8') do |f|
f.write 'Shell repository with fonts.'
end
end
end