octopress-ink 1.0.0.alpha.43 → 1.0.0.alpha.44
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|