octopress 3.0.0.alpha3 → 3.0.0.alpha4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 43594e6b5026cdfe8c0b63659e8c6d23073153b4
4
- data.tar.gz: 13fe34f1bfa868adebaf7fbbe9f875a7ba4cffe3
3
+ metadata.gz: 143b9c71ad561fd9a939fea1b64efee7c076d453
4
+ data.tar.gz: 958d911bbe77152603ff177fec4a2c9f46de50cd
5
5
  SHA512:
6
- metadata.gz: bd87b4fee80759d6791deb6bb974a0ae92d538babcc9ee57df1308d0bae65fcd0fb0b14d924fcea6e528748d71071c10737be6b436d59f5949c05245fed6d507
7
- data.tar.gz: 622aef0de4f00a34f80a2d8f595ff95f1ba3f8c6ac55d0897f898aa278a0b4ec6636300454873b1d9a1635ece49a8ead7e97bcccfefaea99378898b7285050af
6
+ metadata.gz: 102c7015e4688e0f0dcce8457bcb4ebb5a9aa98092036123591d1da348bff257220a31fb55c533e229fd6ad6708b51b28ec581a9a6e1d8cd96b9f9d22718cdae
7
+ data.tar.gz: 9600f8aea81d1a57efccbefdd5402162e32faed45ec96518e981ce4cc7cac2fa91d14fb719b5cdaa3ac97f671493a27bab8a7f57bf781d71fa8c10690a3e24f5
@@ -1,9 +1,14 @@
1
1
  module Octopress
2
2
  require 'octopress/core_ext'
3
+ require 'octopress/configuration'
3
4
  require 'octopress/command'
4
5
  require 'octopress/version'
5
6
  require 'octopress/commands/new'
6
7
  require 'octopress/commands/publish'
8
+ require 'octopress/commands/build'
9
+ require 'octopress/commands/serve'
10
+ require 'octopress/commands/doctor'
11
+ require 'octopress/commands/docs'
7
12
 
8
13
  autoload :Page, 'octopress/page'
9
14
  autoload :Post, 'octopress/post'
@@ -14,30 +19,14 @@ module Octopress
14
19
  octopress-ink
15
20
  ]
16
21
 
17
- DEFAULTS = { 'octopress' => {
18
- 'new_post_extension' => 'markdown',
19
- 'new_page_extension' => 'html',
20
- 'new_post_layout' => 'post',
21
- 'new_page_layout' => 'page',
22
- 'titlecase' => true
23
- }}
24
-
25
22
  def self.logger
26
23
  @logger ||= Logger.new(STDOUT)
27
24
  @logger.level = Logger::DEBUG
28
25
  @logger
29
26
  end
30
27
 
31
- def self.site(options={})
32
- @site ||= Jekyll::Site.new(config(options))
33
- end
34
-
35
28
  def self.config(options={})
36
- log_level = Jekyll.logger.log_level
37
- Jekyll.logger.log_level = Jekyll::Stevenson::WARN
38
- @config ||= DEFAULTS.deep_merge Jekyll.configuration(options)
39
- Jekyll.logger.log_level = log_level
40
- @config
29
+ Configuration.config(options)
41
30
  end
42
31
 
43
32
  def self.require_blessed_gems
@@ -0,0 +1,21 @@
1
+ require 'jekyll'
2
+ require File.expand_path('helpers', File.dirname(__FILE__))
3
+
4
+ module Octopress
5
+ class Build < Command
6
+ def self.init_with_program(p)
7
+ p.command(:build) do |c|
8
+ c.syntax 'octopress build [options]'
9
+ c.description 'Build your site'
10
+ CommandHelpers.add_build_options(c)
11
+
12
+ c.action do |args, options|
13
+ options = CommandHelpers.normalize_options(options)
14
+ options = ::Jekyll.configuration(options.to_symbol_keys)
15
+ ::Jekyll::Commands::Build.process(options)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
@@ -0,0 +1,42 @@
1
+ require 'jekyll'
2
+ require File.expand_path('helpers', File.dirname(__FILE__))
3
+
4
+ module Octopress
5
+ class Docs < Command
6
+ def self.init_with_program(p)
7
+ p.command(:docs) do |c|
8
+ c.syntax 'octopress docs'
9
+ c.description "Soon: Launch local server with docs for Octopress v#{Octopress::VERSION}"
10
+
11
+ c.option 'port', '-P', '--port [PORT]', 'Port to listen on'
12
+ c.option 'host', '-H', '--host [HOST]', 'Host to bind to'
13
+ c.option 'jekyll', '--jekyll', "Launch local server with docs for Jekyll v#{Jekyll::VERSION}"
14
+
15
+ c.action do |args, options|
16
+
17
+ # Only show jekyll docs if the jekyll flag was used
18
+ #
19
+ if options['jekyll']
20
+ options.delete('jekyll')
21
+
22
+ # Find local Jekyll gem path
23
+ #
24
+ spec = Gem::Specification.find_by_name("jekyll")
25
+ gem_path = spec.gem_dir
26
+
27
+ options = CommandHelpers.normalize_options(options)
28
+ options = ::Jekyll.configuration(options.to_symbol_keys.merge!({
29
+ 'source' => "#{gem_path}/site",
30
+ 'destination' => "#{gem_path}/site/_site"
31
+ }))
32
+
33
+ ::Jekyll::Commands::Build.process(options)
34
+ ::Jekyll::Commands::Serve.process(options)
35
+ else
36
+ puts "Sorry, not yet. View Octopress docs on http://octopress.org or view Jekyll docs locally by running `octopress docs --jekyll`"
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,24 @@
1
+ require 'jekyll'
2
+ require File.expand_path('helpers', File.dirname(__FILE__))
3
+
4
+ module Octopress
5
+ class Doctor < Command
6
+ def self.init_with_program(p)
7
+ p.command(:doctor) do |c|
8
+ c.alias(:hyde)
9
+
10
+ c.syntax 'octopress doctor'
11
+ c.description 'Search site and print specific deprecation warnings'
12
+
13
+ c.option 'config', '--config CONFIG_FILE[,CONFIG_FILE2,...]', Array, 'Custom configuration file'
14
+
15
+ c.action do |args, options|
16
+ options = CommandHelpers.normalize_options(options)
17
+ options = Jekyll.configuration(options.to_symbol_keys)
18
+ ::Jekyll::Commands::Doctor.process(options)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+
@@ -0,0 +1,20 @@
1
+ module Octopress
2
+ module CommandHelpers
3
+ def self.add_build_options(c)
4
+ c.option 'config', '--config CONFIG_FILE[,CONFIG_FILE2,...]', Array, 'Custom configuration file'
5
+ c.option 'future', '--future', 'Publishes posts with a future date'
6
+ c.option 'limit_posts', '--limit_posts MAX_POSTS', Integer, 'Limits the number of posts to parse and publish'
7
+ c.option 'watch', '--watch', 'Watch for changes and rebuild'
8
+ c.option 'list', '--lsi', 'Use LSI for improved related posts'
9
+ c.option 'drafts','-D', '--drafts', 'Render posts in the _drafts folder'
10
+ c.option 'verbose', '--verbose', 'Print verbose output.'
11
+ end
12
+
13
+ def self.normalize_options(options)
14
+ if drafts_state = options.delete('drafts')
15
+ options['show_drafts'] = drafts_state
16
+ end
17
+ options
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,31 @@
1
+ require 'jekyll'
2
+ require File.expand_path('helpers', File.dirname(__FILE__))
3
+
4
+ module Octopress
5
+ class Serve < Command
6
+ def self.init_with_program(p)
7
+ p.command(:serve) do |c|
8
+ c.alias(:server)
9
+
10
+ c.syntax 'jekyll serve [options]'
11
+ c.description 'Serve your site locally'
12
+
13
+ CommandHelpers.add_build_options(c)
14
+
15
+ c.option 'detach', '-B', '--detach', 'Run the server in the background (detach)'
16
+ c.option 'port', '-P', '--port PORT', 'Port to listen on'
17
+ c.option 'host', '-H', '--host HOST', 'Host to bind to'
18
+ c.option 'baseurl', '--baseurl URL', 'Base URL'
19
+
20
+ c.action do |args, options|
21
+ options.default :serving => true
22
+ options = CommandHelpers.normalize_options(options)
23
+ options = ::Jekyll.configuration(options.to_symbol_keys)
24
+ ::Jekyll::Commands::Build.process(options)
25
+ ::Jekyll::Commands::Serve.process(options)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
@@ -0,0 +1,35 @@
1
+ module Octopress
2
+ module Configuration
3
+
4
+ DEFAULTS = {
5
+ 'new_post_extension' => 'markdown',
6
+ 'new_page_extension' => 'html',
7
+ 'new_post_layout' => 'post',
8
+ 'new_page_layout' => 'page',
9
+ 'titlecase' => true
10
+ }
11
+
12
+ def self.config(options={})
13
+ return @config if @config
14
+
15
+ file = '_octopress.yml'
16
+ config = {}
17
+ if File.exist? file
18
+ config = YAML.safe_load(File.open(file))
19
+ end
20
+ #config['jekyll'] = jekyll_config(options)
21
+ @config = DEFAULTS.deep_merge(config)
22
+ end
23
+
24
+ def self.jekyll_config(options={})
25
+ return @jekyll_config if @jekyll_config
26
+
27
+ log_level = Jekyll.logger.log_level
28
+ Jekyll.logger.log_level = Jekyll::Stevenson::WARN
29
+ jekyll_config = Jekyll.configuration(options)
30
+ Jekyll.logger.log_level = log_level
31
+
32
+ @jekyll_config = jekyll_config
33
+ end
34
+ end
35
+ end
@@ -18,7 +18,7 @@ module Octopress
18
18
 
19
19
  def path
20
20
  name = "#{title_slug}.#{extension}"
21
- File.join(@config['source'], '_drafts', name)
21
+ File.join(source, '_drafts', name)
22
22
  end
23
23
 
24
24
  def read
@@ -10,7 +10,7 @@ module Octopress
10
10
 
11
11
  def write
12
12
  if File.exist?(path) && !@options['force']
13
- abort "File #{relative_path} already exists" if File.exist?(path)
13
+ abort "File #{relative_path} already exists"
14
14
  end
15
15
 
16
16
  FileUtils.mkdir_p(File.dirname(path))
@@ -27,16 +27,21 @@ module Octopress
27
27
  path.sub(local, '')
28
28
  end
29
29
 
30
+ def source
31
+ Configuration.jekyll_config(@options)['source']
32
+ end
33
+
30
34
  def path
35
+ return @path if @path
31
36
  file = @options['path']
32
37
 
33
38
  # If path ends with a slash, make it an index
34
- file << "index" if file =~ /\/$/
39
+ file += "index" if file =~ /\/$/
35
40
 
36
41
  # if path has no extension, add the default extension
37
- file << ".#{extension}" unless file =~ /\.\w+$/
42
+ file += ".#{extension}" unless file =~ /\.\w+$/
38
43
 
39
- File.join(@config['source'], file)
44
+ @path = File.join(source, file)
40
45
  end
41
46
 
42
47
  def extension
@@ -45,9 +50,10 @@ module Octopress
45
50
 
46
51
  def set_default_options
47
52
  @options['type'] ||= 'page'
48
- @options['layout'] = @config['octopress']['new_page_layout']
53
+ @options['layout'] = @config['new_page_layout']
49
54
  @options['date'] = convert_date @options['date']
50
- @options['extension'] ||= @config['octopress']['new_page_extension']
55
+ @options['extension'] ||= @config['new_page_extension']
56
+ @options['template'] ||= @config['new_page_template']
51
57
  end
52
58
 
53
59
  def convert_date(date)
@@ -64,18 +70,29 @@ module Octopress
64
70
  #
65
71
  def content
66
72
  file = @options['template']
67
- file = File.join(Octopress.site.source, file) if file
73
+ file = File.join(source, '_templates', file) if file
68
74
  if file
69
- raise "No template found at #{file}" unless File.exist? file
75
+ abort "No template found at #{file}" unless File.exist? file
70
76
  parse_template Pathname.new(file).read
71
77
  else
72
78
  parse_template default_content
73
79
  end
74
80
  end
75
81
 
82
+ # Render Liquid vars in YAML front-matter.
76
83
  def parse_template(input)
77
- template = Liquid::Template.parse(input)
78
- template.render(@options)
84
+
85
+ # If possible only parse the YAML front matter.
86
+ # If YAML front-matter dashes aren't present parse the whole
87
+ # template and add dashes.
88
+ #
89
+ parsed = if input =~ /\A-{3}\s+(.+?)\s+-{3}\s+(.+)/m
90
+ template = Liquid::Template.parse($1)
91
+ "---\n#{template.render(@options)}\n---\n\n#{$2}"
92
+ else
93
+ template = Liquid::Template.parse(input)
94
+ "---\n#{template.render(@options)}\n---\n\n"
95
+ end
79
96
  end
80
97
 
81
98
  def date_slug
@@ -3,15 +3,16 @@ module Octopress
3
3
 
4
4
  def set_default_options
5
5
  @options['type'] ||= 'post'
6
- @options['layout'] = @config['octopress']['new_post_layout']
6
+ @options['layout'] = @config['new_post_layout']
7
7
  @options['title'] ||= 'New Post'
8
8
  @options['date'] = convert_date @options['date'] || Time.now
9
- @options['extension'] ||= @config['octopress']['new_post_extension']
9
+ @options['extension'] ||= @config['new_post_extension']
10
+ @options['template'] ||= @config['new_post_template']
10
11
  end
11
12
 
12
13
  def path
13
14
  name = "#{date_slug}-#{title_slug}.#{extension}"
14
- File.join(@config['source'], '_posts', name)
15
+ File.join(source, '_posts', name)
15
16
  end
16
17
 
17
18
  # Post template defaults
@@ -1,3 +1,3 @@
1
1
  module Octopress
2
- VERSION = "3.0.0.alpha3"
2
+ VERSION = "3.0.0.alpha4"
3
3
  end
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_runtime_dependency "mercenary", "~> 0.1.0"
22
- spec.add_runtime_dependency "jekyll", "~> 1.0.0"
22
+ spec.add_runtime_dependency "jekyll", "~> 1.4.2"
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
25
25
  spec.add_development_dependency "pry-debugger"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octopress
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.alpha3
4
+ version: 3.0.0.alpha4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Mathis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-18 00:00:00.000000000 Z
12
+ date: 2014-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mercenary
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - ~>
33
33
  - !ruby/object:Gem::Version
34
- version: 1.0.0
34
+ version: 1.4.2
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ~>
40
40
  - !ruby/object:Gem::Version
41
- version: 1.0.0
41
+ version: 1.4.2
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -99,8 +99,14 @@ files:
99
99
  - bin/octopress
100
100
  - lib/octopress.rb
101
101
  - lib/octopress/command.rb
102
+ - lib/octopress/commands/build.rb
103
+ - lib/octopress/commands/docs.rb
104
+ - lib/octopress/commands/doctor.rb
105
+ - lib/octopress/commands/helpers.rb
102
106
  - lib/octopress/commands/new.rb
103
107
  - lib/octopress/commands/publish.rb
108
+ - lib/octopress/commands/serve.rb
109
+ - lib/octopress/configuration.rb
104
110
  - lib/octopress/core_ext.rb
105
111
  - lib/octopress/draft.rb
106
112
  - lib/octopress/page.rb