-
Notifications
You must be signed in to change notification settings - Fork 159
Expand file tree
/
Copy pathjekyll-github-metadata.rb
More file actions
121 lines (103 loc) · 4.22 KB
/
Copy pathjekyll-github-metadata.rb
File metadata and controls
121 lines (103 loc) · 4.22 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
require 'octokit'
if defined?(Jekyll) && Jekyll.respond_to?(:env) && Jekyll.env == 'development'
begin
require 'dotenv'
Dotenv.load
rescue LoadError
end
end
module Jekyll
unless const_defined? :Errors
module Errors
FatalException = Class.new(::RuntimeError) unless const_defined? :FatalException
end
end
module GitHubMetadata
NoRepositoryError = Class.new(Jekyll::Errors::FatalException)
autoload :Client, 'jekyll-github-metadata/client'
autoload :Pages, 'jekyll-github-metadata/pages'
autoload :Repository, 'jekyll-github-metadata/repository'
autoload :Sanitizer, 'jekyll-github-metadata/sanitizer'
autoload :Value, 'jekyll-github-metadata/value'
autoload :VERSION, 'jekyll-github-metadata/version'
class << self
attr_accessor :repository
attr_writer :client
def environment
Jekyll.respond_to?(:env) ? Jekyll.env : (Pages.env || 'development')
end
def client
@client ||= Client.new
end
def values
@values ||= Hash.new
end
alias_method :to_h, :values
alias_method :to_liquid, :to_h
def clear_values!
@values = Hash.new
end
def reset!
clear_values!
@client = nil
@repository = nil
end
def [](key)
values[key.to_s]
end
def register_value(key, value)
values[key.to_s] = Value.new(key.to_s, value)
end
# Reset our values hash.
def init!
clear_values!
# Environment-Specific
register_value('environment', proc { Pages.env })
register_value('hostname', proc { Pages.github_hostname })
register_value('pages_env', proc { Pages.env })
register_value('pages_hostname', proc { Pages.pages_hostname })
register_value('api_url', proc { Pages.api_url })
register_value('help_url', proc { Pages.help_url })
register_value('versions', proc {
begin
require 'github-pages'
GitHubPages.versions
rescue LoadError; Hash.new end
})
# The Juicy Stuff
register_value('public_repositories', proc { |_,r| r.owner_public_repositories })
register_value('private_repositories', proc { |_,r| r.accessible_private_repositories })
register_value('organization_members', proc { |_,r| r.organization_public_members })
register_value('build_revision', proc {
ENV['JEKYLL_BUILD_REVISION'] || `git rev-parse HEAD`.strip
})
register_value('project_title', proc { |_,r| r.name })
register_value('project_tagline', proc { |_,r| r.tagline })
register_value('owner_name', proc { |_,r| r.owner })
register_value('owner_url', proc { |_,r| r.owner_url })
register_value('owner_gravatar_url', proc { |_,r| r.owner_gravatar_url })
register_value('repository_url', proc { |_,r| r.repository_url })
register_value('repository_nwo', proc { |_,r| r.nwo })
register_value('repository_name', proc { |_,r| r.name})
register_value('zip_url', proc { |_,r| r.zip_url })
register_value('tar_url', proc { |_,r| r.tar_url })
register_value('clone_url', proc { |_,r| r.repo_clone_url })
register_value('releases_url', proc { |_,r| r.releases_url })
register_value('issues_url', proc { |_,r| r.issues_url })
register_value('wiki_url', proc { |_,r| r.wiki_url })
register_value('language', proc { |_,r| r.language })
register_value('is_user_page', proc { |_,r| r.user_page? })
register_value('is_project_page', proc { |_,r| r.project_page? })
register_value('show_downloads', proc { |_,r| r.show_downloads? })
register_value('url', proc { |_,r| r.pages_url })
register_value('contributors', proc { |_,r| r.contributors })
register_value('releases', proc { |_,r| r.releases })
values
end
if Jekyll.const_defined? :Site
require_relative 'jekyll-github-metadata/ghp_metadata_generator'
end
end
init!
end
end