mirror of https://github.com/docker/docs.git
65 lines
2.1 KiB
Ruby
65 lines
2.1 KiB
Ruby
require 'archive/zip'
|
|
require 'jekyll'
|
|
require 'json'
|
|
require 'octopress-hooks'
|
|
require 'open-uri'
|
|
require 'rake'
|
|
|
|
module Jekyll
|
|
def self.download(url, dest)
|
|
uri = URI.parse(url)
|
|
result = File.join(dest, File.basename(uri.path))
|
|
Jekyll.logger.info " Downloading #{url}"
|
|
IO.copy_stream(URI.open(url), result)
|
|
return result
|
|
end
|
|
|
|
class FetchRemote < Octopress::Hooks::Site
|
|
def pre_read(site)
|
|
beginning_time = Time.now
|
|
Jekyll.logger.info "Starting plugin fetch_remote.rb..."
|
|
site.config['fetch-remote'].each do |entry|
|
|
Jekyll.logger.info " Repo #{entry['repo']} (#{entry['ref']})"
|
|
Dir.mktmpdir do |tmpdir|
|
|
tmpfile = Jekyll.download("#{entry['repo']}/archive/#{entry['ref']}.zip", tmpdir)
|
|
Dir.mktmpdir do |ztmpdir|
|
|
Jekyll.logger.info " Extracting #{tmpfile}"
|
|
Archive::Zip.extract(
|
|
tmpfile,
|
|
ztmpdir,
|
|
:create => true
|
|
)
|
|
entry['paths'].each do |path|
|
|
Jekyll.logger.info " Copying files to ./#{path['dest']}/"
|
|
files = FileList[]
|
|
path['src'].each do |src|
|
|
if "#{src}".start_with?("!")
|
|
files.exclude(File.join(ztmpdir, "*/"+"#{src}".delete_prefix("!")))
|
|
else
|
|
files.include(File.join(ztmpdir, "*/#{src}"))
|
|
end
|
|
end
|
|
files.each do |file|
|
|
Jekyll.logger.info " #{file.delete_prefix(ztmpdir)}"
|
|
end
|
|
FileUtils.mkdir_p path['dest']
|
|
FileUtils.cp_r(files, path['dest'])
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
Jekyll.logger.info " Fixing up URLs in swagger files"
|
|
Dir.glob("./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
|