Refactor Commands::New a bit and remove scaffold post once copied.

This commit is contained in:
Jonathan Roes 2013-03-12 00:48:22 -04:00
parent b71ec624f8
commit 7a86d901f1
1 changed files with 28 additions and 9 deletions

View File

@ -5,19 +5,19 @@ module Jekyll
class New < Command
def self.process(args)
path = File.expand_path(args.join(" "), Dir.pwd)
template_site = File.expand_path("../../site_template", File.dirname(__FILE__))
FileUtils.mkdir_p path
sample_files = Dir["#{template_site}/**/*"].reject {|f| File.extname(f) == ".erb"}
FileUtils.cp_r sample_files, path
File.open(File.expand_path(self.initialized_post_name, path), "w") do |f|
new_blog_path = File.expand_path(args.join(" "), Dir.pwd)
FileUtils.mkdir_p new_blog_path
create_sample_files! new_blog_path
File.open(File.expand_path(self.initialized_post_name, new_blog_path), "w") do |f|
f.write(self.scaffold_post_content(template_site))
end
puts "New jekyll site installed in #{path}."
puts "New jekyll site installed in #{new_blog_path}."
end
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
# Internal: Gets the filename of the sample post to be created
@ -26,6 +26,25 @@ module Jekyll
def self.initialized_post_name
"_posts/#{Time.now.strftime('%Y-%m-%d')}-welcome-to-jekyll.markdown"
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