mirror of
https://github.com/freeCodeCamp/devdocs
synced 2024-11-16 19:48:10 +01:00
Improve deployments to not require including all the docs' index.json in git
This commit is contained in:
parent
5c886a4e10
commit
8ecb9f37be
3 changed files with 45 additions and 3 deletions
6
Gemfile
6
Gemfile
|
@ -6,6 +6,9 @@ gem 'thor'
|
||||||
gem 'pry', '~> 0.11.0'
|
gem 'pry', '~> 0.11.0'
|
||||||
gem 'activesupport', '~> 5.2', require: false
|
gem 'activesupport', '~> 5.2', require: false
|
||||||
gem 'yajl-ruby', require: false
|
gem 'yajl-ruby', require: false
|
||||||
|
gem 'html-pipeline'
|
||||||
|
gem 'typhoeus'
|
||||||
|
gem 'nokogiri'
|
||||||
|
|
||||||
group :app do
|
group :app do
|
||||||
gem 'rack'
|
gem 'rack'
|
||||||
|
@ -31,9 +34,6 @@ group :development do
|
||||||
end
|
end
|
||||||
|
|
||||||
group :docs do
|
group :docs do
|
||||||
gem 'typhoeus'
|
|
||||||
gem 'nokogiri'
|
|
||||||
gem 'html-pipeline'
|
|
||||||
gem 'image_optim'
|
gem 'image_optim'
|
||||||
gem 'image_optim_pack', platforms: :ruby
|
gem 'image_optim_pack', platforms: :ruby
|
||||||
gem 'progress_bar', require: false
|
gem 'progress_bar', require: false
|
||||||
|
|
5
Rakefile
5
Rakefile
|
@ -13,6 +13,11 @@ end
|
||||||
namespace :assets do
|
namespace :assets do
|
||||||
desc 'Compile all assets'
|
desc 'Compile all assets'
|
||||||
task :precompile do
|
task :precompile do
|
||||||
|
Bundler.require
|
||||||
|
|
||||||
|
load 'tasks/docs.thor'
|
||||||
|
DocsCLI.new.prepare_deploy
|
||||||
|
|
||||||
load 'tasks/assets.thor'
|
load 'tasks/assets.thor'
|
||||||
AssetsCLI.new.compile
|
AssetsCLI.new.compile
|
||||||
end
|
end
|
||||||
|
|
|
@ -172,6 +172,43 @@ class DocsCLI < Thor
|
||||||
handle_doc_not_found_error(error)
|
handle_doc_not_found_error(error)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
desc 'prepare_deploy', 'Internal task executed before deployment'
|
||||||
|
def prepare_deploy
|
||||||
|
puts 'Docs -- BEGIN'
|
||||||
|
|
||||||
|
require 'open-uri'
|
||||||
|
require 'thread'
|
||||||
|
|
||||||
|
docs = Docs.all_versions
|
||||||
|
time = Time.now.to_i
|
||||||
|
mutex = Mutex.new
|
||||||
|
|
||||||
|
(1..6).map do
|
||||||
|
Thread.new do
|
||||||
|
while doc = docs.shift
|
||||||
|
dir = File.join(Docs.store_path, doc.path)
|
||||||
|
FileUtils.mkpath(dir)
|
||||||
|
|
||||||
|
['index.json', 'meta.json'].each do |filename|
|
||||||
|
open("https://docs.devdocs.io/#{doc.path}/#{filename}?#{time}") do |file|
|
||||||
|
mutex.synchronize do
|
||||||
|
path = File.join(dir, filename)
|
||||||
|
File.write(path, file.read)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Docs -- Downloaded #{doc.slug}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end.map(&:join)
|
||||||
|
|
||||||
|
puts 'Docs -- Generating manifest...'
|
||||||
|
generate_manifest
|
||||||
|
|
||||||
|
puts 'Docs -- DONE'
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def find_docs(names)
|
def find_docs(names)
|
||||||
|
|
Loading…
Reference in a new issue