jekyll-recker 2.3.1 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/jekyll_recker/entry.rb +1 -1
- data/lib/jekyll_recker/filters.rb +1 -1
- data/lib/jekyll_recker/generators.rb +51 -40
- data/lib/jekyll_recker/graphs.rb +8 -4
- data/lib/jekyll_recker/site.rb +10 -5
- data/lib/jekyll_recker/social.rb +16 -9
- data/lib/jekyll_recker/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f3c029100fd9fc95b7f7b065e17bbb5cd2baf321fd0b3f93aeac96505e816d6
|
4
|
+
data.tar.gz: f66cd31401dd09fd965f34372c117dd26ab582cb8d761d5a00fa1a41352c3e31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2171c0a55cb2e419ae0c120880fef8e11fd4d01b554327f2adca939f8a92c5c0e0b37934acf58d64bbf276688cc7785aa4c06b46db5a224be721b71a0a3d4805
|
7
|
+
data.tar.gz: f07aadca9f824b3c22bcbca26c208fe29e1ffa6fee993984263456f951d861d58ec2697aed963a9bbd7924c3d8b6282ef2f6857f335ab8a343b3486fef039e88
|
data/lib/jekyll_recker/entry.rb
CHANGED
@@ -8,28 +8,41 @@ module JekyllRecker
|
|
8
8
|
include Date
|
9
9
|
include Logging
|
10
10
|
include Math
|
11
|
-
end
|
12
|
-
|
13
|
-
# Stats Generator
|
14
|
-
class Stats < Jekyll::Generator
|
15
|
-
include Base
|
16
11
|
|
17
12
|
attr_reader :site
|
18
13
|
|
14
|
+
def name
|
15
|
+
self.class.name.split('::').last.downcase
|
16
|
+
end
|
17
|
+
|
19
18
|
def generate(site)
|
20
19
|
@site = Site.new(site)
|
21
|
-
generate_stats!
|
22
20
|
if @site.production?
|
23
|
-
info
|
21
|
+
info "skipping #{name} generator"
|
24
22
|
else
|
25
|
-
info
|
26
|
-
|
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?
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
30
|
-
def
|
31
|
-
|
32
|
-
|
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
|
42
|
+
end
|
43
|
+
|
44
|
+
def generate_stats
|
45
|
+
{
|
33
46
|
'total_words' => total(site.word_counts),
|
34
47
|
'average_words' => average(site.word_counts),
|
35
48
|
'total_posts' => site.entries.size,
|
@@ -51,45 +64,44 @@ module JekyllRecker
|
|
51
64
|
end
|
52
65
|
|
53
66
|
def swears
|
54
|
-
|
55
|
-
ass
|
56
|
-
asshole
|
57
|
-
booger
|
58
|
-
crap
|
59
|
-
damn
|
60
|
-
fart
|
61
|
-
fuck
|
62
|
-
hell
|
63
|
-
jackass
|
64
|
-
piss
|
65
|
-
poop
|
66
|
-
shit
|
67
|
-
]
|
67
|
+
site.recker_config.fetch('swears', [])
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
#
|
72
|
-
class
|
71
|
+
# Graphs Generator
|
72
|
+
class Graphs < Jekyll::Generator
|
73
73
|
include Base
|
74
74
|
|
75
|
-
|
75
|
+
def crunch
|
76
|
+
JekyllRecker::Graphs.generate_graphs(site)
|
77
|
+
nil
|
78
|
+
end
|
79
|
+
end
|
76
80
|
|
77
|
-
|
78
|
-
|
81
|
+
# Git Generator
|
82
|
+
class Git < Jekyll::Generator
|
83
|
+
include Base
|
79
84
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
85
|
+
def crunch
|
86
|
+
{
|
87
|
+
'commit_count' => Shell.run('git rev-list --count master').chomp
|
88
|
+
}
|
89
|
+
end
|
90
|
+
end
|
84
91
|
|
85
|
-
|
92
|
+
# Image Resize Generator
|
93
|
+
class ImageResize < Jekyll::Generator
|
94
|
+
include Base
|
86
95
|
|
96
|
+
def crunch
|
97
|
+
load_deps!
|
87
98
|
info 'checking images'
|
88
99
|
resizeable_images.each do |f, d|
|
89
100
|
info "resizing #{f} to fit #{d}"
|
90
101
|
image = MiniMagick::Image.new(f)
|
91
102
|
image.resize d
|
92
103
|
end
|
104
|
+
nil
|
93
105
|
end
|
94
106
|
|
95
107
|
def too_big?(width, height)
|
@@ -101,13 +113,12 @@ module JekyllRecker
|
|
101
113
|
require 'mini_magick'
|
102
114
|
end
|
103
115
|
|
104
|
-
def
|
105
|
-
|
116
|
+
def images_without_graphs
|
117
|
+
site.images.reject { |i| i.include?('/graphs/') }
|
106
118
|
end
|
107
119
|
|
108
120
|
def resizeable_images
|
109
|
-
|
110
|
-
with_sizes = without_graphs.map { |f| [f, FastImage.size(f)].flatten }
|
121
|
+
with_sizes = images_without_graphs.map { |f| [f, FastImage.size(f)].flatten }
|
111
122
|
with_sizes.select! { |f| too_big?(f[1], f[2]) }
|
112
123
|
with_sizes.map do |f, w, h|
|
113
124
|
dimensions = if w > h
|
data/lib/jekyll_recker/graphs.rb
CHANGED
@@ -66,14 +66,18 @@ module JekyllRecker
|
|
66
66
|
class Swears
|
67
67
|
include Base
|
68
68
|
|
69
|
-
attr_reader :results
|
70
|
-
|
71
69
|
def initialize(site)
|
72
|
-
@
|
73
|
-
@results.delete('total')
|
70
|
+
@data_dir = site.data_dir
|
74
71
|
@graphs_dir = site.graphs_dir
|
75
72
|
end
|
76
73
|
|
74
|
+
def results
|
75
|
+
path = File.join(@data_dir, 'stats.json')
|
76
|
+
data = JSON.parse(File.read(path))['swears']
|
77
|
+
data.delete('total')
|
78
|
+
data
|
79
|
+
end
|
80
|
+
|
77
81
|
def write
|
78
82
|
g = ::Gruff::Pie.new('800x600')
|
79
83
|
g.theme = Gruff::Themes::PASTEL
|
data/lib/jekyll_recker/site.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'bundler'
|
4
|
+
|
3
5
|
module JekyllRecker
|
4
6
|
# Site
|
5
7
|
class Site
|
@@ -15,7 +17,6 @@ module JekyllRecker
|
|
15
17
|
entries.first
|
16
18
|
end
|
17
19
|
|
18
|
-
|
19
20
|
def production?
|
20
21
|
ENV['JEKYLL_ENV'] == 'production'
|
21
22
|
end
|
@@ -57,14 +58,18 @@ module JekyllRecker
|
|
57
58
|
recker_config.fetch('graphs', 'assets/images/graphs/')
|
58
59
|
end
|
59
60
|
|
61
|
+
def data_dir
|
62
|
+
File.join Bundler.root, '_data'
|
63
|
+
end
|
64
|
+
|
60
65
|
private
|
61
66
|
|
62
67
|
def build_entries
|
63
68
|
@site.posts.docs
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
69
|
+
.select(&:published?)
|
70
|
+
.sort_by(&:date)
|
71
|
+
.reverse
|
72
|
+
.map { |p| Entry.new(p) }
|
68
73
|
end
|
69
74
|
end
|
70
75
|
end
|
data/lib/jekyll_recker/social.rb
CHANGED
@@ -46,7 +46,7 @@ module JekyllRecker
|
|
46
46
|
def config_key
|
47
47
|
self.class.const_get(:KEY)
|
48
48
|
end
|
49
|
-
alias
|
49
|
+
alias name config_key
|
50
50
|
|
51
51
|
def post_body
|
52
52
|
<<~BODY
|
@@ -90,22 +90,29 @@ module JekyllRecker
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def post!
|
93
|
-
message_body = ::Slack::Notifier::Util::LinkFormatter.format(post_body)
|
94
93
|
workspaces.each do |key, config|
|
95
94
|
info "posting to #{key} workspace"
|
96
95
|
if @dry
|
97
|
-
puts "BEGIN MESSAGE\n#{
|
96
|
+
puts "BEGIN MESSAGE\n#{post_body.strip}\nEND MESSAGE"
|
98
97
|
else
|
99
|
-
|
100
|
-
@creds[key].strip,
|
101
|
-
channel: config.fetch('channel'),
|
102
|
-
username: config.fetch('username'),
|
103
|
-
icon_emoji: config.fetch('emoji')
|
104
|
-
).post(text: message_body)
|
98
|
+
post(key, config)
|
105
99
|
end
|
106
100
|
end
|
107
101
|
end
|
108
102
|
|
103
|
+
def post(key, config)
|
104
|
+
::Slack::Notifier.new(
|
105
|
+
@creds[key].strip,
|
106
|
+
channel: config.fetch('channel'),
|
107
|
+
username: config.fetch('username'),
|
108
|
+
icon_emoji: config.fetch('emoji')
|
109
|
+
).post(text: message_body)
|
110
|
+
end
|
111
|
+
|
112
|
+
def post_body
|
113
|
+
::Slack::Notifier::Util::LinkFormatter.format(super)
|
114
|
+
end
|
115
|
+
|
109
116
|
private
|
110
117
|
|
111
118
|
def extract_from_config(data)
|