jekyll-recker 2.4.0 → 2.5.0
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/site.css +114 -0
- data/lib/jekyll_recker/generators.rb +88 -59
- data/lib/jekyll_recker/graphs.rb +4 -8
- data/lib/jekyll_recker/site.rb +21 -3
- data/lib/jekyll_recker/version.rb +1 -1
- data/tmp/.gitignore +2 -0
- metadata +116 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94c8ec595131e2f6ae35840a4717fed7d8795e7756068121719b5b13546ad32c
|
4
|
+
data.tar.gz: 7b17a5e58aa2c2f62f284c69e46b0ec7bfbe6db25b825d018f2c7bbab1509eb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ee477dad55b742aa114c8210898c287a3926e10d3f4cdf01dc363ad568f4565769ea8e8a0fba71083086546e2bbf379bcfe2bb690865528996de4fd90affa8f
|
7
|
+
data.tar.gz: 3a173b2a612f8a92d0293cd4bc6f30751b8a7ef59acf99ffa40da367a2f6f8e47878a8acf5d817108c51599d845335886f4ba3f04fd52e4892dfd9dd0807de47
|
data/assets/site.css
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
body {
|
2
|
+
max-width: 750px;
|
3
|
+
margin: 0 auto;
|
4
|
+
padding: 10px;
|
5
|
+
font-size: 16px;
|
6
|
+
line-height: 1.5;
|
7
|
+
-webkit-font-smoothing: antialiased;
|
8
|
+
-moz-osx-font-smoothing: grayscale;
|
9
|
+
}
|
10
|
+
|
11
|
+
* {
|
12
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
13
|
+
}
|
14
|
+
|
15
|
+
.post p {
|
16
|
+
font-size: 18px;
|
17
|
+
}
|
18
|
+
|
19
|
+
code, pre, .code {
|
20
|
+
font-family: monospace;
|
21
|
+
}
|
22
|
+
|
23
|
+
.title {
|
24
|
+
margin: 0;
|
25
|
+
}
|
26
|
+
|
27
|
+
.subtitle {
|
28
|
+
font-size: 18px;
|
29
|
+
margin: 0;
|
30
|
+
}
|
31
|
+
|
32
|
+
blockquote, small, figcaption, .subtitle {
|
33
|
+
color: #6f7370;
|
34
|
+
}
|
35
|
+
|
36
|
+
figure {
|
37
|
+
text-align: left;
|
38
|
+
}
|
39
|
+
|
40
|
+
figure img {
|
41
|
+
width: 100%;
|
42
|
+
height: auto;
|
43
|
+
max-width: 625px;
|
44
|
+
margin-right: auto;
|
45
|
+
display: block;
|
46
|
+
}
|
47
|
+
|
48
|
+
figure figcaption p {
|
49
|
+
font-style: italic;
|
50
|
+
line-height: 1.3;
|
51
|
+
margin-top: 10px;
|
52
|
+
}
|
53
|
+
|
54
|
+
figure {
|
55
|
+
text-align: left;
|
56
|
+
margin-top: 20px;
|
57
|
+
margin-bottom: 20px;
|
58
|
+
margin-left: 0;
|
59
|
+
max-width: 400px;
|
60
|
+
}
|
61
|
+
|
62
|
+
.float-right {
|
63
|
+
float: right;
|
64
|
+
}
|
65
|
+
|
66
|
+
.clearfix::after {
|
67
|
+
content: "";
|
68
|
+
clear: both;
|
69
|
+
display: block;
|
70
|
+
}
|
71
|
+
|
72
|
+
.column {
|
73
|
+
float: left;
|
74
|
+
width: 50%;
|
75
|
+
}
|
76
|
+
|
77
|
+
.show-on-mobile {
|
78
|
+
display: none;
|
79
|
+
}
|
80
|
+
|
81
|
+
@media screen and (max-width: 600px) {
|
82
|
+
.column {
|
83
|
+
width: 100%;
|
84
|
+
}
|
85
|
+
|
86
|
+
.hide-on-mobile {
|
87
|
+
display: none;
|
88
|
+
}
|
89
|
+
|
90
|
+
.show-on-mobile {
|
91
|
+
display: block;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
|
95
|
+
/* Clear floats after the columns */
|
96
|
+
.row:after {
|
97
|
+
content: "";
|
98
|
+
display: table;
|
99
|
+
clear: both;
|
100
|
+
}
|
101
|
+
|
102
|
+
.crowded h3, .crowded h2, .crowded p, .crowded ul {
|
103
|
+
margin-bottom: 0px;
|
104
|
+
margin-top: 5px;
|
105
|
+
}
|
106
|
+
|
107
|
+
td, nav span a {
|
108
|
+
padding-right: 5px;
|
109
|
+
}
|
110
|
+
|
111
|
+
footer small::after {
|
112
|
+
content:"\a";
|
113
|
+
white-space: pre;
|
114
|
+
}
|
@@ -3,46 +3,22 @@
|
|
3
3
|
module JekyllRecker
|
4
4
|
# Generators Module
|
5
5
|
module Generators
|
6
|
-
#
|
7
|
-
|
6
|
+
# Stats Generator
|
7
|
+
class Stats < Jekyll::Generator
|
8
8
|
include Date
|
9
9
|
include Logging
|
10
10
|
include Math
|
11
11
|
|
12
12
|
attr_reader :site
|
13
13
|
|
14
|
-
def name
|
15
|
-
self.class.name.split('::').last.downcase
|
16
|
-
end
|
17
|
-
|
18
14
|
def generate(site)
|
19
15
|
@site = Site.new(site)
|
20
|
-
|
21
|
-
|
22
|
-
else
|
23
|
-
info "running #{name} generator"
|
24
|
-
data = crunch
|
25
|
-
File.open(data_file_target, 'w') { |f| f.write(JSON.pretty_generate(data)) } unless data.nil?
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def data_file_target
|
30
|
-
File.join site.data_dir, "#{name}.json"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# Stats Generator
|
35
|
-
class Stats < Jekyll::Generator
|
36
|
-
include Base
|
37
|
-
|
38
|
-
attr_reader :site
|
39
|
-
|
40
|
-
def crunch
|
41
|
-
generate_stats
|
16
|
+
info 'calculating statistics'
|
17
|
+
site.data['stats'] = stats
|
42
18
|
end
|
43
19
|
|
44
|
-
def
|
45
|
-
{
|
20
|
+
def stats
|
21
|
+
@stats ||= {
|
46
22
|
'total_words' => total(site.word_counts),
|
47
23
|
'average_words' => average(site.word_counts),
|
48
24
|
'total_posts' => site.entries.size,
|
@@ -70,49 +46,48 @@ module JekyllRecker
|
|
70
46
|
|
71
47
|
# Graphs Generator
|
72
48
|
class Graphs < Jekyll::Generator
|
73
|
-
include
|
74
|
-
|
75
|
-
def crunch
|
76
|
-
JekyllRecker::Graphs.generate_graphs(site)
|
77
|
-
nil
|
78
|
-
end
|
79
|
-
end
|
49
|
+
include Logging
|
80
50
|
|
81
|
-
|
82
|
-
class Git < Jekyll::Generator
|
83
|
-
include Base
|
51
|
+
attr_reader :site
|
84
52
|
|
85
|
-
def
|
86
|
-
|
87
|
-
|
88
|
-
|
53
|
+
def generate(site)
|
54
|
+
@site = Site.new(site)
|
55
|
+
if @site.production? && @site.recker_config.fetch('production_skip_graphs', true)
|
56
|
+
info 'skipping graphs (production)'
|
57
|
+
else
|
58
|
+
info 'generating graphs'
|
59
|
+
JekyllRecker::Graphs.generate_graphs(@site)
|
60
|
+
end
|
89
61
|
end
|
90
62
|
end
|
91
63
|
|
92
64
|
# Image Resize Generator
|
93
65
|
class ImageResize < Jekyll::Generator
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
66
|
+
require 'fastimage'
|
67
|
+
require 'mini_magick'
|
68
|
+
|
69
|
+
include Logging
|
70
|
+
|
71
|
+
attr_reader :site
|
72
|
+
|
73
|
+
def generate(site)
|
74
|
+
@site = Site.new(site)
|
75
|
+
if @site.production? && @site.recker_config.fetch('production_skip_images', true)
|
76
|
+
info 'skipping image resizing (production)'
|
77
|
+
else
|
78
|
+
info 'checking images sizes'
|
79
|
+
resizeable_images.each do |f, d|
|
80
|
+
info "resizing #{f} to fit #{d}"
|
81
|
+
image = MiniMagick::Image.new(f)
|
82
|
+
image.resize d
|
83
|
+
end
|
103
84
|
end
|
104
|
-
nil
|
105
85
|
end
|
106
86
|
|
107
87
|
def too_big?(width, height)
|
108
88
|
width > 800 || height > 800
|
109
89
|
end
|
110
90
|
|
111
|
-
def load_deps!
|
112
|
-
require 'fastimage'
|
113
|
-
require 'mini_magick'
|
114
|
-
end
|
115
|
-
|
116
91
|
def images_without_graphs
|
117
92
|
site.images.reject { |i| i.include?('/graphs/') }
|
118
93
|
end
|
@@ -130,5 +105,59 @@ module JekyllRecker
|
|
130
105
|
end
|
131
106
|
end
|
132
107
|
end
|
108
|
+
|
109
|
+
# Code Coverage Generator
|
110
|
+
class CodeCoverage < Jekyll::Generator
|
111
|
+
include Logging
|
112
|
+
|
113
|
+
attr_reader :site
|
114
|
+
|
115
|
+
def generate(site)
|
116
|
+
@site = Site.new(site)
|
117
|
+
info 'running tests'
|
118
|
+
Shell.run 'rspec'
|
119
|
+
info 'reading code coverage'
|
120
|
+
@site.data['coverage'] = JSON.parse(File.read(tmp_file))
|
121
|
+
end
|
122
|
+
|
123
|
+
private
|
124
|
+
|
125
|
+
def tmp_file
|
126
|
+
site.tmp_join('coverage.json')
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
# Yard Generator
|
131
|
+
class Yard < Jekyll::Generator
|
132
|
+
include Logging
|
133
|
+
|
134
|
+
attr_reader :site
|
135
|
+
|
136
|
+
def generate(site)
|
137
|
+
@site = Site.new(site)
|
138
|
+
info 'generating documentation'
|
139
|
+
Shell.run "yard -o #{@site.site_join('doc')} -q"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
# Git History Generator
|
144
|
+
class GitHistory < Jekyll::Generator
|
145
|
+
include Logging
|
146
|
+
|
147
|
+
attr_reader :site
|
148
|
+
|
149
|
+
def generate(site)
|
150
|
+
@site = Site.new(site)
|
151
|
+
info 'reading git history'
|
152
|
+
site.data['git'] = {
|
153
|
+
'commit_count' => commit_count
|
154
|
+
}
|
155
|
+
end
|
156
|
+
|
157
|
+
def commit_count
|
158
|
+
@commit_count ||= Shell.run('git rev-list --count master').chomp
|
159
|
+
end
|
160
|
+
end
|
133
161
|
end
|
134
162
|
end
|
163
|
+
|
data/lib/jekyll_recker/graphs.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'bundler'
|
4
|
-
|
5
3
|
module JekyllRecker
|
6
4
|
# Graphs module
|
7
5
|
module Graphs
|
@@ -16,7 +14,7 @@ module JekyllRecker
|
|
16
14
|
attr_reader :site
|
17
15
|
|
18
16
|
def graphs_join(path)
|
19
|
-
File.join
|
17
|
+
File.join site.root, @graphs_dir, path
|
20
18
|
end
|
21
19
|
end
|
22
20
|
|
@@ -67,13 +65,11 @@ module JekyllRecker
|
|
67
65
|
include Base
|
68
66
|
|
69
67
|
def initialize(site)
|
70
|
-
@
|
71
|
-
@graphs_dir = site.graphs_dir
|
68
|
+
@site = site
|
72
69
|
end
|
73
70
|
|
74
71
|
def results
|
75
|
-
|
76
|
-
data = JSON.parse(File.read(path))['swears']
|
72
|
+
data = site.data['stats']['swears'].clone
|
77
73
|
data.delete('total')
|
78
74
|
data
|
79
75
|
end
|
@@ -85,7 +81,7 @@ module JekyllRecker
|
|
85
81
|
g.legend_at_bottom = true
|
86
82
|
g.minimum_value = 0
|
87
83
|
results.each { |w, n| g.data w, n }
|
88
|
-
g.write(graphs_join('swears.png'))
|
84
|
+
g.write(site.graphs_join('swears.png'))
|
89
85
|
end
|
90
86
|
end
|
91
87
|
end
|
data/lib/jekyll_recker/site.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'bundler'
|
4
|
-
|
5
3
|
module JekyllRecker
|
6
4
|
# Site
|
7
5
|
class Site
|
@@ -46,6 +44,14 @@ module JekyllRecker
|
|
46
44
|
@site.static_files.collect(&:path).select { |f| exts.include? File.extname(f) }
|
47
45
|
end
|
48
46
|
|
47
|
+
def root
|
48
|
+
File.absolute_path(File.join(__dir__, '../../'))
|
49
|
+
end
|
50
|
+
|
51
|
+
def root_join(path)
|
52
|
+
File.join(root, path)
|
53
|
+
end
|
54
|
+
|
49
55
|
def recker_config
|
50
56
|
@site.config.fetch('recker', {})
|
51
57
|
end
|
@@ -59,7 +65,19 @@ module JekyllRecker
|
|
59
65
|
end
|
60
66
|
|
61
67
|
def data_dir
|
62
|
-
File.join
|
68
|
+
File.join root, '_data'
|
69
|
+
end
|
70
|
+
|
71
|
+
def tmp_join(path)
|
72
|
+
File.join root, 'tmp', path
|
73
|
+
end
|
74
|
+
|
75
|
+
def graphs_join(path)
|
76
|
+
File.join root, 'assets/images/graphs/', path
|
77
|
+
end
|
78
|
+
|
79
|
+
def site_join(path)
|
80
|
+
File.join(root, '_site', path)
|
63
81
|
end
|
64
82
|
|
65
83
|
private
|
data/tmp/.gitignore
ADDED
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-recker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Recker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: fastimage
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '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'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: gruff
|
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'
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: jekyll
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -24,6 +52,90 @@ dependencies:
|
|
24
52
|
- - "~>"
|
25
53
|
- !ruby/object:Gem::Version
|
26
54
|
version: '3.8'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mini_magick
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: slack-notifier
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: twitter
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: yard
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
27
139
|
description:
|
28
140
|
email:
|
29
141
|
- alex@reckerfamily.com
|
@@ -31,6 +143,7 @@ executables: []
|
|
31
143
|
extensions: []
|
32
144
|
extra_rdoc_files: []
|
33
145
|
files:
|
146
|
+
- assets/site.css
|
34
147
|
- lib/jekyll-recker.rb
|
35
148
|
- lib/jekyll_recker/commands.rb
|
36
149
|
- lib/jekyll_recker/date.rb
|
@@ -45,6 +158,7 @@ files:
|
|
45
158
|
- lib/jekyll_recker/social.rb
|
46
159
|
- lib/jekyll_recker/tags.rb
|
47
160
|
- lib/jekyll_recker/version.rb
|
161
|
+
- tmp/.gitignore
|
48
162
|
homepage: https://www.github.com/arecker/blog
|
49
163
|
licenses:
|
50
164
|
- GPLv3
|