-
Notifications
You must be signed in to change notification settings - Fork 124
/
jekyll-github-metadata.rb
89 lines (74 loc) · 2.54 KB
/
jekyll-github-metadata.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
require "octokit"
require "liquid"
require "logger"
if defined?(Jekyll) && Jekyll.respond_to?(:env) && Jekyll.env == "development"
begin
require "dotenv"
Dotenv.load
rescue LoadError
Jekyll.logger.debug "Dotenv not found. Skipping"
end
end
module Jekyll
unless const_defined? :Errors
module Errors
FatalException = Class.new(::RuntimeError) unless const_defined? :FatalException
end
end
module GitHubMetadata
autoload :Client, "jekyll-github-metadata/client"
autoload :EditLinkTag, "jekyll-github-metadata/edit-link-tag"
autoload :MetadataDrop, "jekyll-github-metadata/metadata_drop"
autoload :Pages, "jekyll-github-metadata/pages"
autoload :Repository, "jekyll-github-metadata/repository"
autoload :RepositoryFinder, "jekyll-github-metadata/repository_finder"
autoload :RepositoryCompat, "jekyll-github-metadata/repository_compat"
autoload :Sanitizer, "jekyll-github-metadata/sanitizer"
autoload :Value, "jekyll-github-metadata/value"
autoload :VERSION, "jekyll-github-metadata/version"
NoRepositoryError = RepositoryFinder::NoRepositoryError
if Jekyll.const_defined? :Site
require_relative "jekyll-github-metadata/site_github_munger"
end
class << self
attr_reader :repository_finder
attr_writer :client, :logger
def site
repository_finder.site
end
def environment
Jekyll.respond_to?(:env) ? Jekyll.env : (Pages.env || "development")
end
def logger
@logger ||= if Jekyll.respond_to?(:logger)
Jekyll.logger
else
Logger.new($stdout)
end
end
def log(severity, message)
if logger.method(severity).arity.abs >= 2
logger.public_send(severity, "GitHub Metadata:", message.to_s)
else
logger.public_send(severity, "GitHub Metadata: #{message}")
end
end
def client
@client ||= Client.new
end
def repository
@repository ||= GitHubMetadata::Repository.new(repository_finder.nwo).tap do |repo|
log :debug, "Generating for #{repo.nwo}"
end
end
def site=(new_site)
reset!
@repository_finder = GitHubMetadata::RepositoryFinder.new(new_site)
end
def reset!
@logger = @client = @repository = @nwo = @site = nil
end
end
end
end
Liquid::Template.register_tag("github_edit_link", Jekyll::GitHubMetadata::EditLinkTag)