Merge pull request #851 from jroes/jekyll-new

Make `jekyll new` work when installed via `gem install`
This commit is contained in:
Parker Moore 2013-03-12 11:34:08 -07:00
commit 74def64bef
3 changed files with 31 additions and 11 deletions

View File

@ -48,7 +48,7 @@ Gem::Specification.new do |s|
s.add_development_dependency('sequel', "~> 3.42") s.add_development_dependency('sequel', "~> 3.42")
s.add_development_dependency('htmlentities', "~> 4.3") s.add_development_dependency('htmlentities', "~> 4.3")
s.add_development_dependency('hpricot', "~> 0.8") s.add_development_dependency('hpricot', "~> 0.8")
# = MANIFEST = # = MANIFEST =
s.files = %w[ s.files = %w[
.travis.yml .travis.yml
@ -75,6 +75,7 @@ Gem::Specification.new do |s|
lib/jekyll/command.rb lib/jekyll/command.rb
lib/jekyll/commands/build.rb lib/jekyll/commands/build.rb
lib/jekyll/commands/migrate.rb lib/jekyll/commands/migrate.rb
lib/jekyll/commands/new.rb
lib/jekyll/commands/serve.rb lib/jekyll/commands/serve.rb
lib/jekyll/converter.rb lib/jekyll/converter.rb
lib/jekyll/converters/identity.rb lib/jekyll/converters/identity.rb
@ -112,7 +113,7 @@ Gem::Specification.new do |s|
lib/site_template/_config.yml lib/site_template/_config.yml
lib/site_template/_layouts/default.html lib/site_template/_layouts/default.html
lib/site_template/_layouts/post.html lib/site_template/_layouts/post.html
lib/site_template/_posts/.gitkeep lib/site_template/_posts/0000-00-00-sample_post.markdown.erb
lib/site_template/css/screen.css lib/site_template/css/screen.css
lib/site_template/css/syntax.css lib/site_template/css/syntax.css
lib/site_template/images/.gitkeep lib/site_template/images/.gitkeep

View File

@ -3,21 +3,21 @@ require 'erb'
module Jekyll module Jekyll
module Commands module Commands
class New < Command class New < Command
def self.process(args) def self.process(args)
path = File.expand_path(args.join(" "), Dir.pwd) new_blog_path = File.expand_path(args.join(" "), Dir.pwd)
template_site = File.expand_path("../../site_template", File.dirname(__FILE__)) FileUtils.mkdir_p new_blog_path
FileUtils.mkdir_p path
sample_files = Dir["#{template_site}/**/*"].reject {|f| File.extname(f) == ".erb"} create_sample_files! new_blog_path
FileUtils.cp_r sample_files, path
File.open(File.expand_path(self.initialized_post_name, path), "w") do |f| File.open(File.expand_path(self.initialized_post_name, new_blog_path), "w") do |f|
f.write(self.scaffold_post_content(template_site)) f.write(self.scaffold_post_content(template_site))
end end
puts "New jekyll site installed in #{path}." puts "New jekyll site installed in #{new_blog_path}."
end end
def self.scaffold_post_content(template_site) def self.scaffold_post_content(template_site)
ERB.new(File.read(File.expand_path("_posts/0000-00-00-sample_post.markdown.erb", template_site))).result ERB.new(File.read(File.expand_path(scaffold_path, template_site))).result
end end
# Internal: Gets the filename of the sample post to be created # Internal: Gets the filename of the sample post to be created
@ -26,6 +26,25 @@ module Jekyll
def self.initialized_post_name def self.initialized_post_name
"_posts/#{Time.now.strftime('%Y-%m-%d')}-welcome-to-jekyll.markdown" "_posts/#{Time.now.strftime('%Y-%m-%d')}-welcome-to-jekyll.markdown"
end end
private
def self.create_sample_files!(path)
FileUtils.cp_r sample_files, path
FileUtils.rm File.expand_path(scaffold_path, path)
end
def self.sample_files
Dir.glob("#{template_site}/**/*")
end
def self.template_site
File.expand_path("../../site_template", File.dirname(__FILE__))
end
def self.scaffold_path
"_posts/0000-00-00-sample_post.markdown.erb"
end
end end
end end
end end