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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 62dc4c8500d533aaf0843cacf329e785cd310580524c97f490bf80a7f114cbc0
4
- data.tar.gz: dae3a437b31889c3b926542d4e62239aff5dc91d57e8d374e5f3ffbb34b0a32d
3
+ metadata.gz: 57baf95903827025064b936a07c83984779e201d632d62343c2c3dc046135e90
4
+ data.tar.gz: eb5f5afa3612fff8cd5f75b24aa976c7806ced88abfeb09b3f0951af15f34940
5
5
  SHA512:
6
- metadata.gz: 895958e1b87f99f06e05a38e2af51203da8977b92755419560c491ee09d9034bbb101068e7b102a81faaf651ed653aac918c77f6d3d367ea458da7d37979b14f
7
- data.tar.gz: 760729a485246dac07ced50aec301af45153a174872994c5959d9f1b68941ac143c0b3d022123be8b8fb2a8dae9274d7aeb83ee1c21228bb12375ee99fcae08a
6
+ metadata.gz: a6a6c5f66c0028be4371fac2125c6965a81b36e4e26fda36dcf9d822cb4446b710f959614e20db2cd7614e36f7bbebe4d8d7ffdfdaefb1b872b270cc6aebc50d
7
+ data.tar.gz: c840806dbd64b1f64fe891a8eec5326a09bb1be8f2c7e6130772da17616717186e9da58956d04f5c68a9cf423e8e86cd0ff476b31729a79e3905750046615a42
@@ -2,4 +2,4 @@
2
2
  built with <a href="https://jekyllrb.com/">jekyll</a> using <a href="{% link README.org %}">jekyll-recker</a> v{% recker_version %}
3
3
  <br/>
4
4
  <small>&copy; copyright {{ 'now' | date: '%Y' }}, {{ site.author }}</small>
5
- </foote>
5
+ </footer>
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 -%}
@@ -8,6 +8,10 @@
8
8
  float: right;
9
9
  }
10
10
 
11
+ .float-left {
12
+ float: left;
13
+ }
14
+
11
15
  .clearfix::after {
12
16
  content: "";
13
17
  clear: both;
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
- # Tweet
7
- class Tweet < Jekyll::Command
8
- class << self
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
- Recker.info 'generating site statistics'
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
@@ -9,7 +9,6 @@ module Jekyll
9
9
  class ShellCommandFailed < ReckerError; end
10
10
 
11
11
  def self.shell(cmd)
12
- Recker.debug("running shell command \`#{cmd}\`")
13
12
  out, err, status = Open3.capture3(cmd)
14
13
  return out if status.success?
15
14
 
@@ -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
- Recker.info('postign in dry mode, printing message')
37
- Recker.info("BEGIN MESSAGE\n#{message_body.strip}\nEND MESSAGE")
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,
@@ -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
- Recker.info "crunching stats.#{cruncher.stats_key}"
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
- Recker.info('tweeting in dry mode, printing message')
23
- Recker.info("BEGIN TWEET\n#{tweet_body.strip}\nEND TWEET")
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module Recker
5
- VERSION = '1.2.0'
5
+ VERSION = '1.2.1'
6
6
  end
7
7
  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.0
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-03-20 00:00:00.000000000 Z
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/log.rb
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
@@ -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