jekyll-recker 1.2.0 → 1.2.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 +4 -4
- data/_includes/footer.html +1 -1
- data/_includes/nav.html +1 -0
- data/_layouts/post.html +7 -0
- data/assets/jekyll-recker.scss +4 -0
- data/lib/jekyll-recker.rb +3 -1
- data/lib/jekyll-recker/commands.rb +4 -44
- data/lib/jekyll-recker/commands/share.rb +25 -0
- data/lib/jekyll-recker/commands/slack.rb +30 -0
- data/lib/jekyll-recker/commands/tweet.rb +31 -0
- data/lib/jekyll-recker/generators.rb +3 -1
- data/lib/jekyll-recker/logger.rb +20 -0
- data/lib/jekyll-recker/mixins.rb +27 -0
- data/lib/jekyll-recker/shell.rb +0 -1
- data/lib/jekyll-recker/slack.rb +4 -2
- data/lib/jekyll-recker/stats.rb +4 -5
- data/lib/jekyll-recker/twitter.rb +4 -2
- data/lib/jekyll-recker/version.rb +1 -1
- metadata +7 -3
- data/lib/jekyll-recker/log.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 57baf95903827025064b936a07c83984779e201d632d62343c2c3dc046135e90
|
4
|
+
data.tar.gz: eb5f5afa3612fff8cd5f75b24aa976c7806ced88abfeb09b3f0951af15f34940
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6a6c5f66c0028be4371fac2125c6965a81b36e4e26fda36dcf9d822cb4446b710f959614e20db2cd7614e36f7bbebe4d8d7ffdfdaefb1b872b270cc6aebc50d
|
7
|
+
data.tar.gz: c840806dbd64b1f64fe891a8eec5326a09bb1be8f2c7e6130772da17616717186e9da58956d04f5c68a9cf423e8e86cd0ff476b31729a79e3905750046615a42
|
data/_includes/footer.html
CHANGED
data/_includes/nav.html
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
<a href="{{ site.baseurl }}/" class="{% if page.active == 'index' %}active{% endif %}">index</a>
|
3
3
|
<a href="{% link archive.html %}" class="{% if page.active == 'archive' %}active{% endif %}">archive</a>
|
4
4
|
<a href="{% link stats.org %}" class="{% if page.active == 'stats' %}active{% endif %}">stats</a>
|
5
|
+
<a href="{% link projects.html %}" class="{% if page.active == 'projects' %}active{% endif %}">projects</a>
|
5
6
|
<a href="{% link contact.html %}" class="{% if page.active == 'contact' %}active{% endif %}">contact</a>
|
6
7
|
<span class="float-right hide-on-mobile">{{ page.slug }}</span>
|
7
8
|
</nav>
|
data/_layouts/post.html
CHANGED
@@ -6,6 +6,13 @@ layout: default
|
|
6
6
|
<hr/>
|
7
7
|
{% include nav.html %}
|
8
8
|
<hr/>
|
9
|
+
{%- if page.image -%}
|
10
|
+
<br/>
|
11
|
+
<figure>
|
12
|
+
<img alt="page.image" src="{{ site.baseurl }}assets/images/{{ page.image }}"/>
|
13
|
+
</figure>
|
14
|
+
<br/>
|
15
|
+
{%- endif -%}
|
9
16
|
{{ content }}
|
10
17
|
<nav class="clearfix">
|
11
18
|
{%- if page.next -%}
|
data/assets/jekyll-recker.scss
CHANGED
data/lib/jekyll-recker.rb
CHANGED
@@ -5,11 +5,13 @@ require 'jekyll'
|
|
5
5
|
module Jekyll
|
6
6
|
# Recker
|
7
7
|
module Recker
|
8
|
+
require 'jekyll-recker/logger.rb'
|
9
|
+
require 'jekyll-recker/mixins.rb'
|
10
|
+
|
8
11
|
require 'jekyll-recker/commands.rb'
|
9
12
|
require 'jekyll-recker/configuration.rb'
|
10
13
|
require 'jekyll-recker/error.rb'
|
11
14
|
require 'jekyll-recker/generators.rb'
|
12
|
-
require 'jekyll-recker/log.rb'
|
13
15
|
require 'jekyll-recker/shell.rb'
|
14
16
|
require 'jekyll-recker/slack.rb'
|
15
17
|
require 'jekyll-recker/stats.rb'
|
@@ -2,51 +2,11 @@
|
|
2
2
|
|
3
3
|
module Jekyll
|
4
4
|
module Recker
|
5
|
+
# Commands
|
5
6
|
module Commands
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
def init_with_program(prog)
|
10
|
-
prog.command(:tweet) do |c|
|
11
|
-
c.syntax 'tweet'
|
12
|
-
c.description 'tweet latest post'
|
13
|
-
c.option 'dry', '-d', '--dry', 'print message instead of tweeting'
|
14
|
-
c.action do |_args, options|
|
15
|
-
client = Jekyll::Recker::Twitter.new(dry: options['dry'])
|
16
|
-
Recker.info 'discovering credentials'
|
17
|
-
client.discover_credentials!
|
18
|
-
Recker.info "tweeting #{client.latest.data['title']}"
|
19
|
-
client.post_latest!
|
20
|
-
rescue ReckerError => e
|
21
|
-
Recker.abort_with e.message
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# Slack
|
29
|
-
class Slack < Jekyll::Command
|
30
|
-
class << self
|
31
|
-
def init_with_program(prog)
|
32
|
-
prog.command(:slack) do |c|
|
33
|
-
c.syntax 'slack'
|
34
|
-
c.description 'slack latest post'
|
35
|
-
c.option 'dry', '-d', '--dry', 'print message instead of posting'
|
36
|
-
c.action do |_args, options|
|
37
|
-
Recker::Slack.each_in_config(dry: options['dry']) do |client|
|
38
|
-
Recker.info "#{client.key}: discovering webhook"
|
39
|
-
client.discover_webhook!
|
40
|
-
Recker.info "#{client.key}: posting #{client.latest.data['title']}"
|
41
|
-
client.post_latest!
|
42
|
-
end
|
43
|
-
rescue ReckerError => e
|
44
|
-
Recker.abort_with e.message
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
7
|
+
require 'jekyll-recker/commands/share.rb'
|
8
|
+
require 'jekyll-recker/commands/slack.rb'
|
9
|
+
require 'jekyll-recker/commands/tweet.rb'
|
50
10
|
end
|
51
11
|
end
|
52
12
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Recker
|
5
|
+
module Commands
|
6
|
+
# Share
|
7
|
+
class Share < Jekyll::Command
|
8
|
+
include Jekyll::Recker::LoggingMixin
|
9
|
+
|
10
|
+
def self.init_with_program(prog)
|
11
|
+
prog.command(:share) do |c|
|
12
|
+
c.syntax 'share'
|
13
|
+
c.description 'Share latest post with each configured backend'
|
14
|
+
c.option 'dry', '-d', '--dry', 'perform dry run'
|
15
|
+
c.action do |_args, _options|
|
16
|
+
logger.info 'normally I\'d share here'
|
17
|
+
rescue ReckerError => e
|
18
|
+
logger.abort_with e.message
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Recker
|
5
|
+
module Commands
|
6
|
+
# Slack
|
7
|
+
class Slack < Jekyll::Command
|
8
|
+
class << self
|
9
|
+
def init_with_program(prog)
|
10
|
+
prog.command(:slack) do |c|
|
11
|
+
c.syntax 'slack'
|
12
|
+
c.description 'slack latest post'
|
13
|
+
c.option 'dry', '-d', '--dry', 'print message instead of posting'
|
14
|
+
c.action do |_args, options|
|
15
|
+
Recker::Slack.each_in_config(dry: options['dry']) do |client|
|
16
|
+
Recker.info "#{client.key}: discovering webhook"
|
17
|
+
client.discover_webhook!
|
18
|
+
Recker.info "#{client.key}: posting #{client.latest.data['title']}"
|
19
|
+
client.post_latest!
|
20
|
+
end
|
21
|
+
rescue ReckerError => e
|
22
|
+
Recker.abort_with e.message
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Recker
|
5
|
+
module Commands
|
6
|
+
# Tweet
|
7
|
+
class Tweet < Jekyll::Command
|
8
|
+
include LoggingMixin
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def init_with_program(prog)
|
12
|
+
prog.command(:tweet) do |c|
|
13
|
+
c.syntax 'tweet'
|
14
|
+
c.description 'tweet latest post'
|
15
|
+
c.option 'dry', '-d', '--dry', 'print message instead of tweeting'
|
16
|
+
c.action do |_args, options|
|
17
|
+
client = Jekyll::Recker::Twitter.new(dry: options['dry'])
|
18
|
+
logger.info 'discovering credentials'
|
19
|
+
client.discover_credentials!
|
20
|
+
logger.info "tweeting #{client.latest.data['title']}"
|
21
|
+
client.post_latest!
|
22
|
+
rescue ReckerError => e
|
23
|
+
logger.abort_with e.message
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -5,8 +5,10 @@ module Jekyll
|
|
5
5
|
module Generators
|
6
6
|
# StatsGenerator
|
7
7
|
class StatsGenerator < Jekyll::Generator
|
8
|
+
include Jekyll::Recker::LoggingMixin
|
9
|
+
|
8
10
|
def generate(site)
|
9
|
-
|
11
|
+
logger.info 'generating site statistics'
|
10
12
|
site.data['stats'] = Stats.crunch(site)
|
11
13
|
end
|
12
14
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'logger'
|
4
|
+
|
5
|
+
module Jekyll
|
6
|
+
# Recker
|
7
|
+
module Recker
|
8
|
+
def self.logger
|
9
|
+
@logger ||= make_logger
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.make_logger
|
13
|
+
logger = Logger.new(STDOUT)
|
14
|
+
logger.formatter = proc do |_severity, _datetime, _progname, msg|
|
15
|
+
"jekyll-recker: #{msg}\n"
|
16
|
+
end
|
17
|
+
logger
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Recker
|
5
|
+
# Descendants Mixin
|
6
|
+
module DescendantsMixin
|
7
|
+
def self.included(base)
|
8
|
+
def base.descendants
|
9
|
+
ObjectSpace.each_object(Class).select { |klass| klass < self }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Logging Mixin
|
15
|
+
module LoggingMixin
|
16
|
+
def self.included(base)
|
17
|
+
def base.logger
|
18
|
+
Jekyll::Recker.logger
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def logger
|
23
|
+
Jekyll::Recker.logger
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/jekyll-recker/shell.rb
CHANGED
data/lib/jekyll-recker/slack.rb
CHANGED
@@ -7,6 +7,8 @@ module Jekyll
|
|
7
7
|
module Recker
|
8
8
|
# Slack
|
9
9
|
class Slack
|
10
|
+
include Jekyll::Recker::LoggingMixin
|
11
|
+
|
10
12
|
def self.each_in_config(dry: false)
|
11
13
|
Configuration.slack.map do |key, body|
|
12
14
|
yield new(key, body, dry: dry)
|
@@ -33,8 +35,8 @@ module Jekyll
|
|
33
35
|
|
34
36
|
def post_latest!
|
35
37
|
if @dry
|
36
|
-
|
37
|
-
|
38
|
+
logger.info('postign in dry mode, printing message')
|
39
|
+
logger.info("BEGIN MESSAGE\n#{message_body.strip}\nEND MESSAGE")
|
38
40
|
else
|
39
41
|
::Slack::Notifier.new(
|
40
42
|
@webhook.strip,
|
data/lib/jekyll-recker/stats.rb
CHANGED
@@ -6,11 +6,13 @@ module Jekyll
|
|
6
6
|
module Recker
|
7
7
|
# Stats
|
8
8
|
module Stats
|
9
|
+
include Jekyll::Recker::LoggingMixin
|
10
|
+
|
9
11
|
def self.crunch(site)
|
10
12
|
stats = {}
|
11
13
|
BaseCruncher.descendants.each do |cruncher_class|
|
12
14
|
cruncher = cruncher_class.new(site)
|
13
|
-
|
15
|
+
logger.info "crunching stats.#{cruncher.stats_key}"
|
14
16
|
stats[cruncher.stats_key] = cruncher.crunch
|
15
17
|
end
|
16
18
|
stats
|
@@ -19,10 +21,7 @@ module Jekyll
|
|
19
21
|
# Base Cruncher
|
20
22
|
class BaseCruncher
|
21
23
|
include Jekyll::Filters
|
22
|
-
|
23
|
-
def self.descendants
|
24
|
-
ObjectSpace.each_object(Class).select { |klass| klass < self }
|
25
|
-
end
|
24
|
+
include DescendantsMixin
|
26
25
|
|
27
26
|
def initialize(site)
|
28
27
|
@site = site
|
@@ -6,6 +6,8 @@ module Jekyll
|
|
6
6
|
module Recker
|
7
7
|
# Twitter Client
|
8
8
|
class Twitter
|
9
|
+
include LoggingMixin
|
10
|
+
|
9
11
|
def initialize(dry: false)
|
10
12
|
@dry = dry
|
11
13
|
end
|
@@ -19,8 +21,8 @@ module Jekyll
|
|
19
21
|
|
20
22
|
def post_latest!
|
21
23
|
if @dry
|
22
|
-
|
23
|
-
|
24
|
+
logger.info('tweeting in dry mode, printing message')
|
25
|
+
logger.info("BEGIN TWEET\n#{tweet_body.strip}\nEND TWEET")
|
24
26
|
else
|
25
27
|
@client.update(tweet_body)
|
26
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-recker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
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-
|
11
|
+
date: 2020-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -99,10 +99,14 @@ files:
|
|
99
99
|
- assets/jekyll-recker.scss
|
100
100
|
- lib/jekyll-recker.rb
|
101
101
|
- lib/jekyll-recker/commands.rb
|
102
|
+
- lib/jekyll-recker/commands/share.rb
|
103
|
+
- lib/jekyll-recker/commands/slack.rb
|
104
|
+
- lib/jekyll-recker/commands/tweet.rb
|
102
105
|
- lib/jekyll-recker/configuration.rb
|
103
106
|
- lib/jekyll-recker/error.rb
|
104
107
|
- lib/jekyll-recker/generators.rb
|
105
|
-
- lib/jekyll-recker/
|
108
|
+
- lib/jekyll-recker/logger.rb
|
109
|
+
- lib/jekyll-recker/mixins.rb
|
106
110
|
- lib/jekyll-recker/shell.rb
|
107
111
|
- lib/jekyll-recker/slack.rb
|
108
112
|
- lib/jekyll-recker/stats.rb
|
data/lib/jekyll-recker/log.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Jekyll
|
4
|
-
# Recker
|
5
|
-
module Recker
|
6
|
-
def self.debug(msg)
|
7
|
-
Jekyll.logger.debug("jekyll-recker: #{msg}")
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.info(msg)
|
11
|
-
Jekyll.logger.info("jekyll-recker: #{msg}")
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.error(msg)
|
15
|
-
Jekyll.logger.error("jekyll-recker: #{msg}")
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.abort_with(msg)
|
19
|
-
Jekyll.logger.abort_with("jekyll-recker: #{msg}")
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|