jekyll-github-metadata 2.10.0 → 2.11.0

Sign up to get free protection for your applications and to get access to all the features.
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