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 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