jekyll-remote-theme 0.3.0 → 0.4.3
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-remote-theme.rb +3 -3
- data/lib/jekyll-remote-theme/downloader.rb +13 -10
- data/lib/jekyll-remote-theme/mock_gemspec.rb +2 -2
- data/lib/jekyll-remote-theme/munger.rb +7 -7
- data/lib/jekyll-remote-theme/theme.rb +46 -8
- data/lib/jekyll-remote-theme/version.rb +1 -1
- metadata +87 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c9167cea38476d7fc4ef44836e821cb07d5bcabb665e834a8df9f1cae315b70
|
4
|
+
data.tar.gz: 28698c0255ba7c3b9b85758e7ed52c899ffbdd49460064513d8a28a19d174b49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c9f12811ead638abbb9022f63221ef49fd6bd2f743e42d58645431aa0565946b74324131710d76ed9567adc812b316425f47e41c55ba379a4073f7812ec5b0a
|
7
|
+
data.tar.gz: 4ae168e2f471af7bfa0cdc39a479f3bb05fe4420d30a3036206f29b50f49f267004fa8ac4deaa4da26f887eae3f3b5e38b521cb189ed479d5262aa289d33dc11
|
data/lib/jekyll-remote-theme.rb
CHANGED
@@ -19,9 +19,9 @@ module Jekyll
|
|
19
19
|
autoload :Theme, "jekyll-remote-theme/theme"
|
20
20
|
autoload :VERSION, "jekyll-remote-theme/version"
|
21
21
|
|
22
|
-
CONFIG_KEY = "remote_theme"
|
23
|
-
LOG_KEY = "Remote Theme:"
|
24
|
-
TEMP_PREFIX = "jekyll-remote-theme-"
|
22
|
+
CONFIG_KEY = "remote_theme"
|
23
|
+
LOG_KEY = "Remote Theme:"
|
24
|
+
TEMP_PREFIX = "jekyll-remote-theme-"
|
25
25
|
|
26
26
|
def self.init(site)
|
27
27
|
Munger.new(site).munge!
|
@@ -3,18 +3,14 @@
|
|
3
3
|
module Jekyll
|
4
4
|
module RemoteTheme
|
5
5
|
class Downloader
|
6
|
-
|
7
|
-
|
8
|
-
USER_AGENT = "Jekyll Remote Theme/#{VERSION} (+#{PROJECT_URL})".freeze
|
6
|
+
PROJECT_URL = "https://github.com/benbalter/jekyll-remote-theme"
|
7
|
+
USER_AGENT = "Jekyll Remote Theme/#{VERSION} (+#{PROJECT_URL})"
|
9
8
|
MAX_FILE_SIZE = 1 * (1024 * 1024 * 1024) # Size in bytes (1 GB)
|
10
9
|
NET_HTTP_ERRORS = [
|
11
|
-
Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
|
10
|
+
Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::OpenTimeout,
|
12
11
|
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError,
|
13
12
|
].freeze
|
14
13
|
|
15
|
-
attr_reader :theme
|
16
|
-
private :theme
|
17
|
-
|
18
14
|
def initialize(theme)
|
19
15
|
@theme = theme
|
20
16
|
end
|
@@ -35,6 +31,8 @@ module Jekyll
|
|
35
31
|
|
36
32
|
private
|
37
33
|
|
34
|
+
attr_reader :theme
|
35
|
+
|
38
36
|
def zip_file
|
39
37
|
@zip_file ||= Tempfile.new([TEMP_PREFIX, ".zip"], :binmode => true)
|
40
38
|
end
|
@@ -57,6 +55,7 @@ module Jekyll
|
|
57
55
|
|
58
56
|
def request
|
59
57
|
return @request if defined? @request
|
58
|
+
|
60
59
|
@request = Net::HTTP::Get.new zip_url.request_uri
|
61
60
|
@request["User-Agent"] = USER_AGENT
|
62
61
|
@request
|
@@ -64,11 +63,13 @@ module Jekyll
|
|
64
63
|
|
65
64
|
def raise_unless_sucess(response)
|
66
65
|
return if response.is_a?(Net::HTTPSuccess)
|
67
|
-
|
66
|
+
|
67
|
+
raise DownloadError, "#{response.code} - #{response.message} - Loading URL: #{zip_url}"
|
68
68
|
end
|
69
69
|
|
70
70
|
def enforce_max_file_size(size)
|
71
71
|
return unless size && size > MAX_FILE_SIZE
|
72
|
+
|
72
73
|
raise DownloadError, "Maximum file size of #{MAX_FILE_SIZE} bytes exceeded"
|
73
74
|
end
|
74
75
|
|
@@ -88,8 +89,10 @@ module Jekyll
|
|
88
89
|
|
89
90
|
# Full URL to codeload zip download endpoint for the given theme
|
90
91
|
def zip_url
|
91
|
-
@zip_url ||= Addressable::URI.
|
92
|
-
|
92
|
+
@zip_url ||= Addressable::URI.new(
|
93
|
+
:scheme => theme.scheme,
|
94
|
+
:host => "codeload.#{theme.host}",
|
95
|
+
:path => [theme.owner, theme.name, "zip", theme.git_ref].join("/")
|
93
96
|
).normalize
|
94
97
|
end
|
95
98
|
|
@@ -9,8 +9,8 @@ module Jekyll
|
|
9
9
|
extend Forwardable
|
10
10
|
def_delegator :theme, :root, :full_gem_path
|
11
11
|
|
12
|
-
DEPENDENCY_PREFIX = %r!^\s*[a-z]+\.add_(?:runtime_)?dependency
|
13
|
-
DEPENDENCY_REGEX = %r!#{DEPENDENCY_PREFIX}\(?\s*["']([a-z_-]+)["']
|
12
|
+
DEPENDENCY_PREFIX = %r!^\s*[a-z]+\.add_(?:runtime_)?dependency!.freeze
|
13
|
+
DEPENDENCY_REGEX = %r!#{DEPENDENCY_PREFIX}\(?\s*["']([a-z_-]+)["']!.freeze
|
14
14
|
|
15
15
|
def initialize(theme)
|
16
16
|
@theme = theme
|
@@ -20,10 +20,10 @@ module Jekyll
|
|
20
20
|
end
|
21
21
|
|
22
22
|
Jekyll.logger.info LOG_KEY, "Using theme #{theme.name_with_owner}"
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
unless munged?
|
24
|
+
downloader.run
|
25
|
+
configure_theme
|
26
|
+
end
|
27
27
|
enqueue_theme_cleanup
|
28
28
|
|
29
29
|
theme
|
@@ -32,7 +32,7 @@ module Jekyll
|
|
32
32
|
private
|
33
33
|
|
34
34
|
def munged?
|
35
|
-
site.theme
|
35
|
+
site.theme&.is_a?(Jekyll::RemoteTheme::Theme)
|
36
36
|
end
|
37
37
|
|
38
38
|
def theme
|
@@ -49,16 +49,16 @@ module Jekyll
|
|
49
49
|
|
50
50
|
def configure_theme
|
51
51
|
return unless theme
|
52
|
+
|
52
53
|
site.config["theme"] = theme.name
|
53
54
|
site.theme = theme
|
54
|
-
site.theme.configure_sass
|
55
|
+
site.theme.configure_sass if site.theme.respond_to?(:configure_sass)
|
55
56
|
site.send(:configure_include_paths)
|
56
57
|
site.plugin_manager.require_theme_deps
|
57
58
|
end
|
58
59
|
|
59
60
|
def enqueue_theme_cleanup
|
60
61
|
at_exit do
|
61
|
-
return unless munged? && downloader.downloaded?
|
62
62
|
Jekyll.logger.debug LOG_KEY, "Cleaning up #{theme.root}"
|
63
63
|
FileUtils.rm_rf theme.root
|
64
64
|
end
|
@@ -3,10 +3,10 @@
|
|
3
3
|
module Jekyll
|
4
4
|
module RemoteTheme
|
5
5
|
class Theme < Jekyll::Theme
|
6
|
-
OWNER_REGEX = %r!(?<owner>[a-z0-9\-]+)!i
|
7
|
-
NAME_REGEX = %r!(?<name>[a-z0-9\._\-]+)!i
|
8
|
-
REF_REGEX = %r!@(?<ref>[a-z0-9\._\-]+)!i # May be a branch, tag, or commit
|
9
|
-
THEME_REGEX = %r!\A#{OWNER_REGEX}/#{NAME_REGEX}(?:#{REF_REGEX})?\z!i
|
6
|
+
OWNER_REGEX = %r!(?<owner>[a-z0-9\-]+)!i.freeze
|
7
|
+
NAME_REGEX = %r!(?<name>[a-z0-9\._\-]+)!i.freeze
|
8
|
+
REF_REGEX = %r!@(?<ref>[a-z0-9\._\-]+)!i.freeze # May be a branch, tag, or commit
|
9
|
+
THEME_REGEX = %r!\A#{OWNER_REGEX}/#{NAME_REGEX}(?:#{REF_REGEX})?\z!i.freeze
|
10
10
|
|
11
11
|
# Initializes a new Jekyll::RemoteTheme::Theme
|
12
12
|
#
|
@@ -14,6 +14,10 @@ module Jekyll
|
|
14
14
|
#
|
15
15
|
# 1. owner/theme-name - a GitHub owner + theme-name string
|
16
16
|
# 2. owner/theme-name@git_ref - a GitHub owner + theme-name + Git ref string
|
17
|
+
# 3. http[s]://github.<yourEnterprise>.com/owner/theme-name
|
18
|
+
# - An enterprise GitHub instance + a GitHub owner + a theme-name string
|
19
|
+
# 4. http[s]://github.<yourEnterprise>.com/owner/theme-name@git_ref
|
20
|
+
# - An enterprise GitHub instance + a GitHub owner + a theme-name + Git ref string
|
17
21
|
def initialize(raw_theme)
|
18
22
|
@raw_theme = raw_theme.to_s.downcase.strip
|
19
23
|
super(@raw_theme)
|
@@ -27,17 +31,27 @@ module Jekyll
|
|
27
31
|
theme_parts[:owner]
|
28
32
|
end
|
29
33
|
|
34
|
+
def host
|
35
|
+
uri&.host
|
36
|
+
end
|
37
|
+
|
38
|
+
def scheme
|
39
|
+
uri&.scheme
|
40
|
+
end
|
41
|
+
|
30
42
|
def name_with_owner
|
31
43
|
[owner, name].join("/")
|
32
44
|
end
|
33
45
|
alias_method :nwo, :name_with_owner
|
34
46
|
|
35
47
|
def valid?
|
36
|
-
theme_parts && name && owner
|
48
|
+
return false unless uri && theme_parts && name && owner
|
49
|
+
|
50
|
+
host && valid_hosts.include?(host)
|
37
51
|
end
|
38
52
|
|
39
53
|
def git_ref
|
40
|
-
theme_parts[:ref] || "
|
54
|
+
theme_parts[:ref] || "HEAD"
|
41
55
|
end
|
42
56
|
|
43
57
|
def root
|
@@ -45,19 +59,43 @@ module Jekyll
|
|
45
59
|
end
|
46
60
|
|
47
61
|
def inspect
|
48
|
-
"#<Jekyll::RemoteTheme::Theme owner=\"#{owner}\" name=\"#{name}\"" \
|
62
|
+
"#<Jekyll::RemoteTheme::Theme host=\"#{host}\" owner=\"#{owner}\" name=\"#{name}\"" \
|
49
63
|
" ref=\"#{git_ref}\" root=\"#{root}\">"
|
50
64
|
end
|
51
65
|
|
52
66
|
private
|
53
67
|
|
68
|
+
def uri
|
69
|
+
return @uri if defined? @uri
|
70
|
+
|
71
|
+
@uri = if THEME_REGEX.match?(@raw_theme)
|
72
|
+
Addressable::URI.new(
|
73
|
+
:scheme => "https",
|
74
|
+
:host => "github.com",
|
75
|
+
:path => @raw_theme
|
76
|
+
)
|
77
|
+
else
|
78
|
+
Addressable::URI.parse @raw_theme
|
79
|
+
end
|
80
|
+
rescue Addressable::URI::InvalidURIError
|
81
|
+
@uri = nil
|
82
|
+
end
|
83
|
+
|
54
84
|
def theme_parts
|
55
|
-
@theme_parts ||=
|
85
|
+
@theme_parts ||= uri.path[1..-1].match(THEME_REGEX) if uri
|
56
86
|
end
|
57
87
|
|
58
88
|
def gemspec
|
59
89
|
@gemspec ||= MockGemspec.new(self)
|
60
90
|
end
|
91
|
+
|
92
|
+
def valid_hosts
|
93
|
+
@valid_hosts ||= [
|
94
|
+
"github.com",
|
95
|
+
ENV["PAGES_GITHUB_HOSTNAME"],
|
96
|
+
ENV["GITHUB_HOSTNAME"],
|
97
|
+
].compact.to_set
|
98
|
+
end
|
61
99
|
end
|
62
100
|
end
|
63
101
|
end
|
metadata
CHANGED
@@ -1,36 +1,82 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-remote-theme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Balter
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: addressable
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: jekyll
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.5'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '5.0'
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
25
42
|
- !ruby/object:Gem::Version
|
26
43
|
version: '3.5'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '5.0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: jekyll-sass-converter
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.0'
|
54
|
+
- - "<="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 3.0.0
|
57
|
+
- - "!="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 2.0.0
|
60
|
+
type: :runtime
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '1.0'
|
67
|
+
- - "<="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 3.0.0
|
70
|
+
- - "!="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 2.0.0
|
27
73
|
- !ruby/object:Gem::Dependency
|
28
74
|
name: rubyzip
|
29
75
|
requirement: !ruby/object:Gem::Requirement
|
30
76
|
requirements:
|
31
77
|
- - ">="
|
32
78
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
79
|
+
version: 1.3.0
|
34
80
|
- - "<"
|
35
81
|
- !ruby/object:Gem::Version
|
36
82
|
version: '3.0'
|
@@ -40,7 +86,7 @@ dependencies:
|
|
40
86
|
requirements:
|
41
87
|
- - ">="
|
42
88
|
- !ruby/object:Gem::Version
|
43
|
-
version: 1.
|
89
|
+
version: 1.3.0
|
44
90
|
- - "<"
|
45
91
|
- !ruby/object:Gem::Version
|
46
92
|
version: '3.0'
|
@@ -72,6 +118,20 @@ dependencies:
|
|
72
118
|
- - "~>"
|
73
119
|
- !ruby/object:Gem::Version
|
74
120
|
version: '0.2'
|
121
|
+
- !ruby/object:Gem::Dependency
|
122
|
+
name: kramdown-parser-gfm
|
123
|
+
requirement: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - "~>"
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '1.0'
|
128
|
+
type: :development
|
129
|
+
prerelease: false
|
130
|
+
version_requirements: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - "~>"
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '1.0'
|
75
135
|
- !ruby/object:Gem::Dependency
|
76
136
|
name: pry
|
77
137
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,20 +166,28 @@ dependencies:
|
|
106
166
|
requirements:
|
107
167
|
- - "~>"
|
108
168
|
- !ruby/object:Gem::Version
|
109
|
-
version: '0.
|
110
|
-
- - ">="
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: 0.49.0
|
169
|
+
version: '0.71'
|
113
170
|
type: :development
|
114
171
|
prerelease: false
|
115
172
|
version_requirements: !ruby/object:Gem::Requirement
|
116
173
|
requirements:
|
117
174
|
- - "~>"
|
118
175
|
- !ruby/object:Gem::Version
|
119
|
-
version: '0.
|
120
|
-
|
176
|
+
version: '0.71'
|
177
|
+
- !ruby/object:Gem::Dependency
|
178
|
+
name: rubocop-jekyll
|
179
|
+
requirement: !ruby/object:Gem::Requirement
|
180
|
+
requirements:
|
181
|
+
- - "~>"
|
121
182
|
- !ruby/object:Gem::Version
|
122
|
-
version: 0.
|
183
|
+
version: '0.10'
|
184
|
+
type: :development
|
185
|
+
prerelease: false
|
186
|
+
version_requirements: !ruby/object:Gem::Requirement
|
187
|
+
requirements:
|
188
|
+
- - "~>"
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0.10'
|
123
191
|
- !ruby/object:Gem::Dependency
|
124
192
|
name: webmock
|
125
193
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,7 +202,7 @@ dependencies:
|
|
134
202
|
- - "~>"
|
135
203
|
- !ruby/object:Gem::Version
|
136
204
|
version: '3.0'
|
137
|
-
description:
|
205
|
+
description:
|
138
206
|
email:
|
139
207
|
- ben.balter@github.com
|
140
208
|
executables: []
|
@@ -151,7 +219,7 @@ homepage: https://github.com/benbalter/jekyll-remote-theme
|
|
151
219
|
licenses:
|
152
220
|
- MIT
|
153
221
|
metadata: {}
|
154
|
-
post_install_message:
|
222
|
+
post_install_message:
|
155
223
|
rdoc_options: []
|
156
224
|
require_paths:
|
157
225
|
- lib
|
@@ -159,16 +227,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
159
227
|
requirements:
|
160
228
|
- - ">="
|
161
229
|
- !ruby/object:Gem::Version
|
162
|
-
version:
|
230
|
+
version: 2.3.0
|
163
231
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
232
|
requirements:
|
165
233
|
- - ">="
|
166
234
|
- !ruby/object:Gem::Version
|
167
235
|
version: '0'
|
168
236
|
requirements: []
|
169
|
-
|
170
|
-
|
171
|
-
signing_key:
|
237
|
+
rubygems_version: 3.2.14
|
238
|
+
signing_key:
|
172
239
|
specification_version: 4
|
173
240
|
summary: Jekyll plugin for building Jekyll sites with any GitHub-hosted theme
|
174
241
|
test_files: []
|