jekyll-github-metadata 2.10.0 → 2.11.0
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 +4 -4
- data/lib/jekyll-github-metadata.rb +2 -3
- data/lib/jekyll-github-metadata/client.rb +4 -3
- data/lib/jekyll-github-metadata/edit-link-tag.rb +2 -2
- data/lib/jekyll-github-metadata/metadata_drop.rb +7 -3
- data/lib/jekyll-github-metadata/owner.rb +88 -0
- data/lib/jekyll-github-metadata/pages.rb +21 -12
- data/lib/jekyll-github-metadata/repository.rb +14 -0
- data/lib/jekyll-github-metadata/repository_compat.rb +1 -0
- data/lib/jekyll-github-metadata/repository_finder.rb +2 -1
- data/lib/jekyll-github-metadata/sanitizer.rb +3 -1
- data/lib/jekyll-github-metadata/site_github_munger.rb +1 -0
- data/lib/jekyll-github-metadata/value.rb +2 -0
- data/lib/jekyll-github-metadata/version.rb +1 -1
- metadata +13 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 634131021fac3ff8f89c40c56551db5712c6b3b15242c14568b882e5b3298074
|
4
|
+
data.tar.gz: 97a704bc78b18f8166fd1cbced32d152ab908082bfa7b294f4219dc82fd9e3ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e51527e42561bab7081a48b3664371ee363115a83ce0cc90ec70c115519f2faa57b29238995e435f8a4b83a10d92ba55744c3b3c7fbbd557bbbd4f2b19a8aa1d
|
7
|
+
data.tar.gz: efbc51075fda949e9965d567895a50d9bcf017496174faba940f3eb386dd5c8be2877ca38102e2fd4097a6c0e6c3f5be2098e4fefad5ee1d2925a25b5a6d31cf
|
@@ -17,6 +17,7 @@ module Jekyll
|
|
17
17
|
autoload :Client, "jekyll-github-metadata/client"
|
18
18
|
autoload :EditLinkTag, "jekyll-github-metadata/edit-link-tag"
|
19
19
|
autoload :MetadataDrop, "jekyll-github-metadata/metadata_drop"
|
20
|
+
autoload :Owner, "jekyll-github-metadata/owner"
|
20
21
|
autoload :Pages, "jekyll-github-metadata/pages"
|
21
22
|
autoload :Repository, "jekyll-github-metadata/repository"
|
22
23
|
autoload :RepositoryFinder, "jekyll-github-metadata/repository_finder"
|
@@ -27,9 +28,7 @@ module Jekyll
|
|
27
28
|
|
28
29
|
NoRepositoryError = RepositoryFinder::NoRepositoryError
|
29
30
|
|
30
|
-
if Jekyll.const_defined? :Site
|
31
|
-
require_relative "jekyll-github-metadata/site_github_munger"
|
32
|
-
end
|
31
|
+
require_relative "jekyll-github-metadata/site_github_munger" if Jekyll.const_defined? :Site
|
33
32
|
|
34
33
|
class << self
|
35
34
|
attr_reader :repository_finder
|
@@ -12,6 +12,7 @@ module Jekyll
|
|
12
12
|
API_CALLS = Set.new(%w(
|
13
13
|
repository
|
14
14
|
organization
|
15
|
+
user
|
15
16
|
repository?
|
16
17
|
pages
|
17
18
|
contributors
|
@@ -42,9 +43,7 @@ module Jekyll
|
|
42
43
|
|
43
44
|
def build_octokit_client(options = nil)
|
44
45
|
options ||= {}
|
45
|
-
unless options.key?
|
46
|
-
options.merge! pluck_auth_method
|
47
|
-
end
|
46
|
+
options.merge!(pluck_auth_method) unless options.key?(:access_token)
|
48
47
|
Octokit::Client.new(default_octokit_options.merge(options))
|
49
48
|
end
|
50
49
|
|
@@ -118,6 +117,7 @@ module Jekyll
|
|
118
117
|
end
|
119
118
|
end
|
120
119
|
|
120
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
121
121
|
def pluck_auth_method
|
122
122
|
if ENV["JEKYLL_GITHUB_TOKEN"] || Octokit.access_token
|
123
123
|
{ :access_token => ENV["JEKYLL_GITHUB_TOKEN"] || Octokit.access_token }
|
@@ -129,6 +129,7 @@ module Jekyll
|
|
129
129
|
{}.freeze
|
130
130
|
end
|
131
131
|
end
|
132
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
132
133
|
|
133
134
|
def cache_key(method, *args)
|
134
135
|
Digest::SHA1.hexdigest(method.to_s + args.join(", "))
|
@@ -26,8 +26,8 @@ module Jekyll
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
MISSING_DATA_MSG = "Cannot generate edit URLs due to missing site.github data"
|
30
|
-
LINK_TEXT_REGEX = %r!(?:\"(.*)\"|'(.*)')
|
29
|
+
MISSING_DATA_MSG = "Cannot generate edit URLs due to missing site.github data"
|
30
|
+
LINK_TEXT_REGEX = %r!(?:\"(.*)\"|'(.*)')!.freeze
|
31
31
|
|
32
32
|
extend Forwardable
|
33
33
|
private def_hash_delegator :site, :github, :site_github, {}
|
@@ -15,6 +15,7 @@ module Jekyll
|
|
15
15
|
def key?(key)
|
16
16
|
return false if key.nil?
|
17
17
|
return true if self.class.mutable? && @mutations.key?(key)
|
18
|
+
|
18
19
|
respond_to?(key) || fallback_data.key?(key)
|
19
20
|
end
|
20
21
|
|
@@ -45,6 +46,7 @@ module Jekyll
|
|
45
46
|
def_delegator :repository, :organization_public_members, :organization_members
|
46
47
|
def_delegator :repository, :name, :project_title
|
47
48
|
def_delegator :repository, :tagline, :project_tagline
|
49
|
+
def_delegator :repository, :owner_metadata, :owner
|
48
50
|
def_delegator :repository, :owner, :owner_name
|
49
51
|
def_delegator :repository, :owner_url, :owner_url
|
50
52
|
def_delegator :repository, :owner_gravatar_url, :owner_gravatar_url
|
@@ -71,11 +73,13 @@ module Jekyll
|
|
71
73
|
def_delegator :repository, :source, :source
|
72
74
|
|
73
75
|
def versions
|
74
|
-
@versions
|
76
|
+
return @versions if defined?(@versions)
|
77
|
+
|
78
|
+
begin
|
75
79
|
require "github-pages"
|
76
|
-
GitHubPages.versions
|
80
|
+
@versions = GitHubPages.versions
|
77
81
|
rescue LoadError
|
78
|
-
{}
|
82
|
+
@versions = {}
|
79
83
|
end
|
80
84
|
end
|
81
85
|
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module GitHubMetadata
|
5
|
+
class Owner
|
6
|
+
extend Forwardable
|
7
|
+
|
8
|
+
# Defines an instance method that delegates to a hash's key
|
9
|
+
#
|
10
|
+
# hash - a symbol representing the instance method to delegate to. The
|
11
|
+
# instance method should return a hash or respond to #[]
|
12
|
+
# key - the key to call within the hash
|
13
|
+
# method - (optional) the instance method the key should be aliased to.
|
14
|
+
# If not specified, defaults to the hash key
|
15
|
+
#
|
16
|
+
# Returns a symbol representing the instance method
|
17
|
+
def self.def_hash_delegators(hash, *methods)
|
18
|
+
content_methods.concat(methods)
|
19
|
+
methods.each do |method|
|
20
|
+
define_method(method) do
|
21
|
+
send(hash)[method.to_s]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.content_methods
|
27
|
+
@content_methods ||= []
|
28
|
+
end
|
29
|
+
|
30
|
+
# List of whitelisted keys.
|
31
|
+
def_hash_delegators :owner_info,
|
32
|
+
:avatar_url,
|
33
|
+
:bio,
|
34
|
+
:blog,
|
35
|
+
:collaborators,
|
36
|
+
:company,
|
37
|
+
:created_at,
|
38
|
+
:description,
|
39
|
+
:email,
|
40
|
+
:followers,
|
41
|
+
:following,
|
42
|
+
:has_organization_projects,
|
43
|
+
:has_repository_projects,
|
44
|
+
:hireable,
|
45
|
+
:html_url,
|
46
|
+
:id,
|
47
|
+
:is_verified,
|
48
|
+
:location,
|
49
|
+
:login,
|
50
|
+
:name,
|
51
|
+
:node_id,
|
52
|
+
:public_gists,
|
53
|
+
:public_gists,
|
54
|
+
:public_repos,
|
55
|
+
:public_repos,
|
56
|
+
:type,
|
57
|
+
:updated_at
|
58
|
+
|
59
|
+
attr_reader :owner_login
|
60
|
+
|
61
|
+
def initialize(owner_login)
|
62
|
+
@owner_login = owner_login
|
63
|
+
end
|
64
|
+
|
65
|
+
def to_s
|
66
|
+
require "json"
|
67
|
+
JSON.pretty_generate to_h
|
68
|
+
end
|
69
|
+
alias_method :to_str, :to_s
|
70
|
+
|
71
|
+
def to_h
|
72
|
+
self.class.content_methods.each_with_object({}) { |method, hash| hash[method] = public_send(method) }
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def owner_info
|
78
|
+
@owner_info ||= begin
|
79
|
+
Value.new(
|
80
|
+
proc do |c|
|
81
|
+
(c.organization(owner_login) || c.user(owner_login) || {}).to_h
|
82
|
+
end
|
83
|
+
).render || {}
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -5,13 +5,13 @@ module Jekyll
|
|
5
5
|
class Pages
|
6
6
|
class << self
|
7
7
|
DEFAULTS = {
|
8
|
-
"PAGES_ENV" => "development"
|
9
|
-
"PAGES_API_URL" => "https://api.github.com"
|
10
|
-
"PAGES_HELP_URL" => "https://help.github.com"
|
11
|
-
"PAGES_GITHUB_HOSTNAME" => "github.com"
|
12
|
-
"PAGES_PAGES_HOSTNAME" => "github.io"
|
13
|
-
"SSL" => "false"
|
14
|
-
"SUBDOMAIN_ISOLATION" => "false"
|
8
|
+
"PAGES_ENV" => "development",
|
9
|
+
"PAGES_API_URL" => "https://api.github.com",
|
10
|
+
"PAGES_HELP_URL" => "https://help.github.com",
|
11
|
+
"PAGES_GITHUB_HOSTNAME" => "github.com",
|
12
|
+
"PAGES_PAGES_HOSTNAME" => "github.io",
|
13
|
+
"SSL" => "false",
|
14
|
+
"SUBDOMAIN_ISOLATION" => "false",
|
15
15
|
"PAGES_PREVIEW_HTML_URL" => nil,
|
16
16
|
"PAGE_BUILD_ID" => nil,
|
17
17
|
}.freeze
|
@@ -32,13 +32,21 @@ module Jekyll
|
|
32
32
|
env_var("SUBDOMAIN_ISOLATION").eql? "true"
|
33
33
|
end
|
34
34
|
|
35
|
-
def test
|
35
|
+
def test?
|
36
|
+
env == "test"
|
37
|
+
end
|
36
38
|
|
37
|
-
def dotcom
|
39
|
+
def dotcom?
|
40
|
+
env == "dotcom"
|
41
|
+
end
|
38
42
|
|
39
|
-
def enterprise
|
43
|
+
def enterprise?
|
44
|
+
env == "enterprise"
|
45
|
+
end
|
40
46
|
|
41
|
-
def development
|
47
|
+
def development?
|
48
|
+
env == "development"
|
49
|
+
end
|
42
50
|
|
43
51
|
def custom_domains_enabled?
|
44
52
|
dotcom? || test?
|
@@ -54,7 +62,7 @@ module Jekyll
|
|
54
62
|
|
55
63
|
def github_url
|
56
64
|
if dotcom? || github_hostname == "github.com"
|
57
|
-
"https://github.com"
|
65
|
+
"https://github.com"
|
58
66
|
else
|
59
67
|
"#{scheme}://#{github_hostname}"
|
60
68
|
end
|
@@ -89,6 +97,7 @@ module Jekyll
|
|
89
97
|
end
|
90
98
|
|
91
99
|
private
|
100
|
+
|
92
101
|
def env_var(key, intermediate_default = nil)
|
93
102
|
!ENV[key].to_s.empty? ? ENV[key] : (intermediate_default || DEFAULTS[key])
|
94
103
|
end
|
@@ -62,6 +62,10 @@ module Jekyll
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
def owner_metadata
|
66
|
+
@owner_metadata ||= Jekyll::GitHubMetadata::Owner.new(owner)
|
67
|
+
end
|
68
|
+
|
65
69
|
def owner_url
|
66
70
|
"#{Pages.github_url}/#{owner}"
|
67
71
|
end
|
@@ -163,6 +167,7 @@ module Jekyll
|
|
163
167
|
|
164
168
|
def cname
|
165
169
|
return nil unless Pages.custom_domains_enabled?
|
170
|
+
|
166
171
|
repo_pages_info["cname"]
|
167
172
|
end
|
168
173
|
|
@@ -178,10 +183,19 @@ module Jekyll
|
|
178
183
|
uri.dup.tap { |u| u.path = "" }.to_s
|
179
184
|
end
|
180
185
|
|
186
|
+
def stargazers_count
|
187
|
+
repo_pages_info["stargazers_count"] || 0
|
188
|
+
end
|
189
|
+
|
190
|
+
def forks_count
|
191
|
+
repo_pages_info["forks_count"] || 0
|
192
|
+
end
|
193
|
+
|
181
194
|
private
|
182
195
|
|
183
196
|
def memoize_value(var_name, value)
|
184
197
|
return instance_variable_get(var_name) if instance_variable_defined?(var_name)
|
198
|
+
|
185
199
|
instance_variable_set(var_name, value.render)
|
186
200
|
end
|
187
201
|
end
|
@@ -28,6 +28,7 @@ module Jekyll
|
|
28
28
|
repo.user_page_domains.each do |user_repo|
|
29
29
|
candidate_nwo = "#{repo.owner}/#{user_repo}"
|
30
30
|
next unless Jekyll::GitHubMetadata.client.repository?(candidate_nwo)
|
31
|
+
|
31
32
|
domain = Jekyll::GitHubMetadata::Repository.new(candidate_nwo).repo_compat.domain
|
32
33
|
end
|
33
34
|
domain
|
@@ -42,7 +42,7 @@ module Jekyll
|
|
42
42
|
|
43
43
|
def nwo_from_config
|
44
44
|
repo = site.config["repository"]
|
45
|
-
repo if repo
|
45
|
+
repo if repo&.is_a?(String) && repo&.include?("/")
|
46
46
|
end
|
47
47
|
|
48
48
|
def git_remotes
|
@@ -61,6 +61,7 @@ module Jekyll
|
|
61
61
|
|
62
62
|
def nwo_from_git_origin_remote
|
63
63
|
return unless Jekyll.env == "development" || Jekyll.env == "test"
|
64
|
+
|
64
65
|
matches = git_remote_url.chomp(".git").match github_remote_regex
|
65
66
|
matches[2..3].join("/") if matches
|
66
67
|
end
|
@@ -16,11 +16,12 @@ module Jekyll
|
|
16
16
|
# resource - an Object
|
17
17
|
#
|
18
18
|
# Returns the sanitized resource.
|
19
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
19
20
|
def sanitize(resource)
|
20
21
|
case resource
|
21
22
|
when Array
|
22
23
|
resource.map { |item| sanitize(item) }
|
23
|
-
when Numeric
|
24
|
+
when Numeric, Time
|
24
25
|
resource
|
25
26
|
when FalseClass
|
26
27
|
false
|
@@ -36,6 +37,7 @@ module Jekyll
|
|
36
37
|
end
|
37
38
|
end
|
38
39
|
end
|
40
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
39
41
|
|
40
42
|
# Sanitize the Sawyer Resource or Hash
|
41
43
|
# Note: the object must respond to :to_hash for this to work.
|
@@ -25,6 +25,7 @@ module Jekyll
|
|
25
25
|
|
26
26
|
def render
|
27
27
|
return @rendered if defined? @rendered
|
28
|
+
|
28
29
|
@rendered = @value = Sanitizer.sanitize(call_or_value)
|
29
30
|
rescue RuntimeError, NameError => e
|
30
31
|
Jekyll::GitHubMetadata.log :error, "Error processing value '#{key}':"
|
@@ -46,6 +47,7 @@ module Jekyll
|
|
46
47
|
# or returns the raw value if it's a literal
|
47
48
|
def call_or_value
|
48
49
|
return value unless value.respond_to?(:call)
|
50
|
+
|
49
51
|
case value.arity
|
50
52
|
when 0
|
51
53
|
value.call
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-github-metadata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Parker Moore
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -48,16 +48,16 @@ dependencies:
|
|
48
48
|
name: bundler
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
51
|
+
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- - "
|
58
|
+
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
60
|
+
version: '0'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: netrc
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,7 +73,7 @@ dependencies:
|
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '0'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
76
|
+
name: pry
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - ">="
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
90
|
+
name: rake
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
93
|
- - ">="
|
@@ -101,7 +101,7 @@ dependencies:
|
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
104
|
+
name: rspec
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
107
|
- - ">="
|
@@ -115,19 +115,19 @@ dependencies:
|
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '0'
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
|
-
name: rubocop
|
118
|
+
name: rubocop-jekyll
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
121
|
- - "~>"
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: 0.
|
123
|
+
version: 0.5.0
|
124
124
|
type: :development
|
125
125
|
prerelease: false
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
128
|
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: 0.
|
130
|
+
version: 0.5.0
|
131
131
|
description:
|
132
132
|
email:
|
133
133
|
- parkrmoore@gmail.com
|
@@ -139,6 +139,7 @@ files:
|
|
139
139
|
- lib/jekyll-github-metadata/client.rb
|
140
140
|
- lib/jekyll-github-metadata/edit-link-tag.rb
|
141
141
|
- lib/jekyll-github-metadata/metadata_drop.rb
|
142
|
+
- lib/jekyll-github-metadata/owner.rb
|
142
143
|
- lib/jekyll-github-metadata/pages.rb
|
143
144
|
- lib/jekyll-github-metadata/repository.rb
|
144
145
|
- lib/jekyll-github-metadata/repository_compat.rb
|