#!/usr/bin/env ruby $:.unshift File.join(File.dirname(__FILE__), *%w{ .. lib }) require 'commander/import' require 'jekyll' # Details about Jekyll program :name, 'jekyll' program :version, Jekyll::VERSION program :description, 'Jekyll is a blog-aware, static site generator in Ruby' default_command :help # Global options available to every command global_option '-s', '--source [DIR]', 'Source directory (defaults to ./)' global_option '-d', '--destination [DIR]', 'Destination directory (defaults to ./_site)' global_option '--safe', 'Safe mode (defaults to false)' global_option '--plugins', 'Plugins directory (defaults to ./_plugins)' global_option '--layouts', 'Layouts directory (defaults to ./_layouts)' # Build command # # Args: # --source # --destination # --watch command :build do |c| c.syntax = 'jekyll build [options]' c.description = 'Build your site with the option of auto-renegeration' c.option '-w', '--watch', 'Watch for changes and rebuild' c.action do |args, options| options.defaults :serving => false options = Jekyll.configuration(options.__hash__) Jekyll::BuildCommand.process(options) end end # Serve command # # Args: # --source # --destination # --watch # # --port # --host # --baseurl command :serve do |c| c.syntax = 'jekyll serve [options]' c.description = 'Serve your site locally with the option of auto-regeneration' c.option '-w', '--watch', 'Watch for changes and rebuild' c.option '-p', '--port [PORT]', 'Port to listen on' c.option '-h', '--host [HOST]', 'Host to bind to' c.option '-b', '--baseurl [URL]', 'Base URL' c.action do |args, options| options.default :port => '4000', :host => '0.0.0.0', :baseurl => '/', :serving => true options = Jekyll.configuration(options.__hash__) Jekyll::BuildCommand.process(options) Jekyll::ServeCommand.process(options) end end