bridgetown-core 1.0.0.alpha6 → 1.0.0.alpha7
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/bridgetown-core.gemspec +1 -2
- data/lib/bridgetown-core/cache.rb +1 -1
- data/lib/bridgetown-core/collection.rb +1 -1
- data/lib/bridgetown-core/commands/configure.rb +7 -0
- data/lib/bridgetown-core/commands/new.rb +1 -0
- data/lib/bridgetown-core/component.rb +2 -2
- data/lib/bridgetown-core/concerns/front_matter_importer.rb +1 -1
- data/lib/bridgetown-core/concerns/site/configurable.rb +6 -3
- data/lib/bridgetown-core/concerns/site/extensible.rb +2 -1
- data/lib/bridgetown-core/concerns/site/ssr.rb +38 -16
- data/lib/bridgetown-core/configuration.rb +77 -46
- data/lib/bridgetown-core/configurations/bt-postcss.rb +1 -3
- data/lib/bridgetown-core/configurations/cypress/cypress.json +4 -0
- data/lib/bridgetown-core/configurations/cypress/cypress_dir/fixtures/example.json +5 -0
- data/lib/bridgetown-core/configurations/cypress/cypress_dir/integration/navbar.spec.js +17 -0
- data/lib/bridgetown-core/configurations/cypress/cypress_dir/plugins/index.js +21 -0
- data/lib/bridgetown-core/configurations/cypress/cypress_dir/support/commands.js +25 -0
- data/lib/bridgetown-core/configurations/cypress/cypress_dir/support/index.js +20 -0
- data/lib/bridgetown-core/configurations/cypress/cypress_tasks +33 -0
- data/lib/bridgetown-core/configurations/cypress.rb +13 -0
- data/lib/bridgetown-core/configurations/minitesting.rb +19 -15
- data/lib/bridgetown-core/configurations/netlify.rb +2 -4
- data/lib/bridgetown-core/configurations/purgecss.rb +2 -2
- data/lib/bridgetown-core/configurations/render/render.yaml.erb +26 -0
- data/lib/bridgetown-core/configurations/render.rb +6 -0
- data/lib/bridgetown-core/configurations/tailwindcss.rb +3 -5
- data/lib/bridgetown-core/converters/markdown/kramdown_parser.rb +1 -1
- data/lib/bridgetown-core/core_ext/psych.rb +1 -5
- data/lib/bridgetown-core/frontmatter_defaults.rb +2 -2
- data/lib/bridgetown-core/liquid_renderer.rb +1 -1
- data/lib/bridgetown-core/model/base.rb +23 -26
- data/lib/bridgetown-core/model/builder_origin.rb +8 -6
- data/lib/bridgetown-core/model/origin.rb +10 -1
- data/lib/bridgetown-core/model/plugin_origin.rb +1 -1
- data/lib/bridgetown-core/plugin_manager.rb +7 -34
- data/lib/bridgetown-core/rack/boot.rb +46 -23
- data/lib/bridgetown-core/rack/roda.rb +2 -1
- data/lib/bridgetown-core/rack/routes.rb +2 -2
- data/lib/bridgetown-core/readers/layout_reader.rb +1 -1
- data/lib/bridgetown-core/readers/plugin_content_reader.rb +1 -1
- data/lib/bridgetown-core/renderer.rb +2 -2
- data/lib/bridgetown-core/resource/base.rb +3 -3
- data/lib/bridgetown-core/resource/relations.rb +1 -1
- data/lib/bridgetown-core/resource/taxonomy_term.rb +2 -2
- data/lib/bridgetown-core/resource/taxonomy_type.rb +2 -2
- data/lib/bridgetown-core/ruby_template_view.rb +2 -2
- data/lib/bridgetown-core/site.rb +15 -5
- data/lib/bridgetown-core/utils/loaders_manager.rb +72 -0
- data/lib/bridgetown-core/utils.rb +13 -14
- data/lib/bridgetown-core/version.rb +1 -1
- data/lib/bridgetown-core/watcher.rb +16 -7
- data/lib/bridgetown-core/yaml_parser.rb +1 -5
- data/lib/site_template/README.md +1 -1
- data/lib/site_template/Rakefile +3 -3
- metadata +16 -5
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bridgetown
|
4
|
+
module Utils
|
5
|
+
class LoadersManager
|
6
|
+
attr_accessor :config
|
7
|
+
|
8
|
+
attr_reader :loaders, :root_dir
|
9
|
+
|
10
|
+
# @param config [Bridgetown::Configuration]
|
11
|
+
# @param root_dir [String] root of the current site
|
12
|
+
def initialize(config, root_dir = Dir.pwd)
|
13
|
+
@config = config
|
14
|
+
@loaders = {}
|
15
|
+
@root_dir = root_dir
|
16
|
+
end
|
17
|
+
|
18
|
+
def unload_loaders
|
19
|
+
return if @loaders.keys.empty?
|
20
|
+
|
21
|
+
@loaders.each do |_path, loader|
|
22
|
+
loader.unload
|
23
|
+
end
|
24
|
+
@loaders = {}
|
25
|
+
end
|
26
|
+
|
27
|
+
def reloading_enabled?(load_path)
|
28
|
+
load_path.start_with?(root_dir) && ENV["BRIDGETOWN_ENV"] != "production"
|
29
|
+
end
|
30
|
+
|
31
|
+
def setup_loaders(autoload_paths = []) # rubocop:todo Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
|
32
|
+
(autoload_paths.presence || config.autoload_paths).each do |load_path|
|
33
|
+
if @loaders.key?(load_path)
|
34
|
+
raise "Zeitwerk loader already added for `#{load_path}'. Please check your config"
|
35
|
+
end
|
36
|
+
|
37
|
+
next unless Dir.exist? load_path
|
38
|
+
|
39
|
+
loader = Zeitwerk::Loader.new
|
40
|
+
begin
|
41
|
+
loader.push_dir(load_path)
|
42
|
+
rescue Zeitwerk::Error
|
43
|
+
next
|
44
|
+
end
|
45
|
+
loader.enable_reloading if reloading_enabled?(load_path)
|
46
|
+
loader.ignore(File.join(load_path, "**", "*.js.rb"))
|
47
|
+
config.autoloader_collapsed_paths.each do |collapsed_path|
|
48
|
+
next unless collapsed_path.starts_with?(load_path)
|
49
|
+
|
50
|
+
loader.collapse(collapsed_path)
|
51
|
+
end
|
52
|
+
Bridgetown::Hooks.trigger :loader, :pre_setup, loader, load_path
|
53
|
+
loader.setup
|
54
|
+
loader.eager_load if config.eager_load_paths.include?(load_path)
|
55
|
+
Bridgetown::Hooks.trigger :loader, :post_setup, loader, load_path
|
56
|
+
@loaders[load_path] = loader
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def reload_loaders
|
61
|
+
@loaders.each do |load_path, loader|
|
62
|
+
next unless reloading_enabled?(load_path)
|
63
|
+
|
64
|
+
Bridgetown::Hooks.trigger :loader, :pre_reload, loader, load_path
|
65
|
+
loader.reload
|
66
|
+
loader.eager_load if config.eager_load_paths.include?(load_path)
|
67
|
+
Bridgetown::Hooks.trigger :loader, :post_reload, loader, load_path
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -5,6 +5,7 @@ module Bridgetown
|
|
5
5
|
extend self
|
6
6
|
autoload :Ansi, "bridgetown-core/utils/ansi"
|
7
7
|
autoload :Aux, "bridgetown-core/utils/aux"
|
8
|
+
autoload :LoadersManager, "bridgetown-core/utils/loaders_manager"
|
8
9
|
autoload :RequireGems, "bridgetown-core/utils/require_gems"
|
9
10
|
autoload :RubyExec, "bridgetown-core/utils/ruby_exec"
|
10
11
|
autoload :RubyFrontMatter, "bridgetown-core/utils/ruby_front_matter"
|
@@ -120,15 +121,11 @@ module Bridgetown
|
|
120
121
|
# @return [Boolean] if the YAML front matter is present.
|
121
122
|
# rubocop: disable Naming/PredicateName
|
122
123
|
def has_yaml_header?(file)
|
123
|
-
File.open(file, "rb", &:
|
124
|
-
rescue EOFError
|
125
|
-
false
|
124
|
+
File.open(file, "rb", &:gets)&.match?(Bridgetown::FrontMatterImporter::YAML_HEADER) || false
|
126
125
|
end
|
127
126
|
|
128
127
|
def has_rbfm_header?(file)
|
129
|
-
File.open(file, "rb", &:
|
130
|
-
rescue EOFError
|
131
|
-
false
|
128
|
+
File.open(file, "rb", &:gets)&.match?(Bridgetown::FrontMatterImporter::RUBY_HEADER) || false
|
132
129
|
end
|
133
130
|
|
134
131
|
# Determine whether the given content string contains Liquid Tags or Vaiables
|
@@ -354,7 +351,7 @@ module Bridgetown
|
|
354
351
|
# @raise [WebpackAssetError] if unable to find css or js in the manifest
|
355
352
|
# file
|
356
353
|
def parse_webpack_manifest_file(site, asset_type)
|
357
|
-
return log_webpack_asset_error("Webpack manifest") if site.frontend_manifest.nil?
|
354
|
+
return log_webpack_asset_error(site, "Webpack manifest") if site.frontend_manifest.nil?
|
358
355
|
|
359
356
|
asset_path = if %w(js css).include?(asset_type)
|
360
357
|
site.frontend_manifest["main.#{asset_type}"]
|
@@ -364,7 +361,7 @@ module Bridgetown
|
|
364
361
|
end&.last
|
365
362
|
end
|
366
363
|
|
367
|
-
return log_webpack_asset_error(asset_type) if asset_path.nil?
|
364
|
+
return log_webpack_asset_error(site, asset_type) if asset_path.nil?
|
368
365
|
|
369
366
|
static_frontend_path site, ["js", asset_path]
|
370
367
|
end
|
@@ -379,12 +376,14 @@ module Bridgetown
|
|
379
376
|
Addressable::URI.parse(path_parts.join("/")).normalize.to_s
|
380
377
|
end
|
381
378
|
|
382
|
-
def log_webpack_asset_error(asset_type)
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
379
|
+
def log_webpack_asset_error(site, asset_type)
|
380
|
+
site.data[:__webpack_asset_errors] ||= {}
|
381
|
+
site.data[:__webpack_asset_errors][asset_type] ||=
|
382
|
+
Bridgetown.logger.warn(
|
383
|
+
"Webpack:",
|
384
|
+
"There was an error parsing your #{asset_type} file. \
|
385
|
+
Please check your #{asset_type} file for any errors."
|
386
|
+
)
|
388
387
|
|
389
388
|
"MISSING_WEBPACK_MANIFEST_FILE"
|
390
389
|
end
|
@@ -41,10 +41,12 @@ module Bridgetown
|
|
41
41
|
Dir.exist?(path)
|
42
42
|
end
|
43
43
|
|
44
|
+
paths_to_watch = (plugin_paths_to_watch + options.autoload_paths).uniq
|
45
|
+
|
44
46
|
Listen.to(
|
45
47
|
options["source"],
|
46
48
|
webpack_path,
|
47
|
-
*
|
49
|
+
*paths_to_watch,
|
48
50
|
ignore: listen_ignore_paths(options),
|
49
51
|
force_polling: options["force_polling"],
|
50
52
|
&listen_handler(site, options)
|
@@ -57,10 +59,12 @@ module Bridgetown
|
|
57
59
|
c = modified + added + removed
|
58
60
|
n = c.length
|
59
61
|
|
60
|
-
|
61
|
-
|
62
|
+
unless site.ssr?
|
63
|
+
Bridgetown.logger.info "Regenerating…"
|
64
|
+
Bridgetown.logger.info "", "#{n} file(s) changed at #{t.strftime("%Y-%m-%d %H:%M:%S")}"
|
65
|
+
c.each { |path| Bridgetown.logger.info "", path["#{site.root_dir}/".length..] }
|
66
|
+
end
|
62
67
|
|
63
|
-
c.each { |path| Bridgetown.logger.info "", path["#{site.root_dir}/".length..-1] }
|
64
68
|
process(site, t, options)
|
65
69
|
end
|
66
70
|
end
|
@@ -101,7 +105,7 @@ module Bridgetown
|
|
101
105
|
source = Pathname.new(options["source"]).expand_path
|
102
106
|
paths = to_exclude(options)
|
103
107
|
|
104
|
-
paths.
|
108
|
+
paths.filter_map do |p|
|
105
109
|
absolute_path = Pathname.new(normalize_encoding(p, options["source"].encoding)).expand_path
|
106
110
|
next unless absolute_path.exist?
|
107
111
|
|
@@ -116,20 +120,25 @@ module Bridgetown
|
|
116
120
|
rescue ArgumentError
|
117
121
|
# Could not find a relative path
|
118
122
|
end
|
119
|
-
end
|
123
|
+
end + [%r!^\.bridgetown-metadata!]
|
120
124
|
end
|
121
125
|
|
122
126
|
def sleep_forever
|
123
127
|
loop { sleep 1000 }
|
124
128
|
end
|
125
129
|
|
130
|
+
# @param site [Bridgetown::Site]
|
126
131
|
def process(site, time, options)
|
127
132
|
begin
|
128
133
|
I18n.reload! # make sure any locale files get read again
|
134
|
+
Bridgetown::Current.site = site # needed in SSR mode apparently
|
129
135
|
Bridgetown::Hooks.trigger :site, :pre_reload, site
|
130
136
|
Bridgetown::Hooks.clear_reloadable_hooks
|
131
137
|
site.plugin_manager.reload_plugin_files
|
132
|
-
site.
|
138
|
+
site.loaders_manager.reload_loaders
|
139
|
+
|
140
|
+
return site.ssr_reload if site.ssr?
|
141
|
+
|
133
142
|
site.process
|
134
143
|
Bridgetown.logger.info "Done! 🎉", "#{"Completed".green} in less than" \
|
135
144
|
" #{(Time.now - time).ceil(2)} seconds."
|
@@ -11,11 +11,7 @@ module Bridgetown
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def load(yaml)
|
14
|
-
|
15
|
-
YAML.safe_load yaml, PERMITTED_CLASSES
|
16
|
-
else
|
17
|
-
YAML.safe_load yaml, permitted_classes: PERMITTED_CLASSES
|
18
|
-
end
|
14
|
+
YAML.safe_load yaml, permitted_classes: PERMITTED_CLASSES
|
19
15
|
end
|
20
16
|
end
|
21
17
|
end
|
data/lib/site_template/README.md
CHANGED
@@ -16,7 +16,7 @@ Welcome to your new Bridgetown website! You can update this README file to provi
|
|
16
16
|
- [GCC](https://gcc.gnu.org/install/)
|
17
17
|
- [Make](https://www.gnu.org/software/make/)
|
18
18
|
- [Ruby](https://www.ruby-lang.org/en/downloads/)
|
19
|
-
- `>= 2.
|
19
|
+
- `>= 2.7`
|
20
20
|
- [Bridgetown Gem](https://rubygems.org/gems/bridgetown)
|
21
21
|
- `gem install bridgetown -N`
|
22
22
|
- [Node](https://nodejs.org)
|
data/lib/site_template/Rakefile
CHANGED
@@ -2,6 +2,9 @@ require "bridgetown"
|
|
2
2
|
|
3
3
|
Bridgetown.load_tasks
|
4
4
|
|
5
|
+
# Run rake without specifying any command to execute a deploy build by default.
|
6
|
+
task default: :deploy
|
7
|
+
|
5
8
|
#
|
6
9
|
# Standard set of tasks, which you can customize if you wish:
|
7
10
|
#
|
@@ -44,6 +47,3 @@ end
|
|
44
47
|
# say_status :rake, "I'm a Rake tast =) #{site.config.url}"
|
45
48
|
# end
|
46
49
|
# end
|
47
|
-
|
48
|
-
# Run rake without specifying any command to execute a deploy build by default.
|
49
|
-
task default: :deploy
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bridgetown-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.alpha7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bridgetown Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -390,11 +390,21 @@ files:
|
|
390
390
|
- lib/bridgetown-core/configurations/.keep
|
391
391
|
- lib/bridgetown-core/configurations/bt-postcss.rb
|
392
392
|
- lib/bridgetown-core/configurations/bt-postcss/postcss.config.js
|
393
|
+
- lib/bridgetown-core/configurations/cypress.rb
|
394
|
+
- lib/bridgetown-core/configurations/cypress/cypress.json
|
395
|
+
- lib/bridgetown-core/configurations/cypress/cypress_dir/fixtures/example.json
|
396
|
+
- lib/bridgetown-core/configurations/cypress/cypress_dir/integration/navbar.spec.js
|
397
|
+
- lib/bridgetown-core/configurations/cypress/cypress_dir/plugins/index.js
|
398
|
+
- lib/bridgetown-core/configurations/cypress/cypress_dir/support/commands.js
|
399
|
+
- lib/bridgetown-core/configurations/cypress/cypress_dir/support/index.js
|
400
|
+
- lib/bridgetown-core/configurations/cypress/cypress_tasks
|
393
401
|
- lib/bridgetown-core/configurations/minitesting.rb
|
394
402
|
- lib/bridgetown-core/configurations/netlify.rb
|
395
403
|
- lib/bridgetown-core/configurations/netlify/netlify.sh
|
396
404
|
- lib/bridgetown-core/configurations/netlify/netlify.toml
|
397
405
|
- lib/bridgetown-core/configurations/purgecss.rb
|
406
|
+
- lib/bridgetown-core/configurations/render.rb
|
407
|
+
- lib/bridgetown-core/configurations/render/render.yaml.erb
|
398
408
|
- lib/bridgetown-core/configurations/stimulus.rb
|
399
409
|
- lib/bridgetown-core/configurations/swup.rb
|
400
410
|
- lib/bridgetown-core/configurations/tailwindcss.rb
|
@@ -488,6 +498,7 @@ files:
|
|
488
498
|
- lib/bridgetown-core/utils.rb
|
489
499
|
- lib/bridgetown-core/utils/ansi.rb
|
490
500
|
- lib/bridgetown-core/utils/aux.rb
|
501
|
+
- lib/bridgetown-core/utils/loaders_manager.rb
|
491
502
|
- lib/bridgetown-core/utils/require_gems.rb
|
492
503
|
- lib/bridgetown-core/utils/ruby_exec.rb
|
493
504
|
- lib/bridgetown-core/utils/ruby_front_matter.rb
|
@@ -542,12 +553,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
542
553
|
requirements:
|
543
554
|
- - ">="
|
544
555
|
- !ruby/object:Gem::Version
|
545
|
-
version: 2.
|
556
|
+
version: 2.7.0
|
546
557
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
547
558
|
requirements:
|
548
|
-
- - "
|
559
|
+
- - ">"
|
549
560
|
- !ruby/object:Gem::Version
|
550
|
-
version:
|
561
|
+
version: 1.3.1
|
551
562
|
requirements: []
|
552
563
|
rubygems_version: 3.1.4
|
553
564
|
signing_key:
|