forked from home-assistant/home-assistant.io
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cleanup Rakefile by removing obsolete tasks (home-assistant#11622)
- Loading branch information
Showing
1 changed file
with
0 additions
and
241 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,28 +2,13 @@ require "rubygems" | |
require "bundler/setup" | ||
require "stringex" | ||
|
||
## -- Rsync Deploy config -- ## | ||
# Be sure your public key is listed in your server's ~/.ssh/authorized_keys file | ||
ssh_user = "[email protected]" | ||
ssh_port = "22" | ||
document_root = "~/website.com/" | ||
rsync_delete = false | ||
rsync_args = "" # Any extra arguments to pass to rsync | ||
deploy_default = "push" | ||
|
||
# This will be configured for you when you run config_deploy | ||
deploy_branch = "master" | ||
|
||
## -- Misc Configs -- ## | ||
|
||
public_dir = "public/" # compiled site directory | ||
source_dir = "source" # source file directory | ||
blog_index_dir = 'source/blog' # directory for your blog's index page (if you put your index in source/blog/index.html, set this to 'source/blog') | ||
deploy_dir = "_deploy" # deploy directory (for Github pages deployment) | ||
stash_dir = "_stash" # directory to stash posts for speedy generation | ||
components_dir = "_components" # directory for component files | ||
posts_dir = "_posts" # directory for blog files | ||
themes_dir = ".themes" # directory for blog files | ||
new_post_ext = "markdown" # default new post file extension when using the new_post task | ||
new_page_ext = "markdown" # default new page file extension when using the new_page task | ||
server_port = "4000" # port for preview server eg. localhost:4000 | ||
|
@@ -33,22 +18,6 @@ if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil | |
`chcp 65001` | ||
end | ||
|
||
desc "Initial setup for Octopress: copies the default theme into the path of Jekyll's generator. Rake install defaults to rake install[classic] to install a different theme run rake install[some_theme_name]" | ||
task :install, :theme do |t, args| | ||
if File.directory?(source_dir) || File.directory?("sass") | ||
abort("rake aborted!") if ask("A theme is already installed, proceeding will overwrite existing files. Are you sure?", ['y', 'n']) == 'n' | ||
end | ||
# copy theme into working Jekyll directories | ||
theme = args.theme || 'classic' | ||
puts "## Copying "+theme+" theme into ./#{source_dir} and ./sass" | ||
mkdir_p source_dir | ||
cp_r "#{themes_dir}/#{theme}/source/.", source_dir | ||
mkdir_p "sass" | ||
cp_r "#{themes_dir}/#{theme}/sass/.", "sass" | ||
mkdir_p "#{source_dir}/#{posts_dir}" | ||
mkdir_p public_dir | ||
end | ||
|
||
####################### | ||
# Working with Jekyll # | ||
####################### | ||
|
@@ -198,216 +167,6 @@ task :clean do | |
rm_rf [Dir.glob(".pygments-cache/**"), Dir.glob(".gist-cache/**"), Dir.glob(".sass-cache/**"), "source/stylesheets/screen.css"] | ||
end | ||
|
||
desc "Move sass to sass.old, install sass theme updates, replace sass/custom with sass.old/custom" | ||
task :update_style, :theme do |t, args| | ||
theme = args.theme || 'classic' | ||
if File.directory?("sass.old") | ||
puts "removed existing sass.old directory" | ||
rm_r "sass.old", :secure=>true | ||
end | ||
mv "sass", "sass.old" | ||
puts "## Moved styles into sass.old/" | ||
cp_r "#{themes_dir}/"+theme+"/sass/", "sass", :remove_destination=>true | ||
cp_r "sass.old/custom/.", "sass/custom/", :remove_destination=>true | ||
puts "## Updated Sass ##" | ||
end | ||
|
||
desc "Move source to source.old, install source theme updates, replace source/_includes/navigation.html with source.old's navigation" | ||
task :update_source, :theme do |t, args| | ||
theme = args.theme || 'classic' | ||
if File.directory?("#{source_dir}.old") | ||
puts "## Removed existing #{source_dir}.old directory" | ||
rm_r "#{source_dir}.old", :secure=>true | ||
end | ||
mkdir "#{source_dir}.old" | ||
cp_r "#{source_dir}/.", "#{source_dir}.old" | ||
puts "## Copied #{source_dir} into #{source_dir}.old/" | ||
cp_r "#{themes_dir}/"+theme+"/source/.", source_dir, :remove_destination=>true | ||
cp_r "#{source_dir}.old/_includes/custom/.", "#{source_dir}/_includes/custom/", :remove_destination=>true | ||
cp "#{source_dir}.old/favicon.png", source_dir | ||
mv "#{source_dir}/index.html", "#{blog_index_dir}", :force=>true if blog_index_dir != source_dir | ||
cp "#{source_dir}.old/index.html", source_dir if blog_index_dir != source_dir && File.exists?("#{source_dir}.old/index.html") | ||
puts "## Updated #{source_dir} ##" | ||
end | ||
|
||
############## | ||
# Deploying # | ||
############## | ||
|
||
desc "Default deploy task" | ||
task :deploy do | ||
# Check if preview posts exist, which should not be published | ||
if File.exists?(".preview-mode") | ||
puts "## Found posts in preview mode, regenerating files ..." | ||
File.delete(".preview-mode") | ||
Rake::Task[:generate].execute | ||
end | ||
|
||
Rake::Task[:copydot].invoke(source_dir, public_dir) | ||
Rake::Task["#{deploy_default}"].execute | ||
end | ||
|
||
desc "Generate website and deploy" | ||
task :gen_deploy => [:integrate, :generate, :deploy] do | ||
end | ||
|
||
desc "copy dot files for deployment" | ||
task :copydot, :source, :dest do |t, args| | ||
FileList["#{args.source}/**/.*"].exclude("**/.", "**/..", "**/.DS_Store", "**/._*").each do |file| | ||
cp_r file, file.gsub(/#{args.source}/, "#{args.dest}") unless File.directory?(file) | ||
end | ||
end | ||
|
||
desc "Deploy website via rsync" | ||
task :rsync do | ||
exclude = "" | ||
if File.exists?('./rsync-exclude') | ||
exclude = "--exclude-from '#{File.expand_path('./rsync-exclude')}'" | ||
end | ||
puts "## Deploying website via Rsync" | ||
ok_failed system("rsync -avze 'ssh -p #{ssh_port}' #{exclude} #{rsync_args} #{"--delete" unless rsync_delete == false} #{public_dir}/ #{ssh_user}:#{document_root}") | ||
end | ||
|
||
desc "deploy public directory to github pages" | ||
multitask :push do | ||
puts "## Deploying branch to Github Pages " | ||
puts "## Pulling any updates from Github Pages " | ||
cd "#{deploy_dir}" do | ||
system "git checkout #{deploy_branch}" | ||
end | ||
(Dir["#{deploy_dir}/*"]).each { |f| rm_rf(f) } | ||
Rake::Task[:copydot].invoke(public_dir, deploy_dir) | ||
puts "\n## Copying #{public_dir} to #{deploy_dir}" | ||
cp_r "#{public_dir}/.", deploy_dir | ||
cd "#{deploy_dir}" do | ||
if ENV["TRAVIS"] == 'true' | ||
system 'git config user.name "Travis CI"' | ||
system 'git config user.email "[email protected]"' | ||
end | ||
|
||
system "git add -A" | ||
message = "Site updated at #{Time.now.utc}" | ||
puts "\n## Committing: #{message}" | ||
system "git commit -m \"#{message}\"" | ||
|
||
puts "\n## Pushing generated #{deploy_dir} website" | ||
if ENV["GH_TOKEN"].nil? | ||
Bundler.with_clean_env { system "git push origin #{deploy_branch}" } | ||
else | ||
puts "## Using GH_TOKEN" | ||
new_origin = `git remote -v | grep origin | grep push | awk '{print $2}'`.chomp.sub('//', "//#{ENV['GH_TOKEN']}@") | ||
system "git remote add origin-auth #{new_origin} > /dev/null 2>&1" | ||
system "git push --quiet origin-auth #{deploy_branch} > /dev/null 2>&1" | ||
end | ||
|
||
puts "\n## Github Pages deploy complete" | ||
end | ||
end | ||
|
||
desc "Update configurations to support publishing to root or sub directory" | ||
task :set_root_dir, :dir do |t, args| | ||
puts ">>> !! Please provide a directory, eg. rake config_dir[publishing/subdirectory]" unless args.dir | ||
if args.dir | ||
if args.dir == "/" | ||
dir = "" | ||
else | ||
dir = "/" + args.dir.sub(/(\/*)(.+)/, "\\2").sub(/\/$/, ''); | ||
end | ||
rakefile = IO.read(__FILE__) | ||
rakefile.sub!(/public_dir(\s*)=(\s*)(["'])[\w\-\/]*["']/, "public_dir\\1=\\2\\3public#{dir}\\3") | ||
File.open(__FILE__, 'w') do |f| | ||
f.write rakefile | ||
end | ||
compass_config = IO.read('config.rb') | ||
compass_config.sub!(/http_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_path\\1=\\2\\3#{dir}/\\3") | ||
compass_config.sub!(/http_images_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_images_path\\1=\\2\\3#{dir}/images\\3") | ||
compass_config.sub!(/http_fonts_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_fonts_path\\1=\\2\\3#{dir}/fonts\\3") | ||
compass_config.sub!(/css_dir(\s*)=(\s*)(["'])[\w\-\/]*["']/, "css_dir\\1=\\2\\3public#{dir}/stylesheets\\3") | ||
File.open('config.rb', 'w') do |f| | ||
f.write compass_config | ||
end | ||
jekyll_config = IO.read('_config.yml') | ||
jekyll_config.sub!(/^destination:.+$/, "destination: public#{dir}") | ||
jekyll_config.sub!(/^subscribe_rss:\s*\/.+$/, "subscribe_rss: #{dir}/atom.xml") | ||
jekyll_config.sub!(/^root:.*$/, "root: /#{dir.sub(/^\//, '')}") | ||
File.open('_config.yml', 'w') do |f| | ||
f.write jekyll_config | ||
end | ||
rm_rf public_dir | ||
mkdir_p "#{public_dir}#{dir}" | ||
puts "## Site's root directory is now '/#{dir.sub(/^\//, '')}' ##" | ||
end | ||
end | ||
|
||
desc "Set up _deploy folder and deploy branch for Github Pages deployment" | ||
task :setup_github_pages, :repo do |t, args| | ||
if args.repo | ||
repo_url = args.repo | ||
else | ||
puts "Enter the read/write url for your repository" | ||
puts "(For example, '[email protected]:your_username/your_username.github.io.git)" | ||
puts " or 'https://github.com/your_username/your_username.github.io')" | ||
repo_url = get_stdin("Repository url: ") | ||
end | ||
protocol = (repo_url.match(/(^git)@/).nil?) ? 'https' : 'git' | ||
if protocol == 'git' | ||
user = repo_url.match(/:([^\/]+)/)[1] | ||
else | ||
user = repo_url.match(/github\.com\/([^\/]+)/)[1] | ||
end | ||
branch = (repo_url.match(/\/[\w-]+\.github\.(?:io|com)/).nil?) ? 'gh-pages' : 'master' | ||
project = (branch == 'gh-pages') ? repo_url.match(/\/([^\.]+)/)[1] : '' | ||
unless (`git remote -v` =~ /origin.+?octopress(?:\.git)?/).nil? | ||
# If octopress is still the origin remote (from cloning) rename it to octopress | ||
system "git remote rename origin octopress" | ||
if branch == 'master' | ||
# If this is a user/organization pages repository, add the correct origin remote | ||
# and checkout the source branch for committing changes to the blog source. | ||
system "git remote add origin #{repo_url}" | ||
puts "Added remote #{repo_url} as origin" | ||
system "git config branch.master.remote origin" | ||
puts "Set origin as default remote" | ||
system "git branch -m master source" | ||
puts "Master branch renamed to 'source' for committing your blog source files" | ||
else | ||
unless !public_dir.match("#{project}").nil? | ||
system "rake set_root_dir[#{project}]" | ||
end | ||
end | ||
end | ||
url = blog_url(user, project) | ||
jekyll_config = IO.read('_config.yml') | ||
jekyll_config.sub!(/^url:.*$/, "url: #{url}") | ||
File.open('_config.yml', 'w') do |f| | ||
f.write jekyll_config | ||
end | ||
rm_rf deploy_dir | ||
mkdir deploy_dir | ||
cd "#{deploy_dir}" do | ||
system "git init" | ||
system 'echo "My Octopress Page is coming soon …" > index.html' | ||
system "git add ." | ||
system "git commit -m \"Octopress init\"" | ||
system "git branch -m gh-pages" unless branch == 'master' | ||
system "git remote add origin #{repo_url}" | ||
rakefile = IO.read(__FILE__) | ||
rakefile.sub!(/deploy_branch(\s*)=(\s*)(["'])[\w-]*["']/, "deploy_branch\\1=\\2\\3#{branch}\\3") | ||
rakefile.sub!(/deploy_default(\s*)=(\s*)(["'])[\w-]*["']/, "deploy_default\\1=\\2\\3push\\3") | ||
File.open(__FILE__, 'w') do |f| | ||
f.write rakefile | ||
end | ||
end | ||
puts "\n---\n## Now you can deploy to #{repo_url} with `rake deploy` ##" | ||
end | ||
|
||
def ok_failed(condition) | ||
if (condition) | ||
puts "OK" | ||
else | ||
puts "FAILED" | ||
end | ||
end | ||
|
||
def get_stdin(message) | ||
print message | ||
STDIN.gets.chomp | ||
|