octopress-ink 1.0.0.alpha.43 → 1.0.0.alpha.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/assets/docs/creating-a-plugin.markdown +31 -42
- data/assets/docs/plugin-reference.markdown +1 -1
- data/lib/octopress-ink.rb +17 -5
- data/lib/octopress-ink/assets/page.rb +1 -1
- data/lib/octopress-ink/commands.rb +2 -0
- data/lib/octopress-ink/commands/copy.rb +7 -7
- data/lib/octopress-ink/commands/list.rb +4 -4
- data/lib/octopress-ink/commands/new.rb +160 -0
- data/lib/octopress-ink/jekyll/page.rb +4 -4
- data/lib/octopress-ink/plugin.rb +39 -27
- data/lib/octopress-ink/plugins.rb +2 -2
- data/lib/octopress-ink/version.rb +1 -1
- data/test/copy_layouts_pages/_copy/pages/four.xml +5 -0
- data/test/copy_layouts_pages/_copy/pages/one.xml +1 -1
- data/test/copy_layouts_pages/_copy/pages/three.md +1 -0
- data/test/copy_layouts_pages/_copy/pages/two.md +1 -1
- data/test/copy_test/_copy/pages/four.xml +5 -0
- data/test/copy_test/_copy/pages/one.xml +1 -1
- data/test/copy_test/_copy/pages/three.md +1 -0
- data/test/copy_test/_copy/pages/two.md +1 -1
- data/test/expected/four/index.xml +1 -0
- data/test/plugins/awesome-sauce/pages/{test_pages/one.html → a.html} +1 -1
- data/test/plugins/awesome-sauce/pages/b.html +4 -0
- data/test/plugins/awesome-sauce/plugin.rb +6 -13
- data/test/plugins/test-theme/config.yml +0 -3
- data/test/plugins/test-theme/pages/four.xml +5 -0
- data/test/plugins/test-theme/pages/one.xml +4 -0
- data/test/plugins/test-theme/pages/{test_pages/three.md → three.md} +1 -0
- data/test/plugins/test-theme/pages/{test_pages/two.md → two.md} +0 -1
- data/test/plugins/test-theme/plugin.rb +6 -12
- data/test/sass_compact/stylesheets/all-e10f647557c9d610df6df40a458bc823.css +2 -2
- data/test/sass_compact/stylesheets/print-0dc274efb4e3fba0ae71bd22eef6fb38.css +2 -0
- data/test/sass_expanded/stylesheets/all-e10f647557c9d610df6df40a458bc823.css +2 -2
- data/test/sass_expanded/stylesheets/print-0dc274efb4e3fba0ae71bd22eef6fb38.css +2 -0
- data/test/source/_plugins/awesome-sauce/config.yml +3 -7
- data/test/source/_plugins/theme/config.yml +3 -4
- data/test/test.rb +7 -7
- metadata +21 -15
- data/assets/docs/creating-a-gem.markdown +0 -69
- data/test/plugins/awesome-sauce/pages/test_pages/two.html +0 -4
- data/test/plugins/test-theme/pages/test_pages/disable-test.html +0 -3
- data/test/plugins/test-theme/pages/test_pages/one.xml +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ddd087cd3f779c18b523d5f4feccfcb3b575b2f
|
4
|
+
data.tar.gz: 12126d852db51f062a0063516819319f554de313
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 141cf68d224be24a4e57860e87584dac4af215dbe0a9f2aa9b7e83f2bb9e2b5ebbb30abf7c11738290fed5077fb2088ae2eb71dfe01a1a3cca49e94bc772aa27
|
7
|
+
data.tar.gz: e0bdf61520091974cfebe8cd353cffa5a5dd8d5c0bdd6bbdd8b9b8fb6c1e52423018042bf74570cd56328dd621886e6877ed7c9a8d2c603ee76264510eb1b55f
|
@@ -3,55 +3,44 @@ title: "Create an Octopress Ink Plugin"
|
|
3
3
|
permalink: /guides/creating-a-plugin/
|
4
4
|
---
|
5
5
|
|
6
|
-
|
6
|
+
*This guide assumes you have already installed Git, and Ruby 1.9.3 or greater.*
|
7
7
|
|
8
|
-
|
9
|
-
something like this:
|
8
|
+
Octopress Ink plugins are distributed as ruby gems so you'll probably need to create an acconut at [RubyGems.org](https://rubygems.org/sign_up) if you haven't yet. Also, be sure to install the [bundler](http://bundler.io) gem.
|
10
9
|
|
11
|
-
|
12
|
-
require "baconnaise/version"
|
10
|
+
## Creating a Plugin
|
13
11
|
|
14
|
-
|
15
|
-
# Your code goes here...
|
16
|
-
end
|
17
|
-
```
|
18
|
-
|
19
|
-
We'll require octopress-ink add a configuration method, and register the plugin with Octopress Ink plugin. Here's what `lib/baconnaise.rb` after we've done that.
|
12
|
+
To create a new plugin from scratch run:
|
20
13
|
|
21
|
-
```
|
22
|
-
|
23
|
-
|
14
|
+
```sh
|
15
|
+
octopress ink new cool_plugin
|
16
|
+
```
|
24
17
|
|
25
|
-
|
26
|
-
class InkPlugin < Octopress::Ink::Plugin
|
27
|
-
def configuration
|
28
|
-
{
|
29
|
-
# your configuration goes here.
|
30
|
-
}
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
18
|
+
This will add scaffolding for a gem-based plugin in the `cool_plugin` directory. To create a theme, add the `--theme` flag. Here's what that will look like.
|
34
19
|
|
35
|
-
|
36
|
-
|
20
|
+
```
|
21
|
+
assets/
|
22
|
+
files/
|
23
|
+
fonts/
|
24
|
+
images/
|
25
|
+
includes/
|
26
|
+
javascripts/
|
27
|
+
layouts/
|
28
|
+
pages/
|
29
|
+
stylesheets/
|
30
|
+
lib/
|
31
|
+
cool_plugin/
|
32
|
+
version.rb
|
33
|
+
cool_plugin.rb
|
34
|
+
cool_plugin.gemspec
|
35
|
+
Gemfile
|
36
|
+
LICENSE.txt
|
37
|
+
Rakefile
|
38
|
+
README.md
|
37
39
|
```
|
38
40
|
|
39
|
-
|
40
|
-
|
41
|
-
{% render ./_configuration.markdown %}
|
41
|
+
This is basically Bundler's gem scaffolding with a few additions.
|
42
42
|
|
43
|
-
|
43
|
+
- Empty asset directories are added.
|
44
|
+
- The gemspec requires `octopress-ink` as a runtime dependency.
|
45
|
+
- A basic Octopress Ink plugin is added to `lib/cool_plugin.rb`.
|
44
46
|
|
45
|
-
```ruby
|
46
|
-
def configuration
|
47
|
-
{
|
48
|
-
name: "Baconnaise",
|
49
|
-
slug: "baconnaise",
|
50
|
-
assets_path: File.expand_path(File.join(File.dirname(__FILE__), '../assets')),
|
51
|
-
type: "plugin",
|
52
|
-
version: Baconnaise::VERSION,
|
53
|
-
description: "Baconnaise, because mistakes have never been this spreadable.",
|
54
|
-
website: "http://baconnaise-craze.info/or/something/"
|
55
|
-
}
|
56
|
-
end
|
57
|
-
```
|
@@ -3,7 +3,7 @@ title: "Octopress Ink Plugin Reference"
|
|
3
3
|
permalink: /plugin-reference/
|
4
4
|
---
|
5
5
|
|
6
|
-
Octopress Ink plugins should be distributed as
|
6
|
+
Octopress Ink plugins should be distributed as Ruby gems. If you don't know how to create a ruby gem, [follow this walkthrough]({% doc_url /guides/create-a-gem/ %}).
|
7
7
|
|
8
8
|
### Plugin Template
|
9
9
|
|
data/lib/octopress-ink.rb
CHANGED
@@ -27,10 +27,22 @@ module Octopress
|
|
27
27
|
require 'octopress-ink/commands'
|
28
28
|
end
|
29
29
|
|
30
|
+
# Register a new plugin
|
31
|
+
#
|
32
|
+
# plugin - A subclass of Plugin
|
33
|
+
#
|
30
34
|
def self.register_plugin(plugin)
|
31
35
|
Plugins.register_plugin(plugin)
|
32
36
|
end
|
33
37
|
|
38
|
+
# Create a new plugin from a configuration hash
|
39
|
+
#
|
40
|
+
# options - A hash of configuration options.
|
41
|
+
#
|
42
|
+
def self.new_plugin(options)
|
43
|
+
Plugins.register_plugin Plugin, options
|
44
|
+
end
|
45
|
+
|
34
46
|
def self.version
|
35
47
|
version = "Jekyll v#{Jekyll::VERSION}, "
|
36
48
|
if defined? Octopress::VERSION
|
@@ -65,14 +77,14 @@ module Octopress
|
|
65
77
|
|
66
78
|
# Prints a list of plugins and details
|
67
79
|
#
|
68
|
-
# options - a Hash of options from the
|
80
|
+
# options - a Hash of options from the `list` command
|
69
81
|
#
|
70
82
|
# Note: if options are empty, this will display a
|
71
|
-
# list of plugin names, versions, and descriptions,
|
83
|
+
# list of plugin names, slugs, versions, and descriptions,
|
72
84
|
# but no assets, i.e. 'minimal' info.
|
73
85
|
#
|
74
86
|
#
|
75
|
-
def self.
|
87
|
+
def self.list(options={})
|
76
88
|
Plugins.register site(options)
|
77
89
|
options = {'minimal'=>true} if options.empty?
|
78
90
|
message = "Octopress Ink - v#{VERSION}\n"
|
@@ -97,9 +109,9 @@ module Octopress
|
|
97
109
|
end
|
98
110
|
end
|
99
111
|
|
100
|
-
def self.copy_plugin_assets(name,
|
112
|
+
def self.copy_plugin_assets(name, options)
|
101
113
|
Plugins.register site(options)
|
102
|
-
if path
|
114
|
+
if path = options.delete('path')
|
103
115
|
full_path = File.join(Plugins.site.source, path)
|
104
116
|
if !Dir["#{full_path}/*"].empty? && options['force'].nil?
|
105
117
|
abort "Error: directory #{path} is not empty. Use --force to overwrite files."
|
@@ -3,6 +3,7 @@ module Octopress
|
|
3
3
|
module Commands
|
4
4
|
require 'octopress-ink/commands/list'
|
5
5
|
require 'octopress-ink/commands/copy'
|
6
|
+
require 'octopress-ink/commands/new'
|
6
7
|
|
7
8
|
class Ink < Octopress::Command
|
8
9
|
|
@@ -18,6 +19,7 @@ module Octopress
|
|
18
19
|
|
19
20
|
List.process_command(c)
|
20
21
|
Copy.process_command(c)
|
22
|
+
New.process_command(c)
|
21
23
|
end
|
22
24
|
end
|
23
25
|
end
|
@@ -4,20 +4,20 @@ module Octopress
|
|
4
4
|
class Copy
|
5
5
|
def self.process_command(p)
|
6
6
|
p.command(:copy) do |c|
|
7
|
-
c.syntax "copy <PLUGIN> [
|
8
|
-
c.description "Copy plugin assets to
|
9
|
-
c.option "all", "--all", "Copy all plugin assets"
|
10
|
-
c.option "force", "--force", "Overwrite files"
|
7
|
+
c.syntax "copy <PLUGIN> [options]"
|
8
|
+
c.description "Copy plugin assets to _plugins/PLUGIN/."
|
9
|
+
c.option "all", "--all", "Copy all plugin assets."
|
10
|
+
c.option "force", "--force", "Overwrite files."
|
11
|
+
c.option "path", "--path PATH", "Copy plugin assets to an alternate path."
|
11
12
|
CommandHelpers.add_asset_options(c, 'Copy')
|
12
13
|
|
13
14
|
c.action do |args, options|
|
14
15
|
if args.empty?
|
15
|
-
puts "Error: Please pass a plugin to install assets from."
|
16
|
+
puts "Error: Please pass a plugin slug to install assets from that plugin."
|
16
17
|
Octopress::Ink.list_plugins
|
17
18
|
else
|
18
19
|
name = args[0]
|
19
|
-
|
20
|
-
Octopress::Ink.copy_plugin_assets(name, path, options)
|
20
|
+
Octopress::Ink.copy_plugin_assets(name, options)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -5,14 +5,14 @@ module Octopress
|
|
5
5
|
def self.process_command(p)
|
6
6
|
p.command(:list) do |c|
|
7
7
|
c.syntax "list [plugin] [options]"
|
8
|
-
c.description "Get
|
9
|
-
c.option "all", "--all", "List all plugins and their assets"
|
8
|
+
c.description "Get a list of installed octopress ink plugins for this site."
|
9
|
+
c.option "all", "--all", "List all plugins and their assets."
|
10
10
|
CommandHelpers.add_asset_options(c, 'List')
|
11
|
-
c.option "docs", "--docs", "List only documentation pages"
|
11
|
+
c.option "docs", "--docs", "List only documentation pages."
|
12
12
|
|
13
13
|
c.action do |args, options|
|
14
14
|
if args.empty?
|
15
|
-
Octopress::Ink.
|
15
|
+
Octopress::Ink.list(options)
|
16
16
|
else
|
17
17
|
name = args.first
|
18
18
|
Octopress::Ink.plugin_info(name, options)
|
@@ -0,0 +1,160 @@
|
|
1
|
+
module Octopress
|
2
|
+
module Ink
|
3
|
+
module Commands
|
4
|
+
class New
|
5
|
+
def self.process_command(p)
|
6
|
+
p.command(:new) do |c|
|
7
|
+
c.syntax "new <PLUGIN_NAME> [options]"
|
8
|
+
c.description "Create a new Octopress Ink plugin with Ruby gem scaffolding."
|
9
|
+
c.option "path", "--path PATH", "Create a plugin at a specified path (defaults to current directory)."
|
10
|
+
c.option "theme", "--theme", "Create a new theme."
|
11
|
+
|
12
|
+
c.action do |args, options|
|
13
|
+
if args.empty?
|
14
|
+
raise "Please provide a plugin name, e.g. my_awesome_plugin."
|
15
|
+
else
|
16
|
+
options['name'] = args[0]
|
17
|
+
@options = options
|
18
|
+
new_plugin
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.new_plugin
|
25
|
+
path = @options['path'] ||= Dir.pwd
|
26
|
+
gem_name = @options['name']
|
27
|
+
|
28
|
+
@gem_dir = File.join(path, gem_name)
|
29
|
+
@gemspec_file = "#{gem_name}/#{gem_name}.gemspec"
|
30
|
+
|
31
|
+
if !Dir.exist?(path)
|
32
|
+
raise "Directory not found: #{File.expand_path(path)}."
|
33
|
+
end
|
34
|
+
|
35
|
+
if !Dir["#{@gem_dir}/*"].empty?
|
36
|
+
raise "Directory not empty: #{File.expand_path(@gem_dir)}."
|
37
|
+
end
|
38
|
+
|
39
|
+
FileUtils.cd path do
|
40
|
+
create_gem
|
41
|
+
add_dependency
|
42
|
+
add_plugin
|
43
|
+
add_asset_dirs
|
44
|
+
add_demo_files
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.create_gem
|
49
|
+
begin
|
50
|
+
require 'bundler/cli'
|
51
|
+
bundler = Bundler::CLI.new
|
52
|
+
rescue LoadError
|
53
|
+
raise "To use this feautre you'll need to install the bundler gem with `gem install bundler`."
|
54
|
+
end
|
55
|
+
|
56
|
+
bundler.gem(@options['name'])
|
57
|
+
end
|
58
|
+
|
59
|
+
# Add Octopress Ink dependency to Gemspec
|
60
|
+
#
|
61
|
+
def self.add_dependency
|
62
|
+
minor_version = VERSION.scan(/\d\.\d/)[0]
|
63
|
+
@gemspec = File.open(@gemspec_file).read
|
64
|
+
dependency = " spec.add_runtime_dependency 'octopress-ink', '~> #{minor_version}', '>= #{VERSION}'\n"
|
65
|
+
dependency += "\n spec.add_development_dependency 'octopress'\n"
|
66
|
+
|
67
|
+
pos = @gemspec.index(" spec.add_development_dependency")
|
68
|
+
@gemspec = insert_before(@gemspec, pos, dependency)
|
69
|
+
|
70
|
+
File.open(@gemspec_file, 'w+') {|f| f.write(@gemspec) }
|
71
|
+
end
|
72
|
+
|
73
|
+
# Add Octopress Ink plugin to core module file
|
74
|
+
#
|
75
|
+
def self.add_plugin
|
76
|
+
# Grab the module directory from the version.rb require.
|
77
|
+
# If a gem is created with dashes e.g. "some-gem", Bundler puts the module file at lib/some/gem.rb
|
78
|
+
module_subpath = @gemspec.scan(/['"](.+)\/version['"]/).flatten[0]
|
79
|
+
@module_file = File.join(@options['name'], 'lib', "#{module_subpath}.rb")
|
80
|
+
mod = File.open(@module_file).read
|
81
|
+
|
82
|
+
# Find the inner most module name
|
83
|
+
@modules = mod.scan(/module\s+(.+?)\n/).flatten
|
84
|
+
@mod_path = @modules.join('::')
|
85
|
+
|
86
|
+
mod = add_simple_plugin mod
|
87
|
+
|
88
|
+
File.open(@module_file, 'w+') {|f| f.write(mod) }
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.add_asset_dirs
|
92
|
+
%w{images fonts pages files layouts includes stylesheets javascripts}.each do |asset|
|
93
|
+
dir = File.join(@options['name'], 'assets', asset)
|
94
|
+
FileUtils.mkdir_p dir
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# New plugin uses a simple configuration hash
|
99
|
+
#
|
100
|
+
def self.add_simple_plugin(mod)
|
101
|
+
mod = mod.scan(/require.+\n/)[0]
|
102
|
+
mod += 'require "octopress-ink"'
|
103
|
+
mod += "\n\nOctopress::Ink.new_plugin({\n#{indent(plugin_config)}\n})"
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.plugin_config
|
107
|
+
plugin_name = format_name(@modules.last)
|
108
|
+
plugin_slug = Filters.sluggify(@options['name'])
|
109
|
+
depth = @module_file.count('/') - 1
|
110
|
+
assets_path = ("../" * depth) + 'assets'
|
111
|
+
type = @options['theme'] ? 'theme' : 'plugin'
|
112
|
+
|
113
|
+
config = <<-HERE
|
114
|
+
name: "#{plugin_name}",
|
115
|
+
slug: "#{plugin_slug}",
|
116
|
+
assets_path: File.expand_path(File.join(File.dirname(__FILE__), "#{assets_path}")),
|
117
|
+
type: "#{type}",
|
118
|
+
version: #{@mod_path}::VERSION,
|
119
|
+
description: "",
|
120
|
+
website: ""
|
121
|
+
HERE
|
122
|
+
config.rstrip
|
123
|
+
end
|
124
|
+
|
125
|
+
def self.add_demo_files
|
126
|
+
dir = File.join(@options['name'], 'demo')
|
127
|
+
Jekyll::Commands::New.process([dir], {blank: true})
|
128
|
+
|
129
|
+
gemfile = <<-HERE
|
130
|
+
source 'https://rubygems.org'
|
131
|
+
|
132
|
+
group :octopress do
|
133
|
+
gem 'octopress'
|
134
|
+
gem '#{@options['name']}', path: '../'
|
135
|
+
end
|
136
|
+
HERE
|
137
|
+
|
138
|
+
File.open(File.join(dir, 'Gemfile'), 'w+') {|f| f.write(gemfile) }
|
139
|
+
end
|
140
|
+
|
141
|
+
def self.indent(input, level=1)
|
142
|
+
input.gsub(/^/, ' ' * level)
|
143
|
+
end
|
144
|
+
# Add spaces between capital letters
|
145
|
+
#
|
146
|
+
def self.format_name(name)
|
147
|
+
name.scan(/.*?[a-z](?=[A-Z]|$)/).join(' ')
|
148
|
+
end
|
149
|
+
|
150
|
+
def self.insert_before(str, pos, input)
|
151
|
+
if pos
|
152
|
+
str[0..(pos - 1)] + input + str[pos..-1]
|
153
|
+
else
|
154
|
+
str
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -28,10 +28,10 @@ module Octopress
|
|
28
28
|
@url
|
29
29
|
else
|
30
30
|
begin
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
config = @config['page_permalinks'][File.basename(self.name, '.*')]
|
32
|
+
if config.is_a? String
|
33
|
+
@url = config
|
34
|
+
self.data['permalink'] = nil
|
35
35
|
end
|
36
36
|
rescue; end
|
37
37
|
|
data/lib/octopress-ink/plugin.rb
CHANGED
@@ -12,8 +12,8 @@ module Octopress
|
|
12
12
|
:layouts_dir, :stylesheets_dir, :javascripts_dir, :files_dir, :includes_dir, :images_dir,
|
13
13
|
:layouts, :includes, :images, :fonts, :files, :pages, :docs
|
14
14
|
|
15
|
-
def initialize
|
16
|
-
DEFAULT_CONFIG.merge(configuration).each { |k,v| set_config(k,v) }
|
15
|
+
def initialize(options={})
|
16
|
+
DEFAULT_CONFIG.merge(options || configuration).each { |k,v| set_config(k,v) }
|
17
17
|
|
18
18
|
@layouts_dir = 'layouts'
|
19
19
|
@files_dir = 'files'
|
@@ -156,35 +156,47 @@ module Octopress
|
|
156
156
|
|
157
157
|
def info(options={})
|
158
158
|
if options['minimal']
|
159
|
-
|
160
|
-
message += " (theme)" if @type == 'theme'
|
161
|
-
message += " - v#{@version}" if @version
|
162
|
-
if @description
|
163
|
-
message = "#{message.ljust(30)} #{@description}"
|
164
|
-
end
|
165
|
-
message += "\n"
|
159
|
+
minimal_info
|
166
160
|
else
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
161
|
+
detailed_info(options)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
def minimal_info
|
166
|
+
message = " #{@name}"
|
167
|
+
message += " (#{slug})"
|
168
|
+
message += " - v#{@version}" if @version
|
169
|
+
if @description && !@description.empty?
|
170
|
+
message = "#{message.ljust(30)} - #{@description}"
|
171
|
+
end
|
172
|
+
message += "\n"
|
173
|
+
end
|
180
174
|
|
181
|
-
|
182
|
-
|
175
|
+
def detailed_info(options)
|
176
|
+
asset_info = assets_info(options)
|
177
|
+
return '' if asset_info.empty?
|
183
178
|
|
184
|
-
|
185
|
-
|
186
|
-
|
179
|
+
name = "Plugin: #{@name}"
|
180
|
+
name += " (theme)" if @type == 'theme'
|
181
|
+
name += " - v#{@version}" if @version
|
182
|
+
name = name
|
183
|
+
message = name
|
184
|
+
message += "\nSlug: #{slug}"
|
185
|
+
|
186
|
+
if @description && !@description.empty?
|
187
|
+
message += "\n#{@description}"
|
187
188
|
end
|
189
|
+
|
190
|
+
if @website && !@website.empty?
|
191
|
+
message += "\n#{@website}"
|
192
|
+
end
|
193
|
+
|
194
|
+
lines = ''
|
195
|
+
80.times { lines += '=' }
|
196
|
+
|
197
|
+
message = "\n#{message}\n#{lines}\n"
|
198
|
+
message += asset_info
|
199
|
+
message += "\n"
|
188
200
|
end
|
189
201
|
|
190
202
|
def pad_line(line)
|
@@ -0,0 +1 @@
|
|
1
|
+
This page is totally a thing.
|
@@ -1,15 +1,8 @@
|
|
1
1
|
require 'octopress-ink'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
description: "Test some plugins y'all"
|
10
|
-
}
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
Octopress::Ink.register_plugin(TestPlugin)
|
15
|
-
|
3
|
+
Octopress::Ink.new_plugin({
|
4
|
+
name: 'Awesome Sauce',
|
5
|
+
slug: 'awesome-sauce',
|
6
|
+
assets_path: File.expand_path(File.dirname(__FILE__)),
|
7
|
+
description: "Test some plugins y'all"
|
8
|
+
})
|
@@ -1,14 +1,8 @@
|
|
1
1
|
require 'octopress-ink'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
assets_path: File.expand_path(File.dirname(__FILE__))
|
10
|
-
}
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
Octopress::Ink.register_plugin(TestTheme)
|
3
|
+
Octopress::Ink.new_plugin({
|
4
|
+
name: "Classic Theme",
|
5
|
+
type: "theme",
|
6
|
+
description: "Test theme y'all",
|
7
|
+
assets_path: File.expand_path(File.dirname(__FILE__))
|
8
|
+
})
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Theme:
|
1
|
+
/* Theme: Classic Theme */
|
2
2
|
body { margin: 2px; padding: 2px; }
|
3
3
|
|
4
4
|
.main { color: #444; }
|
@@ -8,7 +8,7 @@ body { background: black; }
|
|
8
8
|
/* Plugin: awesome-sauce */
|
9
9
|
.plugin-widget { background: red; color: #fff; }
|
10
10
|
|
11
|
-
/* Plugin:
|
11
|
+
/* Plugin: Octopress Asset Pipeline */
|
12
12
|
.css-plugin { background: #fed; }
|
13
13
|
|
14
14
|
body { display: table; }
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Theme:
|
1
|
+
/* Theme: Classic Theme */
|
2
2
|
body {
|
3
3
|
margin: 2px;
|
4
4
|
padding: 2px;
|
@@ -18,7 +18,7 @@ body {
|
|
18
18
|
color: #fff;
|
19
19
|
}
|
20
20
|
|
21
|
-
/* Plugin:
|
21
|
+
/* Plugin: Octopress Asset Pipeline */
|
22
22
|
.css-plugin {
|
23
23
|
background: #fed;
|
24
24
|
}
|
@@ -1,8 +1,4 @@
|
|
1
1
|
test_override: config from plugin override
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
#disable:
|
7
|
-
#pages: test_pages/one.html
|
8
|
-
#includes: true
|
2
|
+
page_permalinks:
|
3
|
+
a: test_pages/plugin_page_override.html
|
4
|
+
b: test_pages/plugin_page.html
|
data/test/test.rb
CHANGED
@@ -166,22 +166,22 @@ test_javascripts('concat_js')
|
|
166
166
|
test_configs('expected')
|
167
167
|
test_root_assets('expected')
|
168
168
|
|
169
|
-
Octopress::Ink.copy_plugin_assets('theme', '_copy',
|
169
|
+
Octopress::Ink.copy_plugin_assets('theme', {'path' => '_copy', 'force'=> true})
|
170
170
|
test_copy_assets('copy_test')
|
171
171
|
|
172
|
-
Octopress::Ink.copy_plugin_assets('theme', '_copy',
|
172
|
+
Octopress::Ink.copy_plugin_assets('theme', {'path' => '_copy', 'force'=> true, 'layouts' => true, 'pages' => true})
|
173
173
|
test_copy_assets('copy_layouts_pages')
|
174
174
|
|
175
175
|
build octopress_config: '_concat_false.yml'
|
176
176
|
test_stylesheets('concat_css_false', false)
|
177
177
|
test_javascripts('concat_js_false', false)
|
178
|
-
|
178
|
+
test_disabled('site')
|
179
179
|
|
180
|
-
|
181
|
-
|
180
|
+
build config: '_sass_compact.yml'
|
181
|
+
test_stylesheets('sass_compact')
|
182
182
|
|
183
|
-
|
184
|
-
|
183
|
+
build config: '_sass_expanded.yml'
|
184
|
+
test_stylesheets('sass_expanded')
|
185
185
|
|
186
186
|
print_failures
|
187
187
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: octopress-ink
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.alpha.
|
4
|
+
version: 1.0.0.alpha.44
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Mathis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -116,7 +116,6 @@ files:
|
|
116
116
|
- Rakefile
|
117
117
|
- assets/docs/_configuration.markdown
|
118
118
|
- assets/docs/_plugin-template.markdown
|
119
|
-
- assets/docs/creating-a-gem.markdown
|
120
119
|
- assets/docs/creating-a-plugin.markdown
|
121
120
|
- assets/docs/index.markdown
|
122
121
|
- assets/docs/plugin-reference.markdown
|
@@ -139,6 +138,7 @@ files:
|
|
139
138
|
- lib/octopress-ink/commands/copy.rb
|
140
139
|
- lib/octopress-ink/commands/helpers.rb
|
141
140
|
- lib/octopress-ink/commands/list.rb
|
141
|
+
- lib/octopress-ink/commands/new.rb
|
142
142
|
- lib/octopress-ink/configuration.rb
|
143
143
|
- lib/octopress-ink/filters.rb
|
144
144
|
- lib/octopress-ink/generators/plugin_assets.rb
|
@@ -194,6 +194,7 @@ files:
|
|
194
194
|
- test/copy_layouts_pages/_copy/layouts/default.html
|
195
195
|
- test/copy_layouts_pages/_copy/layouts/test.html
|
196
196
|
- test/copy_layouts_pages/_copy/pages/disable-test.html
|
197
|
+
- test/copy_layouts_pages/_copy/pages/four.xml
|
197
198
|
- test/copy_layouts_pages/_copy/pages/one.xml
|
198
199
|
- test/copy_layouts_pages/_copy/pages/three.md
|
199
200
|
- test/copy_layouts_pages/_copy/pages/two.md
|
@@ -210,6 +211,7 @@ files:
|
|
210
211
|
- test/copy_test/_copy/layouts/default.html
|
211
212
|
- test/copy_test/_copy/layouts/test.html
|
212
213
|
- test/copy_test/_copy/pages/disable-test.html
|
214
|
+
- test/copy_test/_copy/pages/four.xml
|
213
215
|
- test/copy_test/_copy/pages/one.xml
|
214
216
|
- test/copy_test/_copy/pages/three.md
|
215
217
|
- test/copy_test/_copy/pages/two.md
|
@@ -222,6 +224,7 @@ files:
|
|
222
224
|
- test/expected/2014/02/01/test-post.html
|
223
225
|
- test/expected/favicon.ico
|
224
226
|
- test/expected/favicon.png
|
227
|
+
- test/expected/four/index.xml
|
225
228
|
- test/expected/index.html
|
226
229
|
- test/expected/robots.txt
|
227
230
|
- test/expected/test_config/plugin_config.html
|
@@ -248,8 +251,8 @@ files:
|
|
248
251
|
- test/plugins/awesome-sauce/files/robots.txt
|
249
252
|
- test/plugins/awesome-sauce/includes/some-include.html
|
250
253
|
- test/plugins/awesome-sauce/layouts/test-layout.html
|
251
|
-
- test/plugins/awesome-sauce/pages/
|
252
|
-
- test/plugins/awesome-sauce/pages/
|
254
|
+
- test/plugins/awesome-sauce/pages/a.html
|
255
|
+
- test/plugins/awesome-sauce/pages/b.html
|
253
256
|
- test/plugins/awesome-sauce/plugin.rb
|
254
257
|
- test/plugins/awesome-sauce/stylesheets/plugin-media-test@print.css
|
255
258
|
- test/plugins/awesome-sauce/stylesheets/plugin-test.css
|
@@ -268,10 +271,10 @@ files:
|
|
268
271
|
- test/plugins/test-theme/layouts/default.html
|
269
272
|
- test/plugins/test-theme/layouts/test.html
|
270
273
|
- test/plugins/test-theme/pages/disable-test.html
|
271
|
-
- test/plugins/test-theme/pages/
|
272
|
-
- test/plugins/test-theme/pages/
|
273
|
-
- test/plugins/test-theme/pages/
|
274
|
-
- test/plugins/test-theme/pages/
|
274
|
+
- test/plugins/test-theme/pages/four.xml
|
275
|
+
- test/plugins/test-theme/pages/one.xml
|
276
|
+
- test/plugins/test-theme/pages/three.md
|
277
|
+
- test/plugins/test-theme/pages/two.md
|
275
278
|
- test/plugins/test-theme/plugin.rb
|
276
279
|
- test/plugins/test-theme/stylesheets/_colors.scss
|
277
280
|
- test/plugins/test-theme/stylesheets/disable-this.css
|
@@ -371,6 +374,7 @@ test_files:
|
|
371
374
|
- test/copy_layouts_pages/_copy/layouts/default.html
|
372
375
|
- test/copy_layouts_pages/_copy/layouts/test.html
|
373
376
|
- test/copy_layouts_pages/_copy/pages/disable-test.html
|
377
|
+
- test/copy_layouts_pages/_copy/pages/four.xml
|
374
378
|
- test/copy_layouts_pages/_copy/pages/one.xml
|
375
379
|
- test/copy_layouts_pages/_copy/pages/three.md
|
376
380
|
- test/copy_layouts_pages/_copy/pages/two.md
|
@@ -387,6 +391,7 @@ test_files:
|
|
387
391
|
- test/copy_test/_copy/layouts/default.html
|
388
392
|
- test/copy_test/_copy/layouts/test.html
|
389
393
|
- test/copy_test/_copy/pages/disable-test.html
|
394
|
+
- test/copy_test/_copy/pages/four.xml
|
390
395
|
- test/copy_test/_copy/pages/one.xml
|
391
396
|
- test/copy_test/_copy/pages/three.md
|
392
397
|
- test/copy_test/_copy/pages/two.md
|
@@ -399,6 +404,7 @@ test_files:
|
|
399
404
|
- test/expected/2014/02/01/test-post.html
|
400
405
|
- test/expected/favicon.ico
|
401
406
|
- test/expected/favicon.png
|
407
|
+
- test/expected/four/index.xml
|
402
408
|
- test/expected/index.html
|
403
409
|
- test/expected/robots.txt
|
404
410
|
- test/expected/test_config/plugin_config.html
|
@@ -425,8 +431,8 @@ test_files:
|
|
425
431
|
- test/plugins/awesome-sauce/files/robots.txt
|
426
432
|
- test/plugins/awesome-sauce/includes/some-include.html
|
427
433
|
- test/plugins/awesome-sauce/layouts/test-layout.html
|
428
|
-
- test/plugins/awesome-sauce/pages/
|
429
|
-
- test/plugins/awesome-sauce/pages/
|
434
|
+
- test/plugins/awesome-sauce/pages/a.html
|
435
|
+
- test/plugins/awesome-sauce/pages/b.html
|
430
436
|
- test/plugins/awesome-sauce/plugin.rb
|
431
437
|
- test/plugins/awesome-sauce/stylesheets/plugin-media-test@print.css
|
432
438
|
- test/plugins/awesome-sauce/stylesheets/plugin-test.css
|
@@ -445,10 +451,10 @@ test_files:
|
|
445
451
|
- test/plugins/test-theme/layouts/default.html
|
446
452
|
- test/plugins/test-theme/layouts/test.html
|
447
453
|
- test/plugins/test-theme/pages/disable-test.html
|
448
|
-
- test/plugins/test-theme/pages/
|
449
|
-
- test/plugins/test-theme/pages/
|
450
|
-
- test/plugins/test-theme/pages/
|
451
|
-
- test/plugins/test-theme/pages/
|
454
|
+
- test/plugins/test-theme/pages/four.xml
|
455
|
+
- test/plugins/test-theme/pages/one.xml
|
456
|
+
- test/plugins/test-theme/pages/three.md
|
457
|
+
- test/plugins/test-theme/pages/two.md
|
452
458
|
- test/plugins/test-theme/plugin.rb
|
453
459
|
- test/plugins/test-theme/stylesheets/_colors.scss
|
454
460
|
- test/plugins/test-theme/stylesheets/disable-this.css
|
@@ -1,69 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: "Creating a Gem"
|
3
|
-
permalink: /guides/creating-a-gem/
|
4
|
-
---
|
5
|
-
|
6
|
-
*This guide assumes you have already installed Git, and Ruby 1.9.3 or greater.*
|
7
|
-
|
8
|
-
Octopress Ink plugins are distributed as ruby gems so you'll probably need to create an acconut at [RubyGems.org](https://rubygems.org/sign_up) if you haven't yet. Also, be sure you have [bundler](http://bundler.io) installed.
|
9
|
-
|
10
|
-
### How to Create a Gem
|
11
|
-
|
12
|
-
The [bundler gem](http://bundler.io/) is a great way to manage gems and provides some terrific utilites for gem creators. Go ahead and
|
13
|
-
install it if you haven't yet.
|
14
|
-
|
15
|
-
```sh
|
16
|
-
gem install bundler
|
17
|
-
```
|
18
|
-
|
19
|
-
Now we'll use Bundler to create a gem project for our new plugin.
|
20
|
-
|
21
|
-
```sh
|
22
|
-
bundle gem baconnaise
|
23
|
-
```
|
24
|
-
|
25
|
-
That's right, this plugin will be called `baconnaise`. That command will generate a bunch of files into the new `baconnaise` directory. Take a peek inside and you'll see somethig like this:
|
26
|
-
|
27
|
-
```
|
28
|
-
lib/
|
29
|
-
baconnaise/
|
30
|
-
version.rb
|
31
|
-
baconnaise.rb
|
32
|
-
baconnaise.gemspec
|
33
|
-
Gemfile
|
34
|
-
LICENSE.txt
|
35
|
-
Rakefile
|
36
|
-
README.md
|
37
|
-
```
|
38
|
-
|
39
|
-
First, you'll want to edit your `baconnaise.gemspec` to be sure the information in that is right. Be sure to change the default description and summary. The gem won't build if you have a *TODO* in either of those. Here's what we're gonig to go with.
|
40
|
-
|
41
|
-
```ruby
|
42
|
-
spec.description = %q{Baconnaise, because mistakes have never been this spreadable.}
|
43
|
-
spec.summary = %q{Baconnaise, because #YOLO.}
|
44
|
-
```
|
45
|
-
|
46
|
-
Next you'll want to add Octopress Ink as a runtime dependency. Here's what that looks like.
|
47
|
-
|
48
|
-
```ruby
|
49
|
-
spec.add_runtime_dependency 'octopress-ink', '~> 1.0'
|
50
|
-
```
|
51
|
-
|
52
|
-
#### A note on Version Numbering
|
53
|
-
|
54
|
-
By default the `bundle gem` command starts you off at version `0.0.1`. If you take a look at `lib/baconnaise/version.rb` you'll see this.
|
55
|
-
|
56
|
-
```
|
57
|
-
module Baconnaise
|
58
|
-
VERSION = "0.0.1"
|
59
|
-
end
|
60
|
-
```
|
61
|
-
|
62
|
-
I'd encourage you to change your version number to `1.0.0` as soon as you release your plugin for production use. For a sensible guide on version numbers, refer to [semver.org](http://semver.org/).
|
63
|
-
|
64
|
-
---
|
65
|
-
|
66
|
-
For the next part we'll take a look at creating an Octopress Ink plugin.
|
67
|
-
|
68
|
-
[Creating a Plugin →]({% doc_url /guides/creating-a-plugin/ %})
|
69
|
-
|