mirror of
https://github.com/inspec/inspec
synced 2024-11-26 06:30:26 +00:00
1750139dbb
Signed-off-by: Ryan Davis <zenspider@chef.io>
102 lines
2.7 KiB
Ruby
Executable file
102 lines
2.7 KiB
Ruby
Executable file
$LOAD_PATH.unshift "../lib"
|
|
|
|
require "uri"
|
|
require "net/http"
|
|
require "fastly"
|
|
|
|
require_relative "../tasks/docs.rb"
|
|
require_relative "../tasks/shared.rb"
|
|
|
|
task default: :www # at bottom
|
|
|
|
namespace :www do # rubocop:disable Metrics/BlockLength
|
|
desc "Builds the middleman site"
|
|
task :site do
|
|
sh("bundle exec middleman build --parallel --clean --no-verbose")
|
|
# TODO: remove:
|
|
Verify.file("build/index.html")
|
|
Verify.file("build/javascripts/all.js")
|
|
Verify.file("build/stylesheets/site.css")
|
|
end
|
|
|
|
desc "Assemble the website site from middleman"
|
|
task :assemble do
|
|
# do nothing for now
|
|
end
|
|
|
|
desc "Builds the full site locally"
|
|
task build: %w{www:site www:assemble}
|
|
|
|
task :clean do
|
|
rm_rf("build")
|
|
end
|
|
|
|
desc "Releases the site to gh-pages"
|
|
task :release do
|
|
src = File.expand_path "build"
|
|
|
|
unless system("git diff-index --quiet HEAD --")
|
|
warn "WARNING: You have uncommitted changes in this repository."
|
|
end
|
|
|
|
Dir.mktmpdir do |path|
|
|
sh("git worktree add #{path}/gh-pages gh-pages")
|
|
|
|
Dir.chdir "#{path}/gh-pages" do
|
|
rm_rf Dir["*"] # easiest way to account for removals
|
|
|
|
cp_r Dir["#{src}/*"], "." # copy build back
|
|
File.write("CNAME", "origin.inspec.io") # TODO: just check this file in?
|
|
|
|
sh "git add ." # add everything that changed
|
|
|
|
sh "git status"
|
|
if ENV["V"]
|
|
sh "git diff --cached"
|
|
end
|
|
|
|
if ENV["PUSH"]
|
|
sh "git commit -m 'website update'"
|
|
sh "git push -u origin gh-pages"
|
|
end
|
|
end
|
|
|
|
sh("git worktree remove -f #{path}/gh-pages")
|
|
end
|
|
end
|
|
|
|
desc "Flush the inspec.io cache at Fastly"
|
|
task :flush do
|
|
api_key = ENV["FASTLY_API_KEY"]
|
|
service_id = ENV["FASTLY_SERVICE_ID"]
|
|
|
|
unless api_key && service_id
|
|
puts
|
|
puts "WARNING: could not flush the Fastly cache for inspec.io."
|
|
puts "Please set FASTLY_API_KEY and FASTLY_SERVICE_ID environment variables"
|
|
puts "and run `rake www:flush`."
|
|
puts
|
|
next
|
|
end
|
|
|
|
Log.info "Flushing the Fastly cache"
|
|
|
|
begin
|
|
fastly_client = Fastly.new(api_key: api_key)
|
|
fastly_service = Fastly::Service.new({ id: service_id }, fastly_client)
|
|
purge_result = fastly_service.purge_all
|
|
rescue => e
|
|
puts "ERROR: Fastly cache could not be purged: #{e.class} - #{e.message}"
|
|
next
|
|
end
|
|
|
|
if purge_result["status"] == "ok"
|
|
puts "Success! The Fastly cache is purged."
|
|
else
|
|
puts "ERROR: Fastly cache could not be purged: #{purge_result}"
|
|
end
|
|
end
|
|
end
|
|
|
|
desc "Full website release: includes docs build, site build, and then release"
|
|
task www: %w{docs www:build www:release www:flush}
|