jekyll-page-boilerplate 1.0.1
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 +7 -0
- data/exe/boilerplate +49 -0
- data/lib/jekyll_page_boilerplate.rb +33 -0
- data/lib/jekyll_page_boilerplate/example.yml +43 -0
- data/lib/jekyll_page_boilerplate/init.rb +11 -0
- data/lib/jekyll_page_boilerplate/msg.rb +40 -0
- data/lib/jekyll_page_boilerplate/page.rb +95 -0
- data/lib/jekyll_page_boilerplate/version.rb +3 -0
- metadata +82 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6a93e2b4e7e502c0d19906f1dae2786f6fb1ceecf39d52c0dbdf82db241215e2
|
4
|
+
data.tar.gz: 71434d9ca5e0072c25543fc2180b37ee59ce4702d73dde7ea454c16bf14d56cd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9cf262a0c5dc30f2af6b428ab50c0a9b5942c7e192c3e5f18a6e56dab04f2c081f3137119dabce88d108fedc9b65703363985df7a292fd70e472bcc15d778228
|
7
|
+
data.tar.gz: f09fcfbd8dec7ef599e738b9dc45b4616ac181b07088dce6e1025bf3db9ccac32a24b52be9624d24304c03bc011d841cbdda157cdf20e7d8d7b77f12749c7ed9
|
data/exe/boilerplate
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
STDOUT.sync = true
|
4
|
+
|
5
|
+
gem_dir = File.expand_path("..",File.dirname(__FILE__))
|
6
|
+
$LOAD_PATH.unshift gem_dir # Look in gem directory for resources first.
|
7
|
+
|
8
|
+
require 'jekyll_page_boilerplate'
|
9
|
+
require "mercenary"
|
10
|
+
|
11
|
+
Mercenary.program(:boilerplate) do |p|
|
12
|
+
p.version JekyllPageBoilerplate::VERSION
|
13
|
+
p.description 'jekyll-page-boilerplate is a gem for jekyll that helps you generate new pages'
|
14
|
+
p.syntax "jekyll-page <subcommand> [options]"
|
15
|
+
|
16
|
+
p.command(:page) do |c|
|
17
|
+
c.syntax "create BOILERPLATE_NAME \"NEW PAGE TITLE\""
|
18
|
+
c.description "Creates a page or post from a boilerplate."
|
19
|
+
|
20
|
+
c.action do |args, _|
|
21
|
+
JekyllPageBoilerplate.page args[0], args[1], c
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
p.command(:help) do |c|
|
26
|
+
c.syntax "help"
|
27
|
+
c.description "Describe what jekyll-page-boilerplate does."
|
28
|
+
|
29
|
+
c.action do
|
30
|
+
JekyllPageBoilerplate.help c
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
p.command(:init) do |c|
|
35
|
+
c.syntax "init"
|
36
|
+
c.description "Creates an example boilerplate."
|
37
|
+
|
38
|
+
c.action do
|
39
|
+
JekyllPageBoilerplate.init c
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
p.default_command(:help)
|
47
|
+
end
|
48
|
+
|
49
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "jekyll_page_boilerplate/version"
|
2
|
+
require "jekyll_page_boilerplate/page"
|
3
|
+
require "jekyll_page_boilerplate/msg"
|
4
|
+
require "jekyll_page_boilerplate/init"
|
5
|
+
|
6
|
+
module JekyllPageBoilerplate
|
7
|
+
class Error < StandardError; end
|
8
|
+
|
9
|
+
|
10
|
+
def self.init cmd
|
11
|
+
begin
|
12
|
+
Init.setup
|
13
|
+
rescue => e
|
14
|
+
cmd.logger.fatal e.message
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
def self.help cmd
|
20
|
+
cmd.logger.info Msg::HELP
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
def self.page boilerplate_name, page_title, cmd
|
25
|
+
page = Page.new(boilerplate_name)
|
26
|
+
begin
|
27
|
+
page.create(page_title)
|
28
|
+
rescue => e
|
29
|
+
cmd.logger.fatal e.message
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
---
|
2
|
+
|
3
|
+
# Create a new jekyll page/post from a boilerplate.
|
4
|
+
|
5
|
+
# A boilerplate is a yaml file in the `_boilerplates` folder.
|
6
|
+
|
7
|
+
# `$ boilerplate page example "Another post about pottery"`
|
8
|
+
|
9
|
+
# the path to create the new page under.
|
10
|
+
path: _posts
|
11
|
+
|
12
|
+
# when true new post/pages will include the date in the filename.
|
13
|
+
timestamp: true
|
14
|
+
|
15
|
+
# Any yaml you put under `header` will be added to your new pages/post
|
16
|
+
header:
|
17
|
+
layout: post
|
18
|
+
author: John Doe
|
19
|
+
|
20
|
+
# the boilerplate markdown content for your page
|
21
|
+
content: '
|
22
|
+
|
23
|
+
# Heading
|
24
|
+
|
25
|
+
|
26
|
+
Some stuff that changes a little bit but that I don't want to bother copying and pasting.'
|
27
|
+
|
28
|
+
|
29
|
+
# This would create a new file:
|
30
|
+
# _posts/yyyy-mm-dd-another-one-about-pottery.markdow`
|
31
|
+
# ---
|
32
|
+
# title: Another one about pottery
|
33
|
+
# created: 'yyyy-mm-dd hh:mm:ss -0000'
|
34
|
+
# layout: post
|
35
|
+
# author: John Doe
|
36
|
+
# ---
|
37
|
+
#
|
38
|
+
# Heading
|
39
|
+
# -------
|
40
|
+
#
|
41
|
+
# Some stuff that changes a little bit but that I don't want to bother copying and pasting.
|
42
|
+
#
|
43
|
+
#
|
@@ -0,0 +1,40 @@
|
|
1
|
+
|
2
|
+
module JekyllPageBoilerplate
|
3
|
+
module Msg
|
4
|
+
|
5
|
+
HELP = <<-'HELP'
|
6
|
+
|
7
|
+
Create a new jekyll page/post from a boilerplate.
|
8
|
+
|
9
|
+
A boilerplate is a yaml file in the `_boilerplates` folder.
|
10
|
+
|
11
|
+
ie. `_boilerplates/post.yml`
|
12
|
+
---
|
13
|
+
path: _posts
|
14
|
+
timestap: true
|
15
|
+
|
16
|
+
header:
|
17
|
+
layout: post
|
18
|
+
author: John Doe
|
19
|
+
|
20
|
+
Boilerplate yaml settings:
|
21
|
+
path - the path to create the new page under.
|
22
|
+
timestamp - when true new post/pages will include the date in the filename.
|
23
|
+
header - Any yaml you put under `header` will be added to your new pages/post
|
24
|
+
|
25
|
+
|
26
|
+
`$ boilerplate page post "Another one about pottery"`
|
27
|
+
|
28
|
+
would create a new file `_posts/yyyy-mm-dd-another-one-about-pottery.markdown`
|
29
|
+
---
|
30
|
+
title: Another one about pottery
|
31
|
+
created: 'yyyy-mm-dd hh:mm:ss -0000'
|
32
|
+
layout: post
|
33
|
+
author: John Doe
|
34
|
+
---
|
35
|
+
|
36
|
+
|
37
|
+
HELP
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
|
2
|
+
require 'yaml'
|
3
|
+
require "stringex"
|
4
|
+
|
5
|
+
module JekyllPageBoilerplate
|
6
|
+
class Page
|
7
|
+
|
8
|
+
BOILERPLATES_PATH = '_boilerplates'
|
9
|
+
FILE_DATE_FORMATE = '%Y-%m-%d'
|
10
|
+
|
11
|
+
|
12
|
+
def initialize boilerplate, suffix: '.yml'
|
13
|
+
plate_path = File.join(BOILERPLATES_PATH, "#{boilerplate}#{suffix}")
|
14
|
+
|
15
|
+
set_boilerplate_from_yaml_file( plate_path )
|
16
|
+
end
|
17
|
+
|
18
|
+
def create title
|
19
|
+
abort_unless_file_exists(@boilerplate['path'])
|
20
|
+
|
21
|
+
add_header_title( title )
|
22
|
+
add_header_created()
|
23
|
+
|
24
|
+
create_new_page( title )
|
25
|
+
|
26
|
+
@boilerplate
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def create_new_page title
|
32
|
+
filename = get_new_page_filename( title )
|
33
|
+
|
34
|
+
new_file_path = File.join( @boilerplate['path'], filename )
|
35
|
+
|
36
|
+
abort_if_file_exists(new_file_path)
|
37
|
+
|
38
|
+
open(new_file_path, 'w') do |page|
|
39
|
+
page.puts @boilerplate['header'].to_yaml
|
40
|
+
page.puts '---'
|
41
|
+
page.puts ''
|
42
|
+
page.print @boilerplate['content']
|
43
|
+
page.puts ''
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
def add_header_created
|
50
|
+
@boilerplate['header']['created'] = Time.now.to_s
|
51
|
+
end
|
52
|
+
|
53
|
+
def add_header_title title
|
54
|
+
@boilerplate['header']['title'] = title.gsub(/[&-]/, '&'=>'&', '-'=>' ')
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
def set_boilerplate_from_yaml_file yaml_path
|
59
|
+
abort_unless_file_exists( yaml_path )
|
60
|
+
|
61
|
+
@boilerplate = {}
|
62
|
+
|
63
|
+
File.open(yaml_path, 'r') do |yaml_file|
|
64
|
+
@boilerplate = YAML.load( yaml_file.read )
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
def get_new_page_filename title
|
70
|
+
title = title.to_url
|
71
|
+
title = "#{title}#{@boilerplate['suffix'] || '.markdown'}"
|
72
|
+
if @boilerplate['timestamp']
|
73
|
+
title = "#{Time.now.strftime(FILE_DATE_FORMATE)}-#{title}"
|
74
|
+
end
|
75
|
+
return title
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
def abort_if_file_exists(file_path)
|
81
|
+
if File.exist?(file_path)
|
82
|
+
raise "#{file_path} already exists!"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def abort_unless_file_exists(file_path)
|
87
|
+
unless File.exist?(file_path)
|
88
|
+
raise "#{file_path} does not exist!"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
metadata
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-page-boilerplate
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sean Ferney
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-10-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: mercenary
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.4.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.4.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: stringex
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: A jekyll plugin that allows you to create new pages or posts from a boilerplate
|
42
|
+
through the terminal.
|
43
|
+
email:
|
44
|
+
- sean@codekarma.dev
|
45
|
+
executables:
|
46
|
+
- boilerplate
|
47
|
+
extensions: []
|
48
|
+
extra_rdoc_files: []
|
49
|
+
files:
|
50
|
+
- exe/boilerplate
|
51
|
+
- lib/jekyll_page_boilerplate.rb
|
52
|
+
- lib/jekyll_page_boilerplate/example.yml
|
53
|
+
- lib/jekyll_page_boilerplate/init.rb
|
54
|
+
- lib/jekyll_page_boilerplate/msg.rb
|
55
|
+
- lib/jekyll_page_boilerplate/page.rb
|
56
|
+
- lib/jekyll_page_boilerplate/version.rb
|
57
|
+
homepage: https://github.com/CodeKarmaDev/jekyll-page-boilerplate
|
58
|
+
licenses:
|
59
|
+
- MIT
|
60
|
+
metadata:
|
61
|
+
homepage_uri: https://github.com/CodeKarmaDev/jekyll-page-boilerplate
|
62
|
+
source_code_uri: https://github.com/CodeKarmaDev/jekyll-page-boilerplate
|
63
|
+
post_install_message:
|
64
|
+
rdoc_options: []
|
65
|
+
require_paths:
|
66
|
+
- lib
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
requirements: []
|
78
|
+
rubygems_version: 3.0.8
|
79
|
+
signing_key:
|
80
|
+
specification_version: 4
|
81
|
+
summary: A jekyll plugin that create new pages from boilerplates
|
82
|
+
test_files: []
|