-
Notifications
You must be signed in to change notification settings - Fork 126
/
jekyll-github-metadata.rb
79 lines (64 loc) · 2.21 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
# frozen_string_literal: true
require "jekyll"
require "octokit"
if Jekyll.env == "development"
begin
require "dotenv"
Dotenv.load
rescue LoadError
Jekyll.logger.debug "Dotenv not found. Skipping"
end
end
module Jekyll
module GitHubMetadata
autoload :Client, "jekyll-github-metadata/client"
autoload :EditLinkTag, "jekyll-github-metadata/edit-link-tag"
autoload :MetadataDrop, "jekyll-github-metadata/metadata_drop"
autoload :Owner, "jekyll-github-metadata/owner"
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
require_relative "jekyll-github-metadata/site_github_munger" if Jekyll.const_defined? :Site
class << self
attr_reader :repository_finder
attr_writer :client, :logger
def site
repository_finder.site
end
def environment
Jekyll.env
end
def logger
@logger ||= Jekyll.logger
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)