bridgetown-core 1.2.0.beta2 → 1.2.0.beta4

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: 8a6cae1de973325e00001b6c9a9f2a27879d24164727195ae53744dcc10f7f4a
4
- data.tar.gz: 1ee4e7b77a9e25946d9daa7fc7204637559c35691b6f64475245427a49184596
3
+ metadata.gz: '08e8af225c97352ea9bcd919e789a97324fb28e6b2db3c6b48855f9a28cc3174'
4
+ data.tar.gz: 6919f66af92cccfac42de96d715a5607be949d8718cbb1d445525a305fd9c337
5
5
  SHA512:
6
- metadata.gz: bfdaa601767fc44f50c11ebc40008e7b661f9dbae9aa192e3a44fe22e8fbcb5271e8cfd33f414421950eb19de4a7532ae19ffd48a31fde8a9f001385dce2c057
7
- data.tar.gz: 1125afb5db05a07d62d4c656053d6815740aab2ee8b6050b35da33d34961cbfc6a5d970cccf2293690077b847b8c5026c819416a685ee00670fd6cf86b1406a6
6
+ metadata.gz: 6ff56bf0f74c78ca29f34f975ef53b21c3ca909dfd3089a73e83765cd573d9d330c7434f17192088d1ee009e60d39b52312de43758de061139e3f0e606bc9f82
7
+ data.tar.gz: 00ddd1d66a630f5e9ba30d693fc5df8feefaa455343bbb6c13100e87f0428b1ea33d2ff50b160ae1f1857294aebdf594d26111feb815d4f9249d00737c0cfe0e
data/.rubocop.yml CHANGED
@@ -25,7 +25,6 @@ AllCops:
25
25
 
26
26
  Lint/ConstantDefinitionInBlock:
27
27
  Exclude:
28
- - test/test_filters.rb
29
28
  - test/test_liquid_extensions.rb
30
29
  - test/test_site.rb
31
30
 
@@ -271,6 +271,7 @@ module Bridgetown
271
271
  # Read in resource from repo path
272
272
  # @param full_path [String]
273
273
  # @param manifest [Bridgetown::Configuration::SourceManifest]
274
+ # @return [void]
274
275
  def read_resource(full_path, manifest: nil)
275
276
  model_relative_path = relative_model_path_for(full_path, manifest: manifest)
276
277
  model = Bridgetown::Model::Base.find(
@@ -279,14 +280,20 @@ module Bridgetown
279
280
  )
280
281
 
281
282
  if model_is_multi_locale?(model, model_relative_path)
282
- site.config.available_locales.each do |locale|
283
+ # If the model specifies a locales key, use that to determine the
284
+ # the locale of each resource, otherwise fall back to `site.config.available_locales`
285
+ locales = model.locales || site.config.available_locales
286
+
287
+ locales.each do |locale|
283
288
  model.locale = locale
284
289
  add_resource_from_model model
285
290
  end
291
+
286
292
  return
287
293
  end
288
294
 
289
295
  add_resource_from_model model
296
+ nil
290
297
  end
291
298
 
292
299
  # @param model [Bridgetown::Model::Base]
@@ -108,6 +108,8 @@ module Bridgetown
108
108
  end
109
109
  end
110
110
  end
111
+ rescue LoadError
112
+ nil
111
113
  end
112
114
  end
113
115
  end
@@ -52,13 +52,51 @@ module Bridgetown
52
52
  end
53
53
  end
54
54
 
55
- def add_bridgetown_plugin(gemname, version: nil)
56
- version = " -v \"#{version}\"" if version
57
- run "bundle add #{gemname}#{version} -g bridgetown_plugins",
55
+ def add_gem(gemname, group: nil, version: nil)
56
+ options = +""
57
+ options += " -v \"#{version}\"" if version
58
+ options += " -g #{group}" if group
59
+ run "bundle add #{gemname}#{options}",
58
60
  env: { "BUNDLE_GEMFILE" => File.join(destination_root, "Gemfile") }
59
61
  rescue SystemExit
60
62
  say_status :run, "Gem not added due to bundler error", :red
61
63
  end
64
+ alias_method :add_bridgetown_plugin, :add_gem
65
+
66
+ def add_initializer(name, data = "")
67
+ say_status :initializer, name
68
+ data = yield if block_given?
69
+ data = data.indent(2).lstrip
70
+ data = " #{data}" unless data.start_with?(",")
71
+ data += "\n" unless data.chars.last == "\n"
72
+
73
+ init_file = File.join("config", "initializers.rb")
74
+ unless File.exist?(init_file)
75
+ create_file("config/initializers.rb", verbose: true) do
76
+ File.read(File.expand_path("../../../site_template/config/initializers.rb", __dir__))
77
+ end
78
+ end
79
+
80
+ inject_into_file init_file, %( init :"#{name}"#{data}),
81
+ before: %r!^end$!, verbose: false, force: false
82
+ end
83
+
84
+ def ruby_configure(name, data = "")
85
+ say_status :configure, name
86
+ data = yield if block_given?
87
+ data = data.indent(2)
88
+ data += "\n" unless data.chars.last == "\n"
89
+
90
+ init_file = File.join("config", "initializers.rb")
91
+ unless File.exist?(init_file)
92
+ create_file("config/initializers.rb", verbose: true) do
93
+ File.read(File.expand_path("../../../site_template/config/initializers.rb", __dir__))
94
+ end
95
+ end
96
+
97
+ inject_into_file init_file, data,
98
+ before: %r!^end$!, verbose: false, force: false
99
+ end
62
100
 
63
101
  def add_yarn_for_gem(gemname)
64
102
  say_status :add_yarn, gemname
@@ -290,7 +290,7 @@ module.exports = async (outputFolder, esbuildOptions) => {
290
290
  minify: process.argv.includes("--minify"),
291
291
  sourcemap: true,
292
292
  target: "es2016",
293
- entryPoints: ["frontend/javascript/index.js"],
293
+ entryPoints: ["./frontend/javascript/index.js"],
294
294
  entryNames: "[dir]/[name].[hash]",
295
295
  outdir: path.join(process.cwd(), `${outputFolder}/_bridgetown/static`),
296
296
  publicPath: "/_bridgetown/static",
@@ -43,6 +43,7 @@ module Bridgetown
43
43
  "autoload_paths" => [],
44
44
  "eager_load_paths" => [],
45
45
  "autoloader_collapsed_paths" => [],
46
+ "additional_watch_paths" => [],
46
47
  "plugins_use_zeitwerk" => true,
47
48
 
48
49
  # Handling Reading
@@ -147,6 +148,8 @@ module Bridgetown
147
148
  dsl.instance_variable_set(:@context, context)
148
149
  dsl.instance_exec(dsl, &init_init.block)
149
150
 
151
+ setup_load_paths! appending: true
152
+
150
153
  self
151
154
  end
152
155
 
@@ -323,16 +326,18 @@ module Bridgetown
323
326
  self
324
327
  end
325
328
 
326
- def setup_load_paths! # rubocop:todo Metrics
327
- self[:root_dir] = File.expand_path(self[:root_dir])
328
- self[:source] = File.expand_path(self[:source], self[:root_dir])
329
- self[:destination] = File.expand_path(self[:destination], self[:root_dir])
330
-
331
- if self[:plugins_use_zeitwerk]
332
- autoload_paths.unshift({
333
- path: self[:plugins_dir],
334
- eager: true,
335
- })
329
+ def setup_load_paths!(appending: false) # rubocop:todo Metrics
330
+ unless appending
331
+ self[:root_dir] = File.expand_path(self[:root_dir])
332
+ self[:source] = File.expand_path(self[:source], self[:root_dir])
333
+ self[:destination] = File.expand_path(self[:destination], self[:root_dir])
334
+
335
+ if self[:plugins_use_zeitwerk]
336
+ autoload_paths.unshift({
337
+ path: self[:plugins_dir],
338
+ eager: true,
339
+ })
340
+ end
336
341
  end
337
342
 
338
343
  autoload_paths.map! do |load_path|
@@ -349,6 +354,10 @@ module Bridgetown
349
354
  File.expand_path(collapsed_path, root_dir)
350
355
  end
351
356
 
357
+ additional_watch_paths.map! do |collapsed_path|
358
+ File.expand_path(collapsed_path, root_dir)
359
+ end
360
+
352
361
  self
353
362
  end
354
363
 
@@ -11,7 +11,7 @@ unless File.exist?("postcss.config.js")
11
11
  return
12
12
  end
13
13
 
14
- confirm = ask "This configuration will ovewrite your existing #{"postcss.config.js".bold.white}. Would you like to continue? [Yn]"
14
+ confirm = ask "This configuration will overwrite your existing #{"postcss.config.js".bold.white}. Would you like to continue? [Yn]"
15
15
  return unless confirm.casecmp?("Y")
16
16
 
17
17
  plugins = %w(postcss-mixins postcss-color-mod-function cssnano)
@@ -6,7 +6,7 @@ on:
6
6
  - main
7
7
 
8
8
  jobs:
9
- deploy:
9
+ build:
10
10
  runs-on: ubuntu-latest
11
11
  steps:
12
12
  - uses: actions/checkout@v2
@@ -26,10 +26,26 @@ jobs:
26
26
  - name: Build
27
27
  env:
28
28
  BRIDGETOWN_ENV: production
29
- run: bin/bridgetown deploy
29
+ run: bin/bridgetown deploy
30
30
 
31
- - name: Deploy
32
- uses: peaceiris/actions-gh-pages@v3
31
+ - name: Upload build artifact
32
+ uses: actions/upload-pages-artifact@v1
33
33
  with:
34
- github_token: ${{ secrets.GITHUB_TOKEN }}
35
- publish_dir: ./output
34
+ path: ./output
35
+
36
+ deploy:
37
+ needs: build
38
+
39
+ permissions:
40
+ pages: write
41
+ id-token: write
42
+
43
+ environment:
44
+ name: github-pages
45
+ url: ${{ steps.deployment.outputs.page_url }}
46
+
47
+ runs-on: ubuntu-latest
48
+ steps:
49
+ - name: Deploy to GitHub Pages
50
+ id: deployment
51
+ uses: actions/deploy-pages@v1
@@ -7,7 +7,7 @@ copy_file in_templates_dir("gh-pages.yml"), ".github/workflows/gh-pages.yml"
7
7
  say "🎉 A GitHub action to deploy your site to GitHub pages has been configured!"
8
8
  say ""
9
9
 
10
- say "🛠️ After pushing the action, go to your repository settings and configure GitHub Pages to deploy from the branch `gh-pages`."
10
+ say "🛠️ After pushing the action, go to your repository settings and configure GitHub Pages to deploy from GitHub Actions."
11
11
  say ""
12
12
 
13
13
  say "You'll likely also need to set `base_path` in your `bridgetown.config.yml` to your repository's name. If you do this you'll need to use the `relative_url` helper for all links and assets in your HTML."
@@ -3,7 +3,7 @@
3
3
  // any additional configuration to the `plugins` array below.
4
4
 
5
5
  // This plugin will let you import `.lit.css` files as sidecar stylesheets.
6
- // Read https://edge.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
6
+ // Read https://www.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
7
7
  const { litCssPlugin } = require("esbuild-plugin-lit-css")
8
8
  const postcssrc = require("postcss-load-config")
9
9
  const postcss = require("postcss")
@@ -11,9 +11,9 @@ end
11
11
 
12
12
  say_status :lit, "Installing Lit + SSR Plugin..."
13
13
 
14
- add_bridgetown_plugin "bridgetown-lit-renderer", version: "2.0.0.beta3"
14
+ add_gem "bridgetown-lit-renderer"
15
15
 
16
- run "yarn add lit esbuild-plugin-lit-css bridgetown-lit-renderer@2.0.0-beta3"
16
+ run "yarn add lit esbuild-plugin-lit-css bridgetown-lit-renderer"
17
17
 
18
18
  copy_file in_templates_dir("lit-ssr.config.js"), "config/lit-ssr.config.js"
19
19
  copy_file in_templates_dir("lit-components-entry.js"), "config/lit-components-entry.js"
@@ -35,10 +35,10 @@ gsub_file "esbuild.config.js", %r{const esbuildOptions = {}\n} do |_match|
35
35
  const esbuildOptions = {
36
36
  plugins: [...plugins],
37
37
  // Uncomment the following to opt into `.global.css` & `.lit.css` nomenclature.
38
- // Read https://edge.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
38
+ // Read https://www.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
39
39
  /*
40
40
  postCssPluginConfig: {
41
- filter: /(?:index|\.global)\.css$/,
41
+ filter: /(?:index|\\.global)\\.css$/,
42
42
  },
43
43
  */
44
44
  }
@@ -56,10 +56,10 @@ unless found_match
56
56
  //
57
57
  // You might also want to include the following in your esbuild config to opt into
58
58
  // `.global.css` & `.lit.css` nomenclature.
59
- // Read https://edge.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
59
+ // Read https://www.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
60
60
  /*
61
61
  postCssPluginConfig: {
62
- filter: /(?:index|\.global)\.css$/,
62
+ filter: /(?:index|\\.global)\\.css$/,
63
63
  },
64
64
  */
65
65
  JS
@@ -78,10 +78,12 @@ insert_into_file "frontend/javascript/index.js",
78
78
  before: 'import components from "bridgetownComponents/**/*.{js,jsx,js.rb,css}"' do
79
79
  <<~JS
80
80
  // To opt into `.global.css` & `.lit.css` nomenclature, change the `css` extension below to `global.css`.
81
- // Read https://edge.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
81
+ // Read https://www.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
82
82
  JS
83
83
  end
84
84
 
85
+ add_initializer :"bridgetown-lit-renderer"
86
+
85
87
  if found_match
86
88
  say_status :lit, "Lit is now configured!"
87
89
  say_status :lit,
@@ -92,4 +94,4 @@ else
92
94
  end
93
95
 
94
96
  say "Check out the example `happy-days.lit.js` file in `src/_components`", :blue
95
- say 'For further reading, check out "https://edge.bridgetownrb.com/docs/components/lit"', :blue
97
+ say 'For further reading, check out "https://www.bridgetownrb.com/docs/components/lit"', :blue
@@ -36,7 +36,7 @@ append_to_file(File.join(javascript_dir, "index.js")) do
36
36
  Object.entries(controllers).forEach(([filename, controller]) => {
37
37
  if (filename.includes("_controller.") || filename.includes("-controller.")) {
38
38
  const identifier = filename.replace("./controllers/", "")
39
- .replace(/[_\-]controller\..*$/, "")
39
+ .replace(/[_-]controller\\..*$/, "")
40
40
  .replace("_", "-")
41
41
  .replace("/", "--")
42
42
 
@@ -48,7 +48,7 @@ append_to_file(File.join(javascript_dir, "index.js")) do
48
48
  <<~JS
49
49
 
50
50
  window.Stimulus = Application.start()
51
- const context = require.context("./controllers", true, /\.js$/)
51
+ const context = require.context("./controllers", true, /\\.js$/)
52
52
  Stimulus.load(definitionsFromContext(context))
53
53
  JS
54
54
  end
@@ -1,77 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # rubocop:disable all
4
-
5
- unless File.exist?("postcss.config.js")
6
- error_message = "#{"postcss.config.js".bold} not found. Please configure postcss in your project."
7
-
8
- @logger.error "\nError:".red, "🚨 #{error_message}"
9
- @logger.info "\nRun #{"bridgetown webpack enable-postcss".bold.blue} to set it up.\n"
10
-
11
- return
12
- end
13
-
14
- say_status :tailwind, "Installing Tailwind CSS..."
15
-
16
- confirm = ask "This configuration will ovewrite your existing #{"postcss.config.js".bold.white}. Would you like to continue? [Yn]"
17
- return unless confirm.casecmp?("Y")
18
-
19
- run "yarn add -D tailwindcss"
20
- run "npx tailwindcss init"
21
-
22
- gsub_file "tailwind.config.js", "content: [],", <<~JS.strip
23
- content: [
24
- './src/**/*.{html,md,liquid,erb,serb,rb}',
25
- './frontend/javascript/**/*.js',
26
- ],
27
- JS
28
-
29
- copy_file in_templates_dir("postcss.config.js"), "postcss.config.js", force: true
30
-
31
- if File.exist?("frontend/styles/index.css")
32
- prepend_to_file "frontend/styles/index.css",
33
- File.read(in_templates_dir("css_imports.css"))
34
- else
35
- say "\nPlease add the following lines to your CSS index file:"
36
- say File.read(in_templates_dir("/css_imports.css"))
37
- end
38
-
39
- create_file "frontend/styles/jit-refresh.css", "/* #{Time.now.to_i} */"
40
-
41
- insert_into_file "Rakefile",
42
- after: %r{ task :(build|dev) do\n} do
43
- <<-JS
44
- sh "touch frontend/styles/jit-refresh.css"
45
- JS
46
- end
47
-
48
- if File.exist?(".gitignore")
49
- append_to_file ".gitignore" do
50
- <<~FILES
51
-
52
- frontend/styles/jit-refresh.css
53
- FILES
54
- end
55
- end
56
-
57
- create_builder "tailwind_jit.rb" do
58
- <<~RUBY
59
- class Builders::TailwindJit < SiteBuilder
60
- def build
61
- hook :site, :pre_reload do |_, paths|
62
- # Don't trigger refresh if it's a frontend-only change
63
- next if paths.length == 1 && paths.first.ends_with?("manifest.json")
64
-
65
- # Save out a comment file to trigger Tailwind's JIT
66
- refresh_file = site.in_root_dir("frontend", "styles", "jit-refresh.css")
67
- File.write refresh_file, "/* \#{Time.now.to_i} */"
68
- throw :halt # don't continue the build, wait for watcher rebuild
69
- end
70
- end
71
- end
72
- RUBY
73
- end
74
-
75
- say_status :tailwind, "Tailwind CSS is now configured."
76
-
77
- # rubocop:enable all
3
+ say_status :tailwind, "The Tailwind CSS automation now lives in its own community-maintained repo:"
4
+ say "https://github.com/bridgetownrb/tailwindcss-automation"
5
+ say ""
6
+ say "Tailwind CSS not installed."
@@ -184,7 +184,7 @@ module Bridgetown
184
184
  if block_given?
185
185
  self[key] = yield key, self[key], other[key]
186
186
  else
187
- if Utils.mergable?(self[key]) && Utils.mergable?(other[key])
187
+ if Utils.mergeable?(self[key]) && Utils.mergeable?(other[key])
188
188
  self[key] = Utils.deep_merge_hashes(self[key], other[key])
189
189
  next
190
190
  end
@@ -63,7 +63,7 @@ module Bridgetown
63
63
  return safe(relative_path.relative_url) # new resource engine
64
64
  elsif relative_path.respond_to?(:url)
65
65
  return safe(relative_url(relative_path.url)) # old legacy engine
66
- elsif relative_path.to_s.start_with?("/", "http")
66
+ elsif relative_path.to_s.start_with?("/", "http", "#", "mailto:", "tel:")
67
67
  return safe(relative_path)
68
68
  end
69
69
 
@@ -97,7 +97,13 @@ module Bridgetown
97
97
  # @param options [Hash] key-value pairs of HTML attributes to add to the tag
98
98
  # @return [String] the anchor tag HTML
99
99
  # @raise [ArgumentError] if the file cannot be found
100
- def link_to(text, relative_path, options = {})
100
+ def link_to(text, relative_path = nil, options = {})
101
+ if block_given?
102
+ relative_path = text
103
+ text = yield
104
+ elsif relative_path.nil?
105
+ raise ArgumentError, "You must provide a relative path"
106
+ end
101
107
  segments = attributes_from_options({ href: url_for(relative_path) }.merge(options))
102
108
 
103
109
  safe("<a #{segments}>#{text}</a>")
@@ -111,7 +111,7 @@ module Bridgetown
111
111
  collection.data?
112
112
  end
113
113
 
114
- def read_file_data # rubocop:todo Metrics/MethodLength
114
+ def read_file_data # rubocop:todo Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/AbcSize
115
115
  case original_path.extname.downcase
116
116
  when ".csv"
117
117
  {
@@ -130,6 +130,9 @@ module Bridgetown
130
130
  }
131
131
  when ".rb"
132
132
  process_ruby_data(File.read(original_path), original_path, 1)
133
+ when ".json"
134
+ json_data = JSON.parse(File.read(original_path))
135
+ json_data.is_a?(Array) ? { rows: json_data } : json_data
133
136
  else
134
137
  yaml_data = YAMLParser.load_file(original_path)
135
138
  yaml_data.is_a?(Array) ? { rows: yaml_data } : yaml_data
@@ -47,6 +47,8 @@ module Bridgetown
47
47
 
48
48
  SiteContext = Struct.new(:registers) # for use by Liquid-esque URL helpers
49
49
 
50
+ plugin :method_override
51
+ plugin :all_verbs
50
52
  plugin :hooks
51
53
  plugin :common_logger, Bridgetown::Rack::Logger.new($stdout), method: :info
52
54
  plugin :json
@@ -11,7 +11,7 @@ namespace :frontend do
11
11
  task :watcher, :sidecar do |_task, args|
12
12
  # sidecar is when the task is running alongside the start command
13
13
  sidecar = args[:sidecar] == true
14
- Bridgetown::Utils::Aux.run_process "Frontend", :yellow, "bundle exec bridgetown frontend:dev"
14
+ Bridgetown::Utils::Aux.run_process "Frontend", :yellow, "bridgetown frontend:dev"
15
15
 
16
16
  if sidecar
17
17
  # give FE bundler time to boot before returning control to the start command
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Bridgetown
4
4
  module Utils # rubocop:todo Metrics/ModuleLength
5
+ extend Gem::Deprecate
5
6
  extend self
6
7
  autoload :Ansi, "bridgetown-core/utils/ansi"
7
8
  autoload :Aux, "bridgetown-core/utils/aux"
@@ -62,9 +63,11 @@ module Bridgetown
62
63
  target
63
64
  end
64
65
 
65
- def mergable?(value)
66
+ def mergeable?(value)
66
67
  value.is_a?(Hash) || value.is_a?(Drops::Drop)
67
68
  end
69
+ alias_method :mergable?, :mergeable?
70
+ deprecate :mergable?, :mergeable?, 2023, 7
68
71
 
69
72
  def duplicable?(obj)
70
73
  case obj
@@ -449,10 +452,10 @@ module Bridgetown
449
452
  def default_github_branch_name(repo_url)
450
453
  repo_match = Bridgetown::Commands::Actions::GITHUB_REPO_REGEX.match(repo_url)
451
454
  api_endpoint = "https://api.github.com/repos/#{repo_match[1]}"
452
- JSON.parse(Faraday.get(api_endpoint).body)["default_branch"] || "master"
455
+ JSON.parse(Faraday.get(api_endpoint).body)["default_branch"] || "main"
453
456
  rescue StandardError => e
454
457
  Bridgetown.logger.warn("Unable to connect to GitHub API: #{e.message}")
455
- "master"
458
+ "main"
456
459
  end
457
460
 
458
461
  def live_reload_js(site) # rubocop:disable Metrics/MethodLength
@@ -508,7 +511,7 @@ module Bridgetown
508
511
  target.merge!(overwrite) do |_key, old_val, new_val|
509
512
  if new_val.nil?
510
513
  old_val
511
- elsif mergable?(old_val) && mergable?(new_val)
514
+ elsif mergeable?(old_val) && mergeable?(new_val)
512
515
  deep_merge_hashes(old_val, new_val)
513
516
  else
514
517
  new_val
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bridgetown
4
- VERSION = "1.2.0.beta2"
4
+ VERSION = "1.2.0.beta4"
5
5
  CODE_NAME = "Bonny Slope"
6
6
  end
@@ -42,7 +42,12 @@ module Bridgetown
42
42
  #
43
43
  # @param (see #watch)
44
44
  def load_paths_to_watch(site, options)
45
- (site.plugin_manager.plugins_path + options.autoload_paths).uniq.select do |path|
45
+ additional_paths = options.additional_watch_paths
46
+ [
47
+ *site.plugin_manager.plugins_path,
48
+ *options.autoload_paths,
49
+ *additional_paths,
50
+ ].uniq.select do |path|
46
51
  Dir.exist?(path)
47
52
  end
48
53
  end
@@ -136,7 +136,7 @@ module Bridgetown
136
136
  alias_method :env, :environment
137
137
 
138
138
  def begin!
139
- ENV["RACK_ENV"] = ENV["BRIDGETOWN_ENV"]
139
+ ENV["RACK_ENV"] ||= environment
140
140
 
141
141
  Bridgetown::Current.preloaded_configuration = Bridgetown::Configuration::Preflight.new
142
142
  Bridgetown::PluginManager.setup_bundler
@@ -230,11 +230,13 @@ module Bridgetown
230
230
 
231
231
  def load_tasks
232
232
  require "bridgetown-core/commands/base"
233
+ unless Bridgetown::Current.preloaded_configuration
234
+ Bridgetown::Current.preloaded_configuration = Bridgetown::Configuration::Preflight.new
235
+ end
233
236
  Bridgetown::PluginManager.setup_bundler(skip_yarn: true)
237
+
234
238
  if Bridgetown::Current.preloaded_configuration.is_a?(Bridgetown::Configuration::Preflight)
235
239
  Bridgetown::Current.preloaded_configuration = Bridgetown.configuration
236
- else
237
- Bridgetown::Current.preloaded_configuration ||= Bridgetown.configuration
238
240
  end
239
241
  load File.expand_path("bridgetown-core/tasks/bridgetown_tasks.rake", __dir__)
240
242
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Roda
4
+ module RodaPlugins
5
+ # This is a simplified Roda plugin version of the Rack middleware:
6
+ # https://github.com/rack/rack/blob/v2.2.2/lib/rack/method_override.rb
7
+ module MethodOverride
8
+ def self.configure(app, opts = {})
9
+ app.opts[:method_override_param] = opts[:method_override_param] || "_method"
10
+ end
11
+
12
+ module RequestMethods
13
+ HTTP_METHODS = %w(GET HEAD PUT POST DELETE OPTIONS PATCH LINK UNLINK).freeze
14
+ HTTP_METHOD_OVERRIDE_HEADER = "HTTP_X_HTTP_METHOD_OVERRIDE"
15
+ ALLOWED_METHODS = %w(POST).freeze
16
+
17
+ def initialize(scope, env)
18
+ super
19
+ return unless _allowed_methods.include?(env[Rack::REQUEST_METHOD])
20
+
21
+ method = _method_override(env)
22
+ return unless HTTP_METHODS.include?(method)
23
+
24
+ env[Rack::RACK_METHODOVERRIDE_ORIGINAL_METHOD] = env[Rack::REQUEST_METHOD]
25
+ env[Rack::REQUEST_METHOD] = method
26
+ end
27
+
28
+ private
29
+
30
+ def _method_override(env)
31
+ method = _method_override_param ||
32
+ env[HTTP_METHOD_OVERRIDE_HEADER]
33
+ method.to_s.upcase
34
+ end
35
+
36
+ def _allowed_methods
37
+ ALLOWED_METHODS
38
+ end
39
+
40
+ def _method_override_param
41
+ params[scope.class.opts[:method_override_param]]
42
+ end
43
+ end
44
+ end
45
+
46
+ register_plugin :method_override, MethodOverride
47
+ end
48
+ end
@@ -39,5 +39,5 @@ Bridgetown.configure do |config|
39
39
  #
40
40
 
41
41
  # For more documentation on how to configure your site using this initializers file,
42
- # visit: https://edge.bridgetownrb.com/documentation/configuration/initializers/
42
+ # visit: https://edge.bridgetownrb.com/docs/configuration/initializers/
43
43
  end
@@ -15,7 +15,7 @@
15
15
  <%- if frontend_bundling_option == "webpack" -%>
16
16
  "css-loader": "^6.7.1",
17
17
  <%- end -%>
18
- "esbuild": "^0.14.39",
18
+ "esbuild": "^0.15.12",
19
19
  <%- if frontend_bundling_option == "webpack" -%>
20
20
  "esbuild-loader": "^2.18.0",
21
21
  "mini-css-extract-plugin": "^2.6.0",
@@ -31,7 +31,10 @@
31
31
  <%- else -%>
32
32
  "postcss-loader": "^6.2.1",
33
33
  <%- end -%>
34
- "postcss-preset-env": "^7.4.3"<%= "," if frontend_bundling_option == "webpack" || !postcss_option %>
34
+ "postcss-preset-env": "^7.4.3",
35
+ <%- if frontend_bundling_option == "esbuild" -%>
36
+ "read-cache": "^1.0.0"<%= "," unless postcss_option %>
37
+ <%- end -%>
35
38
  <%- end -%>
36
39
  <%- unless postcss_option -%>
37
40
  "sass": "^1.50.1",
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.2.0.beta2
4
+ version: 1.2.0.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bridgetown Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-08 00:00:00.000000000 Z
11
+ date: 2022-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -441,8 +441,6 @@ files:
441
441
  - lib/bridgetown-core/configurations/shoelace.rb
442
442
  - lib/bridgetown-core/configurations/stimulus.rb
443
443
  - lib/bridgetown-core/configurations/tailwindcss.rb
444
- - lib/bridgetown-core/configurations/tailwindcss/css_imports.css
445
- - lib/bridgetown-core/configurations/tailwindcss/postcss.config.js
446
444
  - lib/bridgetown-core/configurations/turbo.rb
447
445
  - lib/bridgetown-core/configurations/turbo/turbo_transitions.js
448
446
  - lib/bridgetown-core/configurations/vercel.rb
@@ -548,6 +546,7 @@ files:
548
546
  - lib/roda/plugins/bridgetown_boot.rb
549
547
  - lib/roda/plugins/bridgetown_ssr.rb
550
548
  - lib/roda/plugins/initializers.rb
549
+ - lib/roda/plugins/method_override.rb
551
550
  - lib/site_template/.gitignore
552
551
  - lib/site_template/Gemfile.erb
553
552
  - lib/site_template/README.md
@@ -1,9 +0,0 @@
1
- /* If you need to add @import statements, do so up here */
2
-
3
- @import "jit-refresh.css"; /* triggers frontend rebuilds */
4
-
5
- /* Set up Tailwind imports */
6
- @tailwind base;
7
- @tailwind components;
8
- @tailwind utilities;
9
-
@@ -1,12 +0,0 @@
1
- module.exports = {
2
- plugins: {
3
- 'tailwindcss': {},
4
- 'postcss-flexbugs-fixes': {},
5
- 'postcss-preset-env': {
6
- autoprefixer: {
7
- flexbox: 'no-2009'
8
- },
9
- stage: 2
10
- }
11
- }
12
- }