lib/octopress/commands/new.rb in octopress-3.0.0.alpha2 vs lib/octopress/commands/new.rb in octopress-3.0.0.alpha3

- old
+ new

@@ -1,21 +1,59 @@ +require 'jekyll' + module Octopress - module Commands - class New < Command - class << self - def process(args = nil, options = nil) - source = File.join(Octopress.lib_root, 'octopress/scaffold/site') - destination = process_args(args) - FileUtils.cp_r "#{source}/.", "#{destination}/" + class New < Command + def self.init_with_program(p) + p.command(:new) do |c| + c.syntax 'octopress 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| + abort "You must specify a path." if args.empty? + ::Jekyll::Commands::New.process(args, options.to_symbol_keys) end - def process_args(args) - if args.nil? || args.empty? - Octopress.logger.error "You must specify a destination for your new site." - raise ArgumentError + c.command(:page) do |page_command| + page_command.syntax 'octopress new page PATH [options]' + page_command.description 'Add a new page to your Jekyll site.' + page_command.option 'title', '--title TITLE', 'String to be added as the title in the YAML front-matter.' + add_common_options page_command + + page_command.action do |args, options| + abort "You must specify a path." if args.empty? + options['path'] = args.first + Page.new(options).write end - args.first end + + c.command(:post) do |post_command| + post_command.syntax 'octopress new post TITLE [options]' + post_command.description 'Add a new post to your Jekyll site.' + add_common_options post_command + + post_command.action do |args, options| + options['title'] = args.first + Post.new(options).write + end + end + + c.command(:draft) do |draft_command| + draft_command.syntax 'octopress new draft TITLE [options]' + draft_command.description 'Add a new draft post to your Jekyll site.' + add_common_options draft_command + + draft_command.action do |args, options| + options['title'] = args.first + Draft.new(options).write + end + end end + end + def self.add_common_options(c) + c.option 'date', '--date DATE', 'String that is parseable by Time#parse. (default: Time.now.iso8601)' + c.option 'template', '--template PATH', 'Path to a post or page template.' + c.option 'force', '--force', 'Force creation even if PATH already exists' end end end