jekyll-themes-control 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f977c352c9d16e83773dcd587cbd58b1ea8e1a1be0c15e8471e0e3304369a951
4
+ data.tar.gz: a1e42f5dd84eebef5fa438a4f5f5d666026c707964de641eebb07866b5d47949
5
+ SHA512:
6
+ metadata.gz: 5a1ac5dd48c27276f8d365344251b113d0617ba962f330a77856288ea3395a726ae8a640fe1f56641ddaccbb36faf69a30cd4f894f2c4a8b427730578f65718d
7
+ data.tar.gz: 7bc4753fed3b4b2d1bc0701f8d9de81343d6686f14d663931df65b9cb18847237904a5dc902b5f9e540e403341be64c04efb9f577cb2441ca007bdc6158a5945
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "jekyll"
4
+ require "fileutils"
5
+ require "tempfile"
6
+ require "addressable"
7
+ require "net/http"
8
+ require "zip"
9
+
10
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
11
+
12
+ module Jekyll
13
+ module ThemesControl
14
+
15
+ autoload :Munger, "jekyll-themes-control/munger"
16
+ autoload :Theme, "jekyll-themes-control/theme"
17
+ autoload :VERSION, "jekyll-themes-control/version"
18
+
19
+ CONFIG_KEY = "themes_control"
20
+ LOG_KEY = "Themes Control:"
21
+ TEMP_PREFIX = "jekyll-themes-control-"
22
+
23
+ def self.init(site)
24
+ Munger.new(site).munge!
25
+ end
26
+ end
27
+ end
28
+
29
+ Jekyll::Hooks.register :site, :after_reset do |site|
30
+ Jekyll::ThemesControl.init(site)
31
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ module ThemesControl
5
+ class Munger
6
+ extend Forwardable
7
+ def_delegator :site, :config
8
+ attr_reader :site
9
+
10
+ def initialize(site)
11
+ @site = site
12
+ end
13
+
14
+ def munge!
15
+ return unless raw_theme
16
+ unless munged?
17
+ configure_theme
18
+ end
19
+ theme
20
+ end
21
+
22
+ private
23
+
24
+ def munged?
25
+ site.theme&.is_a?(Jekyll::ThemesControl::Theme)
26
+ end
27
+
28
+ def theme
29
+ @theme ||= Theme.new(raw_theme)
30
+ end
31
+
32
+ def raw_theme
33
+ config[CONFIG_KEY]
34
+ end
35
+
36
+ def configure_theme
37
+ return unless theme
38
+
39
+ site.config["theme"] = theme.name
40
+ site.theme = theme
41
+ site.send(:configure_include_paths)
42
+ end
43
+
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ module ThemesControl
5
+ class Theme < Jekyll::Theme
6
+
7
+ def initialize(raw_theme)
8
+ @raw_theme = raw_theme.to_s.downcase.strip
9
+ super(@raw_theme)
10
+ end
11
+
12
+ def root
13
+ path = "#{Dir.pwd}/_themes/#{@raw_theme}"
14
+ @root ||= File.realpath path
15
+ rescue Errno::ENOENT, Errno::EACCES, Errno::ELOOP
16
+ raise "Path #{path} does not exist, is not accessible "\
17
+ "or includes a symbolic link loop"
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ module ThemesControl
5
+ VERSION = "0.1.0"
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-themes-control
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Fran Ferri
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-05-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: addressable
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
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
+ - - ">="
42
+ - !ruby/object:Gem::Version
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
73
+ - !ruby/object:Gem::Dependency
74
+ name: rubyzip
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 1.3.0
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 1.3.0
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '3.0'
93
+ - !ruby/object:Gem::Dependency
94
+ name: pry
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '0.11'
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '0.11'
107
+ description:
108
+ email:
109
+ - franferri@gmail.com
110
+ executables: []
111
+ extensions: []
112
+ extra_rdoc_files: []
113
+ files:
114
+ - lib/jekyll-themes-control.rb
115
+ - lib/jekyll-themes-control/munger.rb
116
+ - lib/jekyll-themes-control/theme.rb
117
+ - lib/jekyll-themes-control/version.rb
118
+ homepage: https://github.com/franferri/jekyll-themes-control
119
+ licenses:
120
+ - GPLv3
121
+ metadata: {}
122
+ post_install_message:
123
+ rdoc_options: []
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: 2.3.0
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ requirements: []
137
+ rubygems_version: 3.1.2
138
+ signing_key:
139
+ specification_version: 4
140
+ summary: Jekyll plugin for building Jekyll sites with any GitHub-hosted theme
141
+ test_files: []