jekyll-recker 1.16.0 → 2.4.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/lib/jekyll-recker.rb +6 -1
- data/lib/jekyll_recker/commands.rb +2 -2
- data/lib/jekyll_recker/date.rb +25 -0
- data/lib/jekyll_recker/entry.rb +44 -0
- data/lib/jekyll_recker/filters.rb +1 -3
- data/lib/jekyll_recker/generators.rb +80 -161
- data/lib/jekyll_recker/graphs.rb +92 -0
- data/lib/jekyll_recker/logging.rb +20 -0
- data/lib/jekyll_recker/math.rb +23 -0
- data/lib/jekyll_recker/site.rb +75 -0
- data/lib/jekyll_recker/social.rb +35 -28
- data/lib/jekyll_recker/tags.rb +5 -4
- data/lib/jekyll_recker/version.rb +1 -1
- metadata +9 -156
- data/LICENSE +0 -674
- data/README.md +0 -105
- data/_includes/figure.html +0 -14
- data/_includes/footer.html +0 -14
- data/_includes/head.html +0 -21
- data/_includes/header.html +0 -4
- data/_includes/nav.html +0 -10
- data/_includes/pager.html +0 -13
- data/_layouts/home.html +0 -13
- data/_layouts/page.html +0 -13
- data/_layouts/post.html +0 -20
- data/assets/jekyll-recker.scss +0 -121
- data/lib/jekyll_recker/mixins.rb +0 -21
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'logger'
|
4
|
+
|
5
|
+
module JekyllRecker
|
6
|
+
# Logging
|
7
|
+
module Logging
|
8
|
+
def self.included(base)
|
9
|
+
base.extend(self)
|
10
|
+
end
|
11
|
+
|
12
|
+
def info(msg)
|
13
|
+
Jekyll.logger.info 'jekyll-recker:', msg
|
14
|
+
end
|
15
|
+
|
16
|
+
def logger
|
17
|
+
::Jekyll.logger
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module JekyllRecker
|
4
|
+
# Math Module
|
5
|
+
module Math
|
6
|
+
def average(numlist)
|
7
|
+
calc = numlist.inject { |sum, el| sum + el }.to_f / numlist.size
|
8
|
+
calc.round
|
9
|
+
end
|
10
|
+
|
11
|
+
def total(numlist)
|
12
|
+
numlist.inject(0) { |sum, x| sum + x }
|
13
|
+
end
|
14
|
+
|
15
|
+
def occurences(keys, targets)
|
16
|
+
results = Hash.new(0)
|
17
|
+
targets.each do |target|
|
18
|
+
results[target] += 1 if keys.include? target
|
19
|
+
end
|
20
|
+
results
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler'
|
4
|
+
|
5
|
+
module JekyllRecker
|
6
|
+
# Site
|
7
|
+
class Site
|
8
|
+
def initialize(site)
|
9
|
+
@site = site
|
10
|
+
end
|
11
|
+
|
12
|
+
def entries
|
13
|
+
@entries ||= build_entries
|
14
|
+
end
|
15
|
+
|
16
|
+
def latest
|
17
|
+
entries.first
|
18
|
+
end
|
19
|
+
|
20
|
+
def production?
|
21
|
+
ENV['JEKYLL_ENV'] == 'production'
|
22
|
+
end
|
23
|
+
|
24
|
+
def data
|
25
|
+
@site.data
|
26
|
+
end
|
27
|
+
|
28
|
+
def url
|
29
|
+
@site.config['url']
|
30
|
+
end
|
31
|
+
|
32
|
+
def word_counts
|
33
|
+
entries.collect(&:word_count)
|
34
|
+
end
|
35
|
+
|
36
|
+
def words
|
37
|
+
entries.collect(&:words).flatten
|
38
|
+
end
|
39
|
+
|
40
|
+
def dates
|
41
|
+
entries.collect(&:date)
|
42
|
+
end
|
43
|
+
|
44
|
+
def images
|
45
|
+
exts = ['.jpg', 'jpeg', '.png', '.svg']
|
46
|
+
@site.static_files.collect(&:path).select { |f| exts.include? File.extname(f) }
|
47
|
+
end
|
48
|
+
|
49
|
+
def recker_config
|
50
|
+
@site.config.fetch('recker', {})
|
51
|
+
end
|
52
|
+
|
53
|
+
def config
|
54
|
+
@site.config
|
55
|
+
end
|
56
|
+
|
57
|
+
def graphs_dir
|
58
|
+
recker_config.fetch('graphs', 'assets/images/graphs/')
|
59
|
+
end
|
60
|
+
|
61
|
+
def data_dir
|
62
|
+
File.join Bundler.root, '_data'
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def build_entries
|
68
|
+
@site.posts.docs
|
69
|
+
.select(&:published?)
|
70
|
+
.sort_by(&:date)
|
71
|
+
.reverse
|
72
|
+
.map { |p| Entry.new(p) }
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
data/lib/jekyll_recker/social.rb
CHANGED
@@ -4,6 +4,7 @@ require 'slack-notifier'
|
|
4
4
|
require 'twitter'
|
5
5
|
|
6
6
|
module JekyllRecker
|
7
|
+
# Social Module
|
7
8
|
module Social
|
8
9
|
def self.action(site, args, options)
|
9
10
|
args += %w[slack twitter] if args.empty?
|
@@ -16,19 +17,21 @@ module JekyllRecker
|
|
16
17
|
# Backend base class for social sharing backends.
|
17
18
|
# @abstract
|
18
19
|
class Share
|
19
|
-
include
|
20
|
+
include Logging
|
21
|
+
|
22
|
+
attr_reader :site
|
20
23
|
|
21
24
|
def self.share(site, dry: false)
|
22
25
|
backend = new(site, dry: dry)
|
23
|
-
|
26
|
+
info "#{backend.name} - building configuration"
|
24
27
|
backend.configure!
|
25
28
|
|
26
|
-
|
29
|
+
info "#{backend.name} - sharing \"#{backend.latest_title}\""
|
27
30
|
backend.post!
|
28
31
|
end
|
29
32
|
|
30
33
|
def initialize(site, dry: false)
|
31
|
-
@site = site
|
34
|
+
@site = Site.new(site)
|
32
35
|
@dry = dry
|
33
36
|
end
|
34
37
|
|
@@ -37,29 +40,28 @@ module JekyllRecker
|
|
37
40
|
end
|
38
41
|
|
39
42
|
def config
|
40
|
-
|
43
|
+
site.recker_config.fetch(config_key, {})
|
41
44
|
end
|
42
45
|
|
43
46
|
def config_key
|
44
47
|
self.class.const_get(:KEY)
|
45
48
|
end
|
46
|
-
alias name
|
49
|
+
alias name config_key
|
47
50
|
|
48
51
|
def post_body
|
49
|
-
url = File.join @site.config['url'], latest.url
|
50
52
|
<<~BODY
|
51
|
-
#{latest.
|
52
|
-
#{latest.
|
53
|
-
#{url}
|
53
|
+
#{latest.title}
|
54
|
+
#{latest.subtitle}
|
55
|
+
#{File.join site.url, latest.url}
|
54
56
|
BODY
|
55
57
|
end
|
56
58
|
|
57
|
-
def
|
58
|
-
|
59
|
+
def latest_title
|
60
|
+
latest.title
|
59
61
|
end
|
60
62
|
|
61
|
-
def
|
62
|
-
latest
|
63
|
+
def latest
|
64
|
+
site.latest
|
63
65
|
end
|
64
66
|
|
65
67
|
def configure!
|
@@ -81,31 +83,36 @@ module JekyllRecker
|
|
81
83
|
@creds = {}
|
82
84
|
workspaces.each do |key, data|
|
83
85
|
webhook = ENV["SLACK_#{key.upcase}_WEBHOOK"] || extract_from_config(data)
|
84
|
-
if webhook.nil?
|
85
|
-
raise "cannot find slack webhook for #{key} workspace!"
|
86
|
-
end
|
86
|
+
raise "cannot find slack webhook for #{key} workspace!" if webhook.nil?
|
87
87
|
|
88
88
|
@creds[key] = webhook
|
89
89
|
end
|
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
|
-
|
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)
|
@@ -140,8 +147,8 @@ module JekyllRecker
|
|
140
147
|
|
141
148
|
def post!
|
142
149
|
if dry?
|
143
|
-
|
144
|
-
|
150
|
+
info('tweeting in dry mode, printing message')
|
151
|
+
puts "BEGIN TWEET\n#{post_body}END TWEET"
|
145
152
|
else
|
146
153
|
@client.update(post_body)
|
147
154
|
end
|
data/lib/jekyll_recker/tags.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module JekyllRecker
|
4
|
+
# Tags
|
4
5
|
module Tags
|
5
|
-
#
|
6
|
+
# Render the current plugin version
|
6
7
|
class Version < Liquid::Tag
|
7
|
-
def render(
|
8
|
-
VERSION
|
8
|
+
def render(_ctx)
|
9
|
+
"v#{JekyllRecker::VERSION}"
|
9
10
|
end
|
10
11
|
end
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
14
|
-
Liquid::Template.register_tag('
|
15
|
+
Liquid::Template.register_tag('version', JekyllRecker::Tags::Version)
|
metadata
CHANGED
@@ -1,113 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-recker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.4.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-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bump
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
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: pry
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
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: rubocop
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
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: yard
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
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: fastimage
|
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
13
|
- !ruby/object:Gem::Dependency
|
112
14
|
name: jekyll
|
113
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,48 +24,6 @@ dependencies:
|
|
122
24
|
- - "~>"
|
123
25
|
- !ruby/object:Gem::Version
|
124
26
|
version: '3.8'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: mini_magick
|
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'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: slack-notifier
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :runtime
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: twitter
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :runtime
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
27
|
description:
|
168
28
|
email:
|
169
29
|
- alex@reckerfamily.com
|
@@ -171,28 +31,21 @@ executables: []
|
|
171
31
|
extensions: []
|
172
32
|
extra_rdoc_files: []
|
173
33
|
files:
|
174
|
-
- LICENSE
|
175
|
-
- README.md
|
176
|
-
- _includes/figure.html
|
177
|
-
- _includes/footer.html
|
178
|
-
- _includes/head.html
|
179
|
-
- _includes/header.html
|
180
|
-
- _includes/nav.html
|
181
|
-
- _includes/pager.html
|
182
|
-
- _layouts/home.html
|
183
|
-
- _layouts/page.html
|
184
|
-
- _layouts/post.html
|
185
|
-
- assets/jekyll-recker.scss
|
186
34
|
- lib/jekyll-recker.rb
|
187
35
|
- lib/jekyll_recker/commands.rb
|
36
|
+
- lib/jekyll_recker/date.rb
|
37
|
+
- lib/jekyll_recker/entry.rb
|
188
38
|
- lib/jekyll_recker/filters.rb
|
189
39
|
- lib/jekyll_recker/generators.rb
|
190
|
-
- lib/jekyll_recker/
|
40
|
+
- lib/jekyll_recker/graphs.rb
|
41
|
+
- lib/jekyll_recker/logging.rb
|
42
|
+
- lib/jekyll_recker/math.rb
|
191
43
|
- lib/jekyll_recker/shell.rb
|
44
|
+
- lib/jekyll_recker/site.rb
|
192
45
|
- lib/jekyll_recker/social.rb
|
193
46
|
- lib/jekyll_recker/tags.rb
|
194
47
|
- lib/jekyll_recker/version.rb
|
195
|
-
homepage: https://www.github.com/arecker/
|
48
|
+
homepage: https://www.github.com/arecker/blog
|
196
49
|
licenses:
|
197
50
|
- GPLv3
|
198
51
|
metadata: {}
|