Merge pull request #5237 from ashmaroli/bundle2new

Merge pull request 5237
This commit is contained in:
jekyllbot 2016-09-20 15:32:25 -07:00 committed by GitHub
commit 504411e476
2 changed files with 37 additions and 2 deletions

View File

@ -11,6 +11,7 @@ module Jekyll
c.option "force", "--force", "Force creation even if PATH already exists"
c.option "blank", "--blank", "Creates scaffolding but with empty files"
c.option "skip-bundle", "--skip-bundle", "Skip 'bundle install'"
c.action do |args, options|
Jekyll::Commands::New.process(args, options)
@ -34,7 +35,7 @@ module Jekyll
create_site new_blog_path
end
Jekyll.logger.info "New jekyll site installed in #{new_blog_path.cyan}."
after_install(new_blog_path, options)
end
def create_blank_site(path)
@ -114,6 +115,27 @@ RUBY
def scaffold_path
"_posts/0000-00-00-welcome-to-jekyll.markdown.erb"
end
# After a new blog has been created, print a success notification and
# then automatically execute bundle install from within the new blog dir
# unless the user opts to generate a blank blog or skip 'bundle install'.
def after_install(path, options = {})
Jekyll.logger.info "New jekyll site installed in #{path.cyan}."
Jekyll.logger.info "Bundle install skipped." if options["skip-bundle"]
unless options["blank"] || options["skip-bundle"]
bundle_install path
end
end
def bundle_install(path)
Jekyll::External.require_with_graceful_fail "bundler"
Jekyll.logger.info "Running bundle install in #{path.cyan}..."
Dir.chdir(path) do
system("bundle", "install")
end
end
end
end
end

View File

@ -40,9 +40,12 @@ class TestNewCommand < JekyllUnitTest
should "display a success message" do
Jekyll::Commands::New.process(@args)
output = Jekyll.logger.messages.last
output = Jekyll.logger.messages[-3]
output_last = Jekyll.logger.messages.last
success_message = "New jekyll site installed in #{@full_path.cyan}."
bundle_message = "Running bundle install in #{@full_path.cyan}..."
assert_includes output, success_message
assert_includes output_last, bundle_message
end
should "copy the static files in site template to the new directory" do
@ -85,7 +88,10 @@ class TestNewCommand < JekyllUnitTest
should "create blank project" do
blank_contents = %w(/_drafts /_layouts /_posts /index.html)
capture_stdout { Jekyll::Commands::New.process(@args, "--blank") }
output = Jekyll.logger.messages.last
bundle_message = "Running bundle install in #{@full_path.cyan}..."
assert_same_elements blank_contents, dir_contents(@full_path)
refute_includes output, bundle_message
end
should "force created folder" do
@ -93,6 +99,13 @@ class TestNewCommand < JekyllUnitTest
output = capture_stdout { Jekyll::Commands::New.process(@args, "--force") }
assert_match(%r!New jekyll site installed in!, output)
end
should "skip bundle install when opted to" do
capture_stdout { Jekyll::Commands::New.process(@args, "--skip-bundle") }
output = Jekyll.logger.messages.last
bundle_message = "Bundle install skipped."
assert_includes output, bundle_message
end
end
context "when multiple args are given" do