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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7bd19cc5c1797ac829abde53d1008003675fcabaf6d4e2370f76342faea43ee5
4
- data.tar.gz: e2d6401feb3be9354eb7829b187e864aecce0c615e9f1f0f3e384888e8d1f382
3
+ metadata.gz: 634131021fac3ff8f89c40c56551db5712c6b3b15242c14568b882e5b3298074
4
+ data.tar.gz: 97a704bc78b18f8166fd1cbced32d152ab908082bfa7b294f4219dc82fd9e3ad
5
5
  SHA512:
6
- metadata.gz: df04b9684967e06a748632a32ebaed6238e9e7102fc66709de61b834445cabcd0eeba12772fe0928101ffa108b00d028fdbf6bc3f69020713b96aea686ac38f7
7
- data.tar.gz: a9b2d3f6cfb0bc2e620d7b4ffcd6da85db038425ba0649f8af06d058fe87079acb5efe8e3005c455e527c29b9de2f9ce0fc4cebf26deccd620eaff9fd245ece0
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? :access_token
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".freeze
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 ||= begin
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".freeze,
9
- "PAGES_API_URL" => "https://api.github.com".freeze,
10
- "PAGES_HELP_URL" => "https://help.github.com".freeze,
11
- "PAGES_GITHUB_HOSTNAME" => "github.com".freeze,
12
- "PAGES_PAGES_HOSTNAME" => "github.io".freeze,
13
- "SSL" => "false".freeze,
14
- "SUBDOMAIN_ISOLATION" => "false".freeze,
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?; env == "test" end
35
+ def test?
36
+ env == "test"
37
+ end
36
38
 
37
- def dotcom?; env == "dotcom" end
39
+ def dotcom?
40
+ env == "dotcom"
41
+ end
38
42
 
39
- def enterprise?; env == "enterprise" end
43
+ def enterprise?
44
+ env == "enterprise"
45
+ end
40
46
 
41
- def development?; env == "development" end
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".freeze
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 && repo.is_a?(String) && repo.include?("/")
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.
@@ -44,6 +44,7 @@ module Jekyll
44
44
  def add_url_and_baseurl_fallbacks!
45
45
  site.config["url"] ||= Value.new("url", proc { |_c, r| r.url_without_path })
46
46
  return unless should_set_baseurl?
47
+
47
48
  site.config["baseurl"] = Value.new("baseurl", proc { |_c, r| r.baseurl })
48
49
  end
49
50
 
@@ -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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module GitHubMetadata
5
- VERSION = "2.10.0".freeze
5
+ VERSION = "2.11.0"
6
6
  end
7
7
  end
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.10.0
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-02 00:00:00.000000000 Z
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: '1.5'
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: '1.5'
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: rake
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: rspec
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: pry
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.57.2
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.57.2
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