From d9da7cbd765a03a3a1eefb909e62a29218bba407 Mon Sep 17 00:00:00 2001 From: Ruslan Korolev Date: Fri, 22 Aug 2014 11:39:53 +0400 Subject: [PATCH] add class << self idiom to new command --- lib/jekyll/commands/new.rb | 120 +++++++++++++++++++------------------ 1 file changed, 61 insertions(+), 59 deletions(-) diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index ca5ed164..724a1d8d 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -3,78 +3,80 @@ require 'erb' module Jekyll module Commands class New < Command - def self.init_with_program(prog) - prog.command(:new) do |c| - c.syntax 'new PATH' - c.description 'Creates a new Jekyll site scaffold in PATH' + class << self + def init_with_program(prog) + prog.command(:new) do |c| + c.syntax 'new PATH' + c.description 'Creates a new Jekyll site scaffold in PATH' - c.option 'force', '--force', 'Force creation even if PATH already exists' - c.option 'blank', '--blank', 'Creates scaffolding but with empty files' - - c.action do |args, options| - Jekyll::Commands::New.process(args, options) - end - end - end - - def self.process(args, options = {}) - raise ArgumentError.new('You must specify a path.') if args.empty? - - new_blog_path = File.expand_path(args.join(" "), Dir.pwd) - FileUtils.mkdir_p new_blog_path - if preserve_source_location?(new_blog_path, options) - Jekyll.logger.abort_with "Conflict:", "#{new_blog_path} exists and is not empty." - end - - if options["blank"] - create_blank_site new_blog_path - else - create_sample_files new_blog_path - - File.open(File.expand_path(initialized_post_name, new_blog_path), "w") do |f| - f.write(scaffold_post_content) + c.option 'force', '--force', 'Force creation even if PATH already exists' + c.option 'blank', '--blank', 'Creates scaffolding but with empty files' + + c.action do |args, options| + Jekyll::Commands::New.process(args, options) + end end end - Jekyll.logger.info "New jekyll site installed in #{new_blog_path}." - end + def process(args, options = {}) + raise ArgumentError.new('You must specify a path.') if args.empty? - def self.create_blank_site(path) - Dir.chdir(path) do - FileUtils.mkdir(%w(_layouts _posts _drafts)) - FileUtils.touch("index.html") + new_blog_path = File.expand_path(args.join(" "), Dir.pwd) + FileUtils.mkdir_p new_blog_path + if preserve_source_location?(new_blog_path, options) + Jekyll.logger.abort_with "Conflict:", "#{new_blog_path} exists and is not empty." + end + + if options["blank"] + create_blank_site new_blog_path + else + create_sample_files new_blog_path + + File.open(File.expand_path(initialized_post_name, new_blog_path), "w") do |f| + f.write(scaffold_post_content) + end + end + + Jekyll.logger.info "New jekyll site installed in #{new_blog_path}." end - end - def self.scaffold_post_content - ERB.new(File.read(File.expand_path(scaffold_path, site_template))).result - end + def create_blank_site(path) + Dir.chdir(path) do + FileUtils.mkdir(%w(_layouts _posts _drafts)) + FileUtils.touch("index.html") + end + end - # Internal: Gets the filename of the sample post to be created - # - # Returns the filename of the sample post, as a String - def self.initialized_post_name - "_posts/#{Time.now.strftime('%Y-%m-%d')}-welcome-to-jekyll.markdown" - end + def scaffold_post_content + ERB.new(File.read(File.expand_path(scaffold_path, site_template))).result + end - private + # Internal: Gets the filename of the sample post to be created + # + # Returns the filename of the sample post, as a String + def initialized_post_name + "_posts/#{Time.now.strftime('%Y-%m-%d')}-welcome-to-jekyll.markdown" + end - def self.preserve_source_location?(path, options) - !options["force"] && !Dir["#{path}/**/*"].empty? - end + private - def self.create_sample_files(path) - FileUtils.cp_r site_template + '/.', path - FileUtils.rm File.expand_path(scaffold_path, path) - end + def preserve_source_location?(path, options) + !options["force"] && !Dir["#{path}/**/*"].empty? + end - def self.site_template - File.expand_path("../../site_template", File.dirname(__FILE__)) - end + def create_sample_files(path) + FileUtils.cp_r site_template + '/.', path + FileUtils.rm File.expand_path(scaffold_path, path) + end - def self.scaffold_path - "_posts/0000-00-00-welcome-to-jekyll.markdown.erb" - end + def site_template + File.expand_path("../../site_template", File.dirname(__FILE__)) + end + + def scaffold_path + "_posts/0000-00-00-welcome-to-jekyll.markdown.erb" + end + end end end end