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