diff --git a/jekyll-docs/.gitignore b/jekyll-docs/.gitignore new file mode 100644 index 00000000..70c3dadc --- /dev/null +++ b/jekyll-docs/.gitignore @@ -0,0 +1,3 @@ +jekyll +site +Gemfile.lock diff --git a/jekyll-docs/Gemfile b/jekyll-docs/Gemfile new file mode 100644 index 00000000..851fabc2 --- /dev/null +++ b/jekyll-docs/Gemfile @@ -0,0 +1,2 @@ +source 'https://rubygems.org' +gemspec diff --git a/jekyll-docs/Rakefile b/jekyll-docs/Rakefile new file mode 100644 index 00000000..0d103d52 --- /dev/null +++ b/jekyll-docs/Rakefile @@ -0,0 +1,19 @@ +require "bundler/gem_tasks" +task :build => :init +task :default => :init + +def jekyll_version + ENV.fetch('JEKYLL_VERSION') +end + +task :init do + sh "git clone git://github.com/jekyll/jekyll.git jekyll" unless Dir.exist? "jekyll/.git" + Dir.chdir("jekyll") { sh "git checkout v#{jekyll_version}" } + rm_rf "site" + cp_r "jekyll/site", "site" +end + +task :teardown do + rm_rf "site" + rm_rf "jekyll" +end diff --git a/jekyll-docs/jekyll-docs.gemspec b/jekyll-docs/jekyll-docs.gemspec new file mode 100644 index 00000000..02c373cc --- /dev/null +++ b/jekyll-docs/jekyll-docs.gemspec @@ -0,0 +1,21 @@ +# coding: utf-8 +require File.expand_path('../../lib/jekyll/version', __FILE__) + +Gem::Specification.new do |spec| + spec.name = 'jekyll-docs' + spec.version = ENV.fetch('JEKYLL_VERSION') + spec.authors = ['Parker Moore'] + spec.email = ['parkrmoore@gmail.com'] + spec.summary = %q{Offline usage documentation for Jekyll.} + spec.homepage = 'http://jekyllrb.com' + spec.license = 'MIT' + + spec.files = `git ls-files -z`.split("\x0").grep(%r{^site/}) + spec.files << "lib/jekyll-docs.rb" + spec.require_paths = ['lib'] + + spec.add_dependency 'jekyll', Jekyll::VERSION + + spec.add_development_dependency 'bundler', '~> 1.7' + spec.add_development_dependency 'rake', '~> 10.0' +end diff --git a/jekyll-docs/lib/jekyll-docs.rb b/jekyll-docs/lib/jekyll-docs.rb new file mode 100644 index 00000000..76ed922d --- /dev/null +++ b/jekyll-docs/lib/jekyll-docs.rb @@ -0,0 +1,34 @@ +require 'rubygems' +require 'jekyll' + +module JekyllDocs + class DocsCommand < Jekyll::Command + class << self + def init_with_program(prog) + prog.command(:docs) do |cmd| + cmd.description "Start a local server for the Jekyll documentation" + cmd.syntax "docs [options]" + cmd.alias :d + + cmd.option "port", "-P", "--port", "Port to listen on." + + cmd.action do |_, opts| + JekyllDocs::DocsCommand.process(opts) + end + end + end + + def process(opts) + Dir.mktmpdir do |dest_dir| + Jekyll::Commands::Serve.process(opts.merge({ + "serving" => true, + "watch" => false, + "config" => File.expand_path("../../site/_config.yml", __FILE__), + "source" => File.expand_path("../../site/", __FILE__), + "destination" => dest_dir + })) + end + end + end + end +end