jekyll-recker 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|